B.NCPC

按最大值个数的奇偶进行分类讨论
若个数为奇数,最大值中任选其一与其他非最大值作比较,剩下的最大值两两相比,则所有最大值均可能是唯一剩下的;
若个数为偶数,选择一个最大值先与其他除k外的非最大数作比较,再让最大值两两相比,最大值一定会被全部淘汰,则非最大值的任意数k均可能是唯一剩下的;

mp.end() 指向尾后位置(最后一个元素之后)
prev(mp.end()) 前退一格(指向最后一个元素)
	
	
#include <bits/stdc++.h> using namespace std; int main() {     int T;     cin>>T;     while(T--){         int n;         cin>>n;         map<int,vector<int>> mp;//整数→整数数组,按整数的大小从大到小排序         string s(n,'0');         for(int i=0;i<n;i++){             int x;             cin>>x;             mp[x].push_back(i);//记录每个美味值所对应的选手编号         }         auto &[x,y]=*prev(mp.end());//x=最后一个键,y=最后一个值         int t=1;         if(y.size()%2==0){             t=-1;             s=string(n,'1');         }         for(auto &i:y){             s[i]+=t;         }         cout<<s<<endl;     } }
E.01矩阵
找规律→输出同心方块图案
n=3:      n=4:          n=5
0 0 0        1 1 1 1           0 0 0 0 0
0 1 1        1 0 0 0           0 1 1 1 1
0 1 0        1 0 1 1           0 1 0 0 0
                1 0 1 0           0 1 0 1 1
                                      0 1 0 1 0

#include <bits/stdc++.h>
using namespace std;
int main()
{
    int n;
    cin>>n;
    for(int i=0;i<n;i++){
        for(int j=0;j<n;j++){
            int x=min(i,j);
            if(x%2==0) cout<<'0';
            else cout<<'1';
        }
        cout<<"\n";
    }
    return 0;
}