codeforces 707D-(DFS+bitset)
来源:互联网 发布:拜发试剂盒软件 编辑:程序博客网 时间:2024/05/16 11:43
题目链接:http://codeforces.com/contest/707/problem/D
根据询问建立一棵树然后DFS。
#include<bits/stdc++.h>using namespace std;const int N=1e3+3;const int maxn=1e5+3;int n,m,q;vector<int> G[maxn];bitset<N> bit[N];bitset<N> opp;int ope[maxn],a[maxn],b[maxn],ans[maxn];void dfs(int x){ if(ope[x]==1) { int flag=0; if(!bit[a[x]][b[x]]) { bit[a[x]][b[x]]=1; ans[x]++; flag=1; } for(int i=0;i<G[x].size();i++) { ans[G[x][i]]=ans[x]; dfs(G[x][i]); } if(flag) bit[a[x]][b[x]]=0; } else if(ope[x]==2) { int flag=0; if(bit[a[x]][b[x]]) { bit[a[x]][b[x]]=0; ans[x]--; flag=1; } for(int i=0;i<G[x].size();i++) { ans[G[x][i]]=ans[x]; dfs(G[x][i]); } if(flag) bit[a[x]][b[x]]=1; } else if(ope[x]==3) { ans[x]+=m-2*bit[a[x]].count(); bit[a[x]]^=opp; for(int i=0;i<G[x].size();i++) { ans[G[x][i]]=ans[x]; dfs(G[x][i]); } bit[a[x]]^=opp; } else { for(int i=0;i<G[x].size();i++) { ans[G[x][i]]=ans[x]; dfs(G[x][i]); } }}int main(){ scanf("%d %d %d",&n,&m,&q); for(int i=1;i<=m;i++) opp[i]=1; for(int i=1;i<=q;i++) { scanf("%d",&ope[i]); if(ope[i]==1) { scanf("%d %d",a+i,b+i); G[i-1].push_back(i); } else if(ope[i]==2) { scanf("%d %d",a+i,b+i); G[i-1].push_back(i); } else if(ope[i]==3) { scanf("%d",a+i); G[i-1].push_back(i); } else { scanf("%d",a+i); G[a[i]].push_back(i); } } for(int i=0;i<G[0].size();i++) { ans[G[0][i]]=0; dfs(G[0][i]); } for(int i=1;i<=q;i++) printf("%d\n",ans[i]); return 0;}
0 0
- codeforces 707D-(DFS+bitset)
- Codeforces 707D Persistent Bookcase(bitset+dfs)★
- codeforces 707 D Persistent Bookcase(dfs+bitset)
- Codeforces #386 D dfs+bitset
- Codeforces Problem 707D Persistent Bookcase(dfs+bitset)
- Codeforces 217D Bitonix' Patrol (dfs + bitset)
- Codeforces 707D Persistent Bookcase 暴力(bitset)
- Codeforces 707D Persistent Bookcase(DFS)
- codeforces 723D(DFS)
- Codeforces Round #368 (Div. 2) D. Persistent Bookcase 离线 dfs+bitset
- codeforces dfs序+线段树+bitset
- CodeForces 327D Block Tower(DFS)
- Codeforces D. Giving Awards 412(DFS)
- codeforces 412D. Giving Awards (dfs)
- CodeForces - 560D Equivalent Strings (DFS)
- codeforces 711D Directed Roads(DFS)
- codeforces 598D dfs
- 【codeforces 723D 】 + DFS
- 学习汇报
- Linux 互斥锁、原子操作实现原理
- GSM Hacking Part ② :使用SDR捕获GSM网络数据并解密
- 剑指offer34_丑数
- Android打造不一样的EmptyView
- codeforces 707D-(DFS+bitset)
- 人生经验 读《疯狂的程序员》 有感
- linux dirent.h 使用
- [设计模式]中介者模式
- Eclipse Android Studio的使用_Android自动化之旅-生成多渠道包
- svn基本使用
- linux下的阻塞带超时的socket连接函数
- 前端复习--CSS布局1 右定宽左自适应
- 菜鸟网络工程师的成长笔记——第7天(2016.08.24)