hdu_2124 Flying to the Mars & hdu_1800 Repair the Wall 贪心水题
Posted dawn-bin
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hdu_2124 Flying to the Mars & hdu_1800 Repair the Wall 贪心水题相关的知识,希望对你有一定的参考价值。
hdu_1800
简单排一下序,从大开始把比他小的都访问一遍,ans++;
#include <iostream> #include <stdio.h> #include <algorithm> using namespace std; struct dat { int level; int visit; }data[3200]; bool cmp(dat a, dat b) { return a.level > b.level; } int main() { int n; while(scanf("%d", &n)!=-1) { for(int i=0; i<n; i++) { scanf("%d", &data[i].level); data[i].visit=0; } sort(data, data+n, cmp); int ans=0; for(int i=0; i<n; i++) { if(!data[i].visit) { data[i].visit=1; int temp=i; ans++; for(int j=0; j<n; j++) { if(!data[j].visit && data[temp].level>data[j].level) { data[j].visit=1; temp=j; } } } } printf("%d\n", ans); } return 0; }
hdu_2124
排个序,用 l 从大开始减去block的大小,记录用的block块数, 最后 l > 0 , 则输出impossible,否则输出块数。
#include <iostream> #include <stdio.h> #include <algorithm> using namespace std; bool cmp(int a, int b) { return a>b; } int main() { int l, n, block[1000]; while(scanf("%d%d", &l, &n)!=-1) { for(int i=0; i<n; i++) { scanf("%d", &block[i]); } sort(block, block+n, cmp); int ans=0; for(int i=0; i<n && l!=0; i++) { if(l>=block[i]) { l-=block[i]; ans++; } else { l=0; ans++; break; } } if(l!=0) printf("impossible\n"); else printf("%d\n", ans); } return 0; }
以上是关于hdu_2124 Flying to the Mars & hdu_1800 Repair the Wall 贪心水题的主要内容,如果未能解决你的问题,请参考以下文章
hdu1800 Flying to the Mars(字典树)
HDU1800Flying to the Mars(字典树)
HDU 1800——Flying to the Mars——————字符串哈希
Flying to the Mars HDU - 1800(字典树)