B.NCPC
按最大值个数的奇偶进行分类讨论
若个数为奇数,最大值中任选其一与其他非最大值作比较,剩下的最大值两两相比,则所有最大值均可能是唯一剩下的;
若个数为偶数,选择一个最大值先与其他除k外的非最大数作比较,再让最大值两两相比,最大值一定会被全部淘汰,则非最大值的任意数k均可能是唯一剩下的;
mp.end() 指向尾后位置(最后一个元素之后)
prev(mp.end()) 前退一格(指向最后一个元素)
若个数为奇数,最大值中任选其一与其他非最大值作比较,剩下的最大值两两相比,则所有最大值均可能是唯一剩下的;
若个数为偶数,选择一个最大值先与其他除k外的非最大数作比较,再让最大值两两相比,最大值一定会被全部淘汰,则非最大值的任意数k均可能是唯一剩下的;
mp.end() 指向尾后位置(最后一个元素之后)
prev(mp.end()) 前退一格(指向最后一个元素)
E.01矩阵#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; } }
找规律→输出同心方块图案
n=3: n=4: n=5
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;
}

京公网安备 11010502036488号