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;//好习惯
} 
京公网安备 11010502036488号