当前位置: 首页 > news >正文

NOIP2007年复赛

P1093 [NOIP2007 普及组] 奖学金

题目描述

思路:

可以用一个结构体进行排序得到答案

Code 

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int n;
struct node{int id , yu , shu , ying , ans; 
};
node v[335];bool cmp(node a , node b){if(a.ans == b.ans){if(a.yu == b.yu){return a.id < b.id;}else{return a.yu > b.yu;}}else{return a.ans > b.ans;}
}int main(){cin >> n;for(int i = 1; i <= n; i ++){cin >> v[i].yu >> v[i].shu >> v[i].ying;v[i].id = i;v[i].ans = v[i].ying + v[i].shu + v[i].yu;}sort(v + 1 , v + 1 + n , cmp);for(int i = 1; i <= 5; i ++){
//		cout << v[i].id << " " << v[i].ans << " : " << v[i].yu << " , " << v[i].shu << " , " << v[i].ying << endl;cout << v[i].id << " " << v[i].ans << endl;}return 0;
}

P1094 [NOIP2007 普及组] 纪念品分组

题目描述

思路:

用上指针进行遍历解答

Code 

#include<iostream>
#include<algorithm>
#include<climits>
using namespace std;
int w , n , sum;
int a[102457] , v[102457];bool cmp(int a , int b){return a > b;
}int main(){cin >> w >> n;for(int i = 1; i <= n; i ++)cin >> a[i];sort(a + 1 , a + 1 + n , cmp);//	for(int i = 1; i <= n; i ++) cout << a[i] << " ";int i = 1 , j = n;while(i <= j){if(i != j && a[i] + a[j] <= w){i ++ , j --;sum ++;}else{i ++ , sum ++;}}cout << sum << endl;return 0;
}

P1095 [NOIP2007 普及组] 守望者的逃离

题目描述

思路:

用DP的思路进行计算得到答案后,再进行比较

Code 

#include<iostream>
using namespace std;
int m , s , t;
int dp[111010101];
int main(){cin >> m >> s >> t;for(int i = 1; i <= t; i ++){if(m >= 10){dp[i] = dp[i - 1] + 60;m -= 10;}else{m += 4;dp[i] = dp[i - 1];}}for(int i = 1; i <= t; i ++){if(dp[i] < dp[i - 1] + 17) dp[i] = dp[i - 1] + 17;if(dp[i] >= s){cout << "Yes" << endl << i << endl;exit(0);}}cout << "No" << endl << dp[t] << endl;return 0;
}

P1096 [NOIP2007 普及组] Hanoi 双塔问题

题目描述

思路:

此题较难,我们可以先用一个六十分的代码来寻找一下规律。

 60Code

#include<iostream>
#include<cmath>
using namespace std;
int n;
long long hanruota[205] = {0 , 1 , 3};void fib(){for(int i = 3; i <= 200; i ++){hanruota[i] = hanruota[i - 1] + pow(2 , i - 1);}
}int main(){cin >> n;fib();cout << hanruota[n] * 2;return 0;
}
// 有n个盘子

通过这个代码。嗯,可以找到一个规律就是:F(n) = 2 * F(n - 1) + 2 ,最后得到答案。

 100Code

#include<iostream>
using namespace std;
int n;
int a[250];
int main(){cin >> n;a[0] = 2;for(int i = 2; i <= n; i ++){a[0] += 1;for(int j = 0; j < 200; j ++)a[j] *= 2;for(int j = 0; j < 200; j ++){a[j + 1] += a[j] / 10;a[j] %= 10;}}int p = 200;while(a[p] == 0) p --;for(int i = p; i >= 0; i --) cout << a[i];return 0;
} 

创作不易,点赞收藏,谢谢

如果有错请指出谢谢给位dalao


http://www.mrgr.cn/news/53908.html

相关文章:

  • EasyExcel填充模板导出excel.xlsx
  • Javascript链表模拟
  • Code Review Item
  • SpringCloud-OpenFeign-服务接口调用
  • 接口测试-接口支持幂等
  • 碰到这个问题请更新或重新安装fastapi版本
  • 【北京迅为】《STM32MP157开发板嵌入式开发指南》- 第五十四章 Pinctrl 子系统和 GPIO 子系统
  • D-PAD论文解析
  • 虚拟机nacos部署报错数据源未设置问题解决方案
  • 逻辑之舞:C++ 内存分配与释放,在程序的舞台上,演绎着资源的分配与回收
  • 解决SolidWorks装配体无法更改透明度问题
  • 【数据结构】栈
  • 数仓建设:如何设计数据治理考评规则?
  • 类和对象(中)后面部分
  • 【note】GNN
  • Dropout为何能防止过拟合?dropout和BN 在前向传播和方向传播阶段的区别?
  • 「图::连通」详解并查集并实现对应的功能 / 手撕数据结构(C++)
  • 挑战自闭症儿童康复:探索有效治疗方法
  • C#从零开始学习(类型和引用)(4)
  • 解锁C++多态的魔力:灵活与高效的编码艺术(下)
  • 每日一题——第一百一十七题
  • 【部署篇】rabbitmq-01介绍
  • 【openGauss】OPENGAUSS/POSTGRESQL 中float类型到int类型的隐式转换
  • 直播带货APP开发指南:基于多商户商城系统源码的方案实战
  • vscode 预览markdown 文件
  • 竹壳天气时钟(三)TFT屏幕显示中文