签订协议

这是牛客IOI周赛22-普及组的一道题
原题链接:

https://ac.nowcoder.com/acm/contest/11038/B

这是我比赛期间唯一会做的一道题,并且当我a完这题的时候大佬都将4道题a完了。这狠是打击我,但是还好没爆零。好了废话不多说,先上题解。

#include<bits/stdc++.h>
using namespace std;
struct nation{
    int v,id;
    bool operator<(const nation & m)const{return v<m.v;}
}na[800520];
int n;
int main(void){
    cin>>n;
    for(int i=1;i<=n;++i){
        cin>>na[i].v;
        na[i].id=i;
    }
    sort(na+1,na+1+n);
    int ans=1;
    for(int i=n-1;i>=1;i--){
        if(na[i].id<na[i+1].id)ans++;
    }
    cout<<ans<<endl;
    return 0;
}

这道题的难度并不大,并且要会的东西也不多–只有俩项
sort函数和结构体;
先说结构体的用法:
1先声明后定义

struct 结构体名
{
    成员列表
}//最后的分号不可丢
struct 结构体名 变量名;

//2声明与定义同时进行

struct student
{
    int num;
    char name[20];
    int age;
    char sex;
    float score;
}stu1,stu2;

要用结构体也是因为这题有俩个相关联的数:我们给每个国家两个属性,一个是战斗力大小,一个是位置序号

struct nation{
    int v,id;
    bool operator<(const nation & m)const{return v<m.v;}
}na[800520];

接下来就是sort函数了
sort有三个参数,第三个参数不写时,默认按照升序排列,如果想按降序排序,需要我们写一个返回值为布尔类型的排序函数
第一个参数:数组名,也就是数组首地址
第二个参数:一般形式为“数组名+n”,其中n是从数组首地址开始,排序的数字元素的个数
sort的前两个参数相当于是确定一个你想要排序的元素的地址所在的区间
排序的最后一个元素的地址,而是进行排序的最后一个元素的后一个元素的地址
要用sort需要头文件: #include<algorithm>

重点我发现一个c++的宝藏头文件:#include<bits/stdc++.h>
这个头文件包含c++中大部分头文件,我们就不用记其他的头文件了

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值