[DP]0817-08基础DP
2015-08-18 16:46
274 查看
Ignatius and the Princess IV
最少拦截系统
Monkey and Banana
HDU 1029
HDU 1257
对于每一个拦截系统,从第一个导弹开始,如果不能拦截(上一个拦截的高度低于这一个)就开一个新的系统。cnt记录系统个数。
不知道N的最大值,随手开了个一千万,结果MLE,改成一百万就过了。
HDU 1069
最少拦截系统
Monkey and Banana
HDU 1029
Ignatius and the Princess IV
大意是要找到n个数中出现次数超过(n+1)/2的数,读入一遍输出最大数就可以了,复杂度最小为o(n)。[code]#include <bits/stdc++.h> int a[1000000]; int main() { int n,ans,maxn,maxa; while(scanf("%d", &n) != EOF) { memset(a, 0, sizeof(a)); maxn = 0; for(int i = 0; i < n; i++) { scanf("%d", &ans); a[ans]++; if(a[ans] > maxn) { maxn = a[ans]; maxa = ans; } } printf("%d\n", maxa); } }
HDU 1257
最少拦截系统
这道题好像在哪做过 应该是XDU的比赛什么的对于每一个拦截系统,从第一个导弹开始,如果不能拦截(上一个拦截的高度低于这一个)就开一个新的系统。cnt记录系统个数。
不知道N的最大值,随手开了个一千万,结果MLE,改成一百万就过了。
[code]#include<bits/stdc++.h> #define INF 1000000 using namespace std; int a[1000000]; int main() { //freopen("in.txt","r",stdin); int n; while(scanf("%d", &n) != EOF) { memset(a, 0, sizeof(a)); for(int i = 0; i < n; i++) { scanf("%d", &a[i]); } int cnt = 0, maxn = INF; for(int j = 0; j < n; j++) { for(int i = 0; i < n; i++) { if(a[i] <= maxn && a[i]) { maxn = a[i]; a[i] = 0; //printf("j=%d&&i=%d&&%d\n", j, i, maxn); } } if(maxn == INF) break; maxn = INF; cnt++; } printf("%d\n", cnt); } }
HDU 1069
Monkey and Banana
相关文章推荐
- hdoj 1596 find the safest road
- Android Fragment 真正的完全解析(下)
- 杭电 2680 Choose the best route(dijkstra)
- Java连接池
- TCP/IP体系结构简介
- PLSQL配置数据库的方式
- 微信公众号开发之微信支付
- 2015年邮件营销人员最值得关注的10个焦点
- 黑马程序员_TCPUDP
- Load Asset Bundle in Editor
- select2组件
- C++函数调用详解
- C++函数调用详解
- C++函数调用详解
- C++函数调用详解
- C++函数调用详解
- C++函数调用详解
- C++函数调用详解
- C++函数调用详解
- c语言中static、external、const关键字理解