题目链接: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;
}

codeforces 707D-(DFS+bitset)的更多相关文章

  1. Persistent Bookcase CodeForces - 707D (dfs 离线处理有根树模型的问题&&Bitset)

    Persistent Bookcase CodeForces - 707D time limit per test 2 seconds memory limit per test 512 megaby ...

  2. [HIHO1041]国庆出游(DFS, bitset)

    题目链接:http://hihocoder.com/problemset/problem/1041 学会了用C++的bitset哈,可喜可贺.以后遇到超过64位想用位来表示状态就不愁了哈. 这题用bi ...

  3. Military Problem CodeForces 1006E (dfs序)

    J - Military Problem CodeForces - 1006E 就是一道dfs序的问题 给定一个树, 然后有q次询问. 每次给出u,k, 求以u为根的子树经过深搜的第k个儿子,如果一个 ...

  4. Graph Without Long Directed Paths CodeForces - 1144F (dfs染色)

    You are given a connected undirected graph consisting of nn vertices and mm edges. There are no self ...

  5. [CSP-S模拟测试]:世界线(DFS+bitset)

    题目描述 时间并不是一条单一的线,而是有许多世界线构成的流. 在一些时刻,世界线会发生分裂:同样的,它们也有可能在一些时刻收束在一起.如果将这些时刻抽象成点,那么这些世界线构成的网络,实际上是一张有向 ...

  6. 素数环(dfs+回溯)

    题目描述: 输入正整数n,把整数1,2...n组成一个环,使得相邻两个数和为素数.输出时从整数1开始逆时针排列并且不能重复: 例样输入: 6 例样输出: 1 4 3 2 5 6 1 6 5 2 3 4 ...

  7. UVA 291 The House Of Santa Claus(DFS算法)

    题意:从 节点1出发,一笔画出 圣诞老人的家(所谓一笔画,就是遍访所有边且每条边仅访问一次). 思路:深度优先搜索(DFS算法) #include<iostream> #include&l ...

  8. 历届试题 邮局(dfs+剪枝)

      历届试题 邮局   时间限制:1.0s   内存限制:256.0MB      问题描述 C村住着n户村民,由于交通闭塞,C村的村民只能通过信件与外界交流.为了方便村民们发信,C村打算在C村建设k ...

  9. POJ 3083 -- Children of the Candy Corn(DFS+BFS)TLE

    POJ 3083 -- Children of the Candy Corn(DFS+BFS) 题意: 给定一个迷宫,S是起点,E是终点,#是墙不可走,.可以走 1)先输出左转优先时,从S到E的步数 ...

  10. codeforces 731C(DFS)

    题目链接:http://codeforces.com/contest/731/problem/C 题意:有n只袜子(1~n),k种颜色(1~k),在m天中,左脚穿下标为l,右脚穿下标为r的袜子,问最少 ...

随机推荐

  1. CF---(452)A. Eevee

    A. Eevee time limit per test 1 second memory limit per test 256 megabytes input standard input outpu ...

  2. ajax接触

    1. function doSave() { ajax_get("${contextPath}/auth/functionsave", $("#editForm" ...

  3. WebForm MapPageRoute 路由配置(转载)

    使用场景是:MVC 混合使用 WebForm,然后对 WebForm 进行路由配置 http://www.cnblogs.com/xishuai/archive/2015/02/26/web-form ...

  4. BZOJ4003 [JLOI2015]城池攻占

    这题有两种做法来着... 第一种就是一开始想到的比较不靠谱,不过貌似可以过掉: 看从$1$号节点开始到$p$号节点最大需要的体力,记录单调上升的体力,询问的时候二分跳着走就可以了 不过精度问题还有可能 ...

  5. checkbox改成radio效果,单选,取消

    $(function () {            var allBox = $(":checkbox");            allBox.click(function ( ...

  6. office 使用技巧

    Excel: 非打印区域显示成灰色:视图--分页预览 选定行的时侯,如何从某一行选定到末尾? 先点某一行,然后按住shift不松,再按END,再按下方向箭. 选定列也是这样,先按住某列,然后按SHIF ...

  7. GFS: Evolution on Fast-forward

    GFS: Evolution on Fast-forward by Marshall Kirk McKusick, Sean Quinlan | August 7, 2009 A discussion ...

  8. 12.Object-C--浅谈OC的内存管理机制

    昨天学习了OC的内存管理机制,今天想总结一下,所以接下来我要在这里bibi一下:OC的内存管理. 首先我要说的是,内存管理的作用范围. 内存管理的作用范围: 任何继承了NSObject的对象,对其他基 ...

  9. C-union的使用

    union有两个作用: 1,节约空间,如果一个struct存在两个互斥的变量,则可以把这个struct变成union 2,将同一个内存作为多种解释 代码: #include <iostream& ...

  10. Xcode6.2创建Empty Application

    运行Xcode 6,创建一个Single View Application工程.   创建好后,把工程目录下的Main.storyboard和LaunchScreen.xib删除,扔进废纸篓.   打 ...