P7874「SWTR-07」My rating is -32(easy version)题解

Cai_LJiu

2021-09-24 18:59:13

Solution

### 题目解析: 小A有k个号要发贴,总共n条帖子,不能把连续的两条帖子发在同一个号上 要求每个号发的第一条的安全指数相加最高 --- ### 思路: 先把前两条发出去,然后找到剩下的前k-2大的帖子相加就可以 因为剩下的如果是在前k大的里面,就可以拿别的号发,不是的话就用前两个号发 因为这题输入比较大,所以用上快读 --- AC代码: ```c #include<bits/stdc++.h> #define LL long long #define LD long double #define rep(a,b,c) for(int a=b;a<=c;++a) inline int read() //快读模板 { int num=0; char ch=getchar(); while(ch<'0'||ch>'9') ch=getchar(); while(ch>='0'&&ch<='9') { num=(num<<1)+(num<<3)+ch-'0'; ch=getchar(); } return num; } const int N=10010; //2≤n≤10000 using namespace std; int main() { LL a[N],ans; int t,T,n,k; cin>>t>>T; rep(i,1,T) { cin>>n>>k; rep(j,1,n) a[j]=read();//调用快读 ans=a[1]+a[2];//先把前两条发出去 a[1]=-1;//把a[1]和a[2]设到最小,方便下面快排 a[2]=-1; sort(a+1,a+1+n);//快排 rep(ccy,1,k-2)//找到剩下的前k-2大的帖子相加 ans+=a[n+1-ccy]; cout<<ans<<endl; } return 0; } ``` ---