【链接】 我是链接,点我呀:)

【题意】

在这里输入题意

【题解】

DP
设f[i][j]表示前i个操作,已经匹配了的点的状态集合为j的方案数
对于+操作
有两种情况。
1.这条边作为匹配的边
2.这条边没有作为匹配边
f[i][j] = f[i-1][j-(u,v)] + f[i-1][j]
作为匹配边,转化一下就是这条边的两个点连上了。也即被匹配了。
对于-操作
考虑前i-1个操作。
会发现+操作的先后顺序不影响前i-1个操作之后的结果。
因此我们干脆就认为第i-1个操作就是和- u,v对应的+ u,v就好了
因此我们只需将$f[i-1][j]-f[i-1][j-(u,v)]$的值赋值给f[i][j]即可。
最后统计匹配数的方案就好了
j这个状态有几个匹配要预处理出来。

【代码】

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define pb push_back
#define inf 2099999999
#define mod 1000000007
#define rep(i,a,b) for(int i=a;i<=b;i++)
#define rep1(i,a,b) for(int i=a;i>=b;i--) const int M = 1024; int T,n,m;
int f[M+10],pre[12];
int cnt[6],pre2[M+10];
char s[5]; int main()
{
#ifdef LOCAL_DEFINE
freopen("rush_in.txt", "r", stdin);
#endif
scanf("%d",&T);
pre[0] = 1;
rep(i,1,10) pre[i] = pre[i-1]*2;
for (int i = 0;i < M;i++){
int x = i,cur = 0;
while (x>0){
cur+=(x%2);
x/=2;
}
if (cur%2==0) pre2[i] = cur/2;
}
while(T--){
scanf("%d%d",&n,&m);
memset(f,0,sizeof f);
f[0] = 1;
for (int i = 1;i <= m;i++){
int x,y;
scanf("%s",s);scanf("%d%d",&x,&y);
x--;y--;
if (s[0]=='+'){
for (int j = pre[n]-1;j >=0;j--)
if (((j&pre[x])>0) && ((j&pre[y])>0) ){
int jj = j ^ pre[x];
jj = jj ^ pre[y];
f[j] = f[j] + f[jj];
if (f[j]>mod) f[j]-=mod;
}
}else{
for (int j = pre[n]-1;j >= 0;j--){
if (((j&pre[x])>0) && ((j&pre[y])>0)){
int jj = j^pre[x];
jj = jj^pre[y];
f[j] = f[j]-f[jj]+mod;
if (f[j]>mod) f[j]-=mod;
}
}
} memset(cnt,0,sizeof cnt);
for (int j = 0;j < pre[n];j++)
cnt[pre2[j]] = (cnt[pre2[j]] + f[j])%mod;
for (int i = 1;i <= n/2;i++) {
if (i!=1) putchar(' ');printf("%d",cnt[i]);
}
puts("");
}
} return 0;
}

