P5412:
这道题很简单,基本思路为,把输入的数据,分成两种(一种为男生)(一种为女生),之后分别排序。
注意事项:1.保留小数点过后一位。
2.注意输入方式与顺序。
3.审题。
不废话,上代码。
#include <bits/stdc++.h> //万能头文件 using namespace std; int main() { int t; cin>>t;//数据组数 for(int i=1;i<=t;i++) { int n; cin>>n; int a[n+15],jsq=0,jsq1=0;//计数器一定要清零 float b[n+15],d[n+15],c[n+15];//浮点类型 for(int j=1;j<=n;j++) cin>>a[j]; //先输入性别 for(int j=1;j<=n;j++) cin>>b[j]; //后输入身高 for(int j=1;j<=n;j++) { if(a[j]==0)//判断男女 { jsq++;//统计女生人数 c[jsq]=b[j];//存到一个单独的数组里 } //分类 if(a[j]==1)//判断男女 { jsq1++;//统计男生人数 d[jsq1]=b[j];//存到一个单独的数组里 } } sort(c+1,c+jsq+1);//STL真好 sort(d+1,d+jsq1+1);//algorithm里的快速排序 for(int j=1;j<=jsq;j++) cout<<c[j]<<" "; cout<<endl; //分男女输出(先女生) for(int j=1;j<=jsq1;j++) cout<<d[j]<<" "; cout<<endl;(后男生) //分男女输出 } return 0; //好习惯 }
珍惜账号,远离抄袭!
SP34013 :
本题思路:
第一步:按方法法输入
第二部(最重要的一步):(因为要求最小的)所以每次都要取最大的石头。
第三部:判断,如果溢出就输出计数器(注意换行)。
#include <bits/stdc++.h> //万能头文件 using namespace std; int main() { int t;//数据组数 cin>>t; int a,b,c,d,e,f[1005];//分别为长宽高以及现在水的高度的高度和石头的个数 for(int i=1;i<=t;i++) { cin>>a>>b>>c>>d>>e;//每次更新ABCDE的值(不需要数组输入) for(int j=1;j<=e;j++) cin>>f[j]; //按要求输入 sort(f+1,f+e+1) //排序; int sum=0,jsq=0;//一定要赋初值 for(int j=e;j>=1;j--) { sum+=f[j]; //每次取最大的石头 jsq++; //每次加一 if(sum>c-d) { //判断是否会溢出 cout<<jsq<<endl;//输出 break;//跳出循环 } } } return 0;//好习惯 }