hdu5996 hdu5724 - 阶梯博弈
学习文章连接:https://blog.csdn.net/kk303/article/details/6692506hdu5724题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=5724代码如下:(不太懂)#include<iostream>#include<cstdio>#include&
·
学习文章连接:https://blog.csdn.net/kk303/article/details/6692506
hdu5724
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=5724
代码如下:(不太懂)
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<vector>
#include<cmath>
#include<set>
#include<string>
#include<cstring>
#define ll long long
using namespace std;
const int N=1003;
int cnt[25];
int main(){
int t,a,n;
scanf("%d",&t);
while(t--){
scanf("%d",&n);
int ans=0,m;
for(int i=1;i<=n;i++){
memset(cnt,0,sizeof(cnt));
scanf("%d",&m);
for(int i=1;i<=m;i++){
scanf("%d",&a);
cnt[a]++;
}
int tot=0,j=20,fg=0;
while(cnt[j])j--;
for(;j;j--){
if(!cnt[j])ans^=(fg?tot:0),fg^=1,tot=0;
else tot++;
}
ans^=(fg?tot:0);
}
if(ans)printf("YES\n");
else printf("NO\n");
}
}
hdu5996
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=5996
刚开始还写了个dfs……超时,后来想想我们把深度为奇数的点异或不久行了吗,而点的深度等于父节点的深度加1
代码如下:
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<vector>
#include<cmath>
#include<set>
#include<string>
#include<cstring>
#define ll long long
using namespace std;
const int N=100005;
int dep[N],a[N];
int main(){
int b,t,n;
scanf("%d",&t);
while(t--){
memset(dep,0,sizeof(dep));
scanf("%d",&n);
for(int i=1;i<n;i++){
scanf("%d",&b);
dep[i]=dep[b]+1;
}
for(int i=0;i<n;i++){
scanf("%d",&a[i]);
}
int ans=0;
for(int i=1;i<n;i++){
if(dep[i]%2)ans^=a[i];
}
if(ans)printf("win\n");
else printf("lose\n");
}
}
更多推荐
已为社区贡献4条内容
所有评论(0)