【hdu 6321】Dynamic Graph Matching的更多相关文章

  1. 【Sichuan 2017D】Dynamic Graph

    题意 300个点的无环图,开始都是白色,每次改变某个节点的颜色(黑/白),问有多少对白点之间存在只有白点的路径. 题解 类似floyd,求出两点之间的路径条数.然后白到黑就删去对应路径,黑到白就增加对 ...

  2. HDU 6321 Dynamic Graph Matching

    HDU 6321 Dynamic Graph Matching (状压DP) Problem C. Dynamic Graph Matching Time Limit: 8000/4000 MS (J ...

  3. HDU6321 Dynamic Graph Matching【状压DP 子集枚举】

    HDU6321 Dynamic Graph Matching 题意: 给出\(N\)个点,一开始没有边,然后有\(M\)次操作,每次操作加一条无向边或者删一条已经存在的边,问每次操作后图中恰好匹配\( ...

  4. hdu多校第3场C. Dynamic Graph Matching

    Problem C. Dynamic Graph Matching Time Limit: / MS (Java/Others) Memory Limit: / K (Java/Others) Tot ...

  5. 【数位dp】【HDU 3555】【HDU 2089】数位DP入门题

    [HDU  3555]原题直通车: 代码: // 31MS 900K 909 B G++ #include<iostream> #include<cstdio> #includ ...

  6. 【HDU 5647】DZY Loves Connecting(树DP)

    pid=5647">[HDU 5647]DZY Loves Connecting(树DP) DZY Loves Connecting Time Limit: 4000/2000 MS ...

  7. -【线性基】【BZOJ 2460】【BZOJ 2115】【HDU 3949】

    [把三道我做过的线性基题目放在一起总结一下,代码都挺简单,主要就是贪心思想和异或的高斯消元] [然后把网上的讲解归纳一下] 1.线性基: 若干数的线性基是一组数a1,a2,a3...an,其中ax的最 ...

  8. 【HDU 2196】 Computer(树的直径)

    [HDU 2196] Computer(树的直径) 题链http://acm.hdu.edu.cn/showproblem.php?pid=2196 这题可以用树形DP解决,自然也可以用最直观的方法解 ...

  9. 【HDU 2196】 Computer (树形DP)

    [HDU 2196] Computer 题链http://acm.hdu.edu.cn/showproblem.php?pid=2196 刘汝佳<算法竞赛入门经典>P282页留下了这个问题 ...

随机推荐

  1. 【Codeforces Round #507 (Div. 2, based on Olympiad of Metropolises) A】Palindrome Dance

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] i从1..n/2循环一波. 保证a[i]和a[n-i+1]就好. 如果都是2的话填上min(a,b)*2就好 其他情况跟随非2的. ...

  2. C#中的public protected internal private

    1.常见的四种方位修饰符关系下图中的protected internal是并集的关系,意思是在命名空间内是internal的,在命名空间外是protected的 2.sealed final seal ...

  3. servlet详细理解

    生命周期 编辑 客户端请求该 Servlet: 加载 Servlet 类到内存: 实例化并调用init()方法初始化该 Servlet: service()(根据请求方法不同调用doGet() 或者 ...

  4. idea安装Jerebel 与使用

    在File->setting->plugins->下选择Browse repositories下搜索JRebel Plugin 下载,下载完成之后重启idea. 重启完成后,可见在工 ...

  5. HDU 5172

    超内存了,呃...不知道如何优化了. 首先要判断区间的和是否和1~n的和相等. 再个,记录下每个数字前一次出现的位置,求这些位置的最大值,如果小于左端点,则表示有这样的一个序列. 呃~~~第二个条件当 ...

  6. CC2540 与 CC2541 差别 1

    CC2540 的 1234 PIN 是 USB 功能,4 PIN 是 USB 的电压输入引脚. CC2541 没有 USB 功能.它的 1234 PIN 是 I2C 功能,为了与 CC2540 引脚兼 ...

  7. 2015.05.11,外语,读书笔记-《Word Power Made Easy》 15 “如何谈论事情进展” SESSION 44

    1. not the real McCoy simulate(['simjuleit] v. 假装,冒充,模仿,模拟)来自拉丁simulo,copy的意思.simulo本身派生自拉丁形容词simili ...

  8. 英语发音规则---X字母

    英语发音规则---X字母 一.总结 一句话总结: 1.x位于词尾或音节尾部,读/ks/? box /bɒks/ n.盒; 箱状物 fix /fɪks/ vt.固定 fox /fɒks/ n.狐; 狐狸 ...

  9. SQL 数据库性能优化

    http://blog.csdn.net/yzllz001/article/details/54848513 1.  减少数据访问(减少磁盘访问) 2.  返回更少数据(减少网络传输或磁盘访问) 3. ...

  10. POJ 2239 匈牙利算法

    思路:最大匹配 也是很裸的一道题-. // by SiriusRen #include <cstdio> #include <cstring> #include <alg ...