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;//好习惯
}