问题 C: 心急的C小加 时间限制: 1 Sec 内存限制: 128 MB 提交: 21 解决: 3 [提交][状态][讨论版] 题目描述 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 提示 数据多组输入
发现了一个令人沉醉的问题 尼玛总是忘了 + return
fuck 错了好几次 愣是没发现. 下面附上代码. 还有这一道题应该改成 大于等于 才能对应着 输入输出数据
1 #include<stdio.h> 2 #include<algorithm> 3 struct boom 4 { 5 int weight,hight; 6 }; 7 using namespace std; 8 boom a[5050]; 9 bool cmp(boom a,boom b) //从小到大 排序 10 { 11 if(a.weight<b.weight) 12 return true; 13 if(a.weight==b.weight&&a.hight<b.hight) 14 return true; 15 else 16 return false; 17 } 18 int main() 19 { 20 int t,n,i,j,m; 21 scanf("%d",&t); 22 while(t--) 23 { 24 scanf("%d",&n); 25 for(i=0;i<n;i++) 26 scanf("%d%d",&a[i].weight,&a[i].hight); 27 sort(a,a+n,cmp); 28 int q,sum=0; 29 for(i=0;i<n;i++) //重量已经有了顺序 30 { 31 if(a[i].hight!=0) // 如果 这个 木棒 没有被标记的话 32 { 33 sum++; // +1 34 q=a[i].hight; //赋予临时变量 35 for(j=i+1;j<n;j++) // 看下一个 36 { 37 if(a[j].hight>=q) //下一个 大于等于的话 38 { 39 q=a[j].hight; //更新 临时变量 40 a[j].hight=0; // 并且标记 41 } 42 } 43 } 44 } 45 printf("%d ",sum); 46 } 47 return 0; 48 }