Codeforces-Round#614 Div2
作者:互联网
A题 ConneR and the A.R.C. Markland-N
题解:
在当前点左右对称的尝试走即可
int t;
cin>>t;
for(int i=1;i<=t;i++)
{
int n,s,k;cin>>n>>s>>k;
set<int>seq;
for(int j=1;j<=k;j++){
int num;scanf("%d",&num);
seq.insert(num);
}
bool find=false;int st=0;
while(!find)
{
if(seq.find(min(n,s+st))==seq.end()||seq.find(max(1,s-st))==seq.end()){
find=true;
break;
}
st++;
}
cout<<st<<endl;
}
return 0;
B题 JOE is on TV!
题解:
看题意,盲猜调和级数
int n;cin>>n;
double res=0.0;
for(int i=1;i<=n;i++)
{
res+=1.0/i;
}
printf("%.9lf\n",res);
return 0;
C题 NEKO's Maze Game
题解:
使用映射的思想,每个点要挡住路径,需要与对面三个相邻的点匹配。使用\(cnt\)计数匹配的对数。因为匹配相当于无向边,只需计数一次即可。
#include<bits/stdc++.h>
#define MAXN 100010
using namespace std;
map<int,vector<int>>m;
int f[2][MAXN];
int main()
{
memset(f,0,sizeof(f));
int n,q;cin>>n>>q;
int cnt=0;
for(int i=1;i<=q;i++)
{
int a,b;scanf("%d%d",&a,&b);
a--;
if(f[a][b]){
if(f[a^1][b])cnt--;
if(f[a^1][b+1])cnt--;
if(f[a^1][b-1])cnt--;
}
else{
if(f[a^1][b])cnt++;
if(f[a^1][b+1])cnt++;
if(f[a^1][b-1])cnt++;
}
f[a][b]=!f[a][b];
cnt==0?printf("Yes\n"):printf("No\n");
}
return 0;
}
标签:cnt,匹配,int,题解,cin,614,Codeforces,MAXN,Div2 来源: https://www.cnblogs.com/tldr/p/12222045.html