这场cf的时间非常棒,但是还是因为一些事情耽误了一下,只a了前三题

  首先是a题,给你三条边,问至少需要增加多少长度,可以使得三条边构成三角形

  首先给三条边排个序,然后如果另外两条边之和大于最长的那条边 ,则输出0

  否则,则输出最长边减另外两条边,然后加一

  

 #include <bits/stdc++.h>
#define INF 1e-7
using namespace std;
int main()
{
    int num[3];
    cin>>num[0]>>num[1]>>num[2];
    sort(num,num+3);
    if(num[2]<num[0]+num[1]) cout<<0<<endl;
    else{
        num[2]++;
        cout<<num[2]-num[0]-num[1]<<endl;
    }
}

然后,是b题,b题其实挺难的,但是当打个表之后找下规律就行了

  题意: 给你一个a ,问有多少个x满足 a-(a xor x)-x=0;

  打个表,发现规律 将a转成二进制,然后数有多少个1,那答案就是 2^k

  

#include <bits/stdc++.h>
#define INF 1e-7
using namespace std;
int main()
{
    int t;
    int n;
    cin>>t;
    while(t--){
        int ans=0;
        cin>>n;
        while(n>0){
            if(n%2==1) ans++;
            n/=2;
        }
        long long sum=1;
        for(int i=0;i<ans;i++) sum*=2;
        cout<<sum<<endl; }
    return 0;
}

然后是c题,给你一个字符串,问怎样排列这个字符串保证回文子串最多

其实只需要将相同字符的摆在一起就ok了

 #include <bits/stdc++.h>
#define INF 1e-7
using namespace std;
int main()
{
    char s[100005];
    int n;
    cin>>n;
    cin>>s;
    sort(s,s+n);
    cout<<s<<endl;
    return 0;
}

感觉这场还是比较简单的,比div3还简单