nyoj 236 心急的C小加
2015-10-19 21:55
246 查看
心急的C小加
时间限制:1000 ms | 内存限制:65535 KB难度:4
描述
C小加有一些木棒,它们的长度和质量都已经知道,需要一个机器处理这些木棒,机器开启的时候需要耗费一个单位的时间,如果第i+1个木棒的重量和长度都大于等于第i个处理的木棒,那么将不会耗费时间,否则需要消耗一个单位的时间。因为急着去约会,C小加想在最短的时间内把木棒处理完,你能告诉他应该怎样做吗?
输入第一行是一个整数T(1<T<1500),表示输入数据一共有T组。
每组测试数据的第一行是一个整数N(1<=N<=5000),表示有N个木棒。接下来的一行分别输入N个木棒的L,W(0 < L ,W <= 10000),用一个空格隔开,分别表示木棒的长度和质量。
输出处理这些木棒的最短时间。
样例输入
3 5 4 9 5 2 2 1 3 5 1 4 3 2 2 1 1 2 2 3 1 3 2 2 3 1
样例输出
2 1 3
题目有问题!
我仅仅按照长度排序就过了!
#include<cstdio> #include<algorithm> using namespace std; struct cxj { int a; //a为长度,b为质量 int b; int vis; }e[5010]; int cmp(cxj x,cxj y) { if(x.b!=y.b) return x.b<y.b; else return x.a<y.a; } int main() { int T,n,i,j,t,sum,s; scanf("%d",&T); while(T--) { s=0; scanf("%d",&n); for(i=0; i<n; i++) { scanf("%d %d",&e[i].a,&e[i].b); e[i].vis=1; } sort(e,e+n,cmp); for(i=0; i<n; i++) { t=e[i].a; if(e[i].vis==0) continue; for(j=i+1; j<n; j++) { if(e[j].vis&&t<=e[j].a) { e[j].vis=0; t=e[j].a; } } s++; //进行多少次循环,就是花了多少分钟 } printf("%d\n",s); } return 0; }
相关文章推荐
- 贪心算法的C语言实现与运用详解
- 贪心算法 WOODEN STICKS 实例代码
- 浅析java贪心算法
- c语言来实现贪心算法之装箱问题
- 贪心算法
- 贪心算法——找纸币问题
- ACM常用算法
- 喷水装置
- 过河问题
- HDU 1009
- TOJ 2882
- 【贪心】今年暑假不AC
- 【贪心】FatMouse' Trade
- 背包问题knapsack的三种解法(Python 和 C)
- 背包问题knapsack的三种解法(Python 和 C)
- LeetCode之Jump Game
- 九度OJ 题目1082:代理服务器
- usaco 1.3.2 Barn Repair
- POJ 1328.Radar Installation
- 贪心算法步骤