a. Prime Day
题意
数据范围
题解
Code
#include<bits/stdc++.h>
using namespace std;
bool is_prime(int x){
if(x==1) return 0;
for(int i=2;i<=x/i;i++){
if(x%i==0) return 0;
}
return 1;
}
int main(){
string n; cin>>n;
int sz=n.size();
bool f=1;
for(int i=0;i<sz;i++){
cout<<n<<' ';
if(is_prime(stoi(n))){
cout<<"Yes"<<(i==sz-1?"":"\n");
} else{
f=0;
cout<<"No"<<(i==sz-1?"":"\n");
}
n.erase(0,1);
}
if(f) cout<<endl<<"All Prime!";
}
b.The Judger
题意
数据范围
题解
Code
#include<bits/stdc++.h>
using namespace std;
#define pb push_back
map<int,bool>mp;
vector<int>ans[1010];
int p[15][1010];
bool diff[1000000];
bool st[15];
vector<int>pre;
int main(){
int l,r,n,m; scanf("%d%d%d%d",&l,&r,&n,&m);
mp[l]=1; mp[r]=1;
diff[abs(l-r)]=1;
for(int i=1;i<=n;i++) for(int j=1;j<=m;j++)
scanf("%d",&p[i][j]);
pre.pb(l); pre.pb(r);
for(int i=1;i<=m;i++){
for(int j=1;j<=n;j++){
int x=p[j][i];
if(st[j]) continue;
if(!diff[x] || mp[x]) {
printf("Round #%d: %d is out.\n", i, j);
st[j]=1;
} else {
for(auto it:pre){
int d=abs(x-it);
diff[d]=1;
}
if(!mp[x]) pre.pb(x);
mp[x]=1;
}
}
}
vector<int>win;
for(int i=1;i<=n;i++) if(!st[i]) win.push_back(i);
if(win.empty()) {
printf("No winner.");
} else{
printf("Winner(s):");
for(int i=0;i<win.size();i++) printf(" %d",win[i]);
}
}
c.The Judger
题意
数据范围
题解
Code
#include<bits/stdc++.h>
using namespace std;
#define pb push_back
int n,r,k,m;
vector<int>e[510];
map<int,bool>mp;
void solve(){
mp.clear();
int cnt=0;
vector<int>reg(n+1);
for(int i=1;i<=n;i++) {
int x; cin>>x;
if(!mp[x]) cnt++;
mp[x]=1;
res[i]=x;
}
if(cnt!=k) {
if(cnt<k) cout<<"Error: Too few species.";
else cout<<"Error: Too many species.";
return;
}
for(int i=1;i<=n;i++){
for(int j=0;j<e[i].size();j++){
int to=e[i][j];
if(reg[i]==res[to]){
cout<<"No"<<endl;
return;
}
}
}
cout<<"Yes"<<endl;
}
int main(){
cin>>n>>r>>k;
for(int i=0;i<r;i++){
int l,r; cin>>l>>r;
e[l].pb(r);
e[r].pb(l);
}
cin>>m;
while(m--) {
solve();
if(m!=1) cout<<endl;
}
}
d.The Judger
题意
数据范围
题解
Code
#include<bits/stdc++.h>
using namespace std;
#define pb push_back
#define fi first
#define se second
int n,m;
int main(){
ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
cin>>n>>m;
map<int,int>ma,mb;
for(int i=0;i<m;i++){
int x; cin>>x;
ma[x]++;
}
vector<vector<int>>rnd;
vector<int>tmp;
for(int i=m;i<n;i++){
int x; cin>>x;
int head=ma.begin()->fi;
if(ma.begin()->se==1) ma.erase(ma.begin());
else ma.begin()->se--;
tmp.push_back(head);
if(x>=head) ma[x]++;
else mb[x]++;
if(ma.empty()){
ma=mb;
mb.clear();
rnd.pb(tmp);
tmp.clear();
}
if(i==n-1){
while(ma.size()){
tmp.pb(ma.begin()->fi);
if(ma.begin()->se==1) ma.erase(ma.begin());
else ma.begin()->se--;
}
if(tmp.size()) rnd.pb(tmp);
tmp.clear();
while(mb.size()){
tmp.pb(mb.begin()->fi);
if(mb.begin()->se==1) mb.erase(mb.begin());
else mb.begin()->se--;
}
if(tmp.size()) rnd.pb(tmp);
}
}
for(int i=0;i<rnd.size();i++){
for(int j=0;j<rnd[i].size();j++){
cout<<(j==0?"":" ")<<rnd[i][j];
}
if(i!=rnd.size()-1) cout<<endl;
}
}