HDU6321 Dynamic Graph Matching (杭电多校3C)
给出一些点集,然后对于每一次要求给出的这些点集里的1,2,3,4,5,6....n/2的匹配数,
dp[i][j] 表示到第i次操作里点集为j的匹配数,然后我每次加入一条边u-v,我的状态就是
dp[i][j] = dp[i-1][j] + dp[i-1][(不含u,v)的j],删除就是dp[i][j] = dp[i-1][j] - dp[i-1][(不含u,v)的j]
一个匹配就是两个点,所以2*i个点的答案就是匹配为i的答案。
然后可以减去一维,变成一维的dp,然后在取模一下就可以了
- #include<map>
- #include<set>
- #include<ctime>
- #include<cmath>
- #include<stack>
- #include<queue>
- #include<string>
- #include<vector>
- #include<cstdio>
- #include<cstdlib>
- #include<cstring>
- #include<iostream>
- #include<algorithm>
- #define lowbit(x) (x & (-x))
- typedef unsigned long long int ull;
- typedef long long int ll;
- const double pi = 4.0*atan(1.0);
- const int inf = 0x3f3f3f3f;
- const int maxn = ;
- const int maxm = ;
- const int mod = 1e9+;
- using namespace std;
- int n, m, tol, T;
- int dp[maxn];
- int cnt[maxn];
- int ans[];
- void init() {
- memset(dp, , sizeof dp);
- }
- int calc(int x) {
- int ans = ;
- while(x) {
- if(x & ) ans++;
- x >>= ;
- }
- return ans;
- }
- void handle() {
- for(int i=; i<=(<<); i++) {
- cnt[i] = calc(i);
- }
- }
- int main() {
- handle();
- scanf("%d", &T);
- while(T--) {
- init();
- scanf("%d%d", &n, &m);
- dp[] = ;
- char s[];
- while(m--) {
- memset(ans, , sizeof ans);
- int u, v;
- scanf("%s%d%d", s, &u, &v);
- u--, v--;
- int y = (<<u) + (<<v);
- if(s[] == '+') {
- for(int i=(<<n)-; i>=; i--) {
- if((i&(<<u)) && (i&(<<v))) {
- dp[i] += dp[i-y];
- dp[i] %= mod;
- }
- }
- } else {
- for(int i=; i<(<<n); i++) {
- if((i&(<<u)) && (i&(<<v))) {
- dp[i] -= dp[i-y];
- dp[i] = (dp[i] % mod + mod) % mod;
- }
- }
- }
- for(int i=; i<(<<n); i++) {
- ans[cnt[i]] += dp[i];
- ans[cnt[i]] = (ans[cnt[i]] % mod + mod) % mod;
- }
- for(int i=; i<=n; i+=) printf("%d%c", ans[i] % mod, i==n ? '\n' : ' ');
- }
- }
- return ;
- }
HDU6321 Dynamic Graph Matching (杭电多校3C)的更多相关文章
- HDU6321 Dynamic Graph Matching【状压DP 子集枚举】
HDU6321 Dynamic Graph Matching 题意: 给出\(N\)个点,一开始没有边,然后有\(M\)次操作,每次操作加一条无向边或者删一条已经存在的边,问每次操作后图中恰好匹配\( ...
- [HDU6321]Dynamic Graph Matching(DP)
题意:给定一个n个点的无向图,开始没有边,然后m个操作,每次加边或者删边,每次操作后输出正好k个边的匹配数k=1,2,3,...n/2,n<=10,m<=30000 可以发现,n<= ...
- hdu多校第3场C. Dynamic Graph Matching
Problem C. Dynamic Graph Matching Time Limit: / MS (Java/Others) Memory Limit: / K (Java/Others) Tot ...
- HDU 6321 Dynamic Graph Matching
HDU 6321 Dynamic Graph Matching (状压DP) Problem C. Dynamic Graph Matching Time Limit: 8000/4000 MS (J ...
- 可持久化线段树的学习(区间第k大和查询历史版本的数据)(杭电多校赛第二场1011)
以前我们学习了线段树可以知道,线段树的每一个节点都储存的是一段区间,所以线段树可以做简单的区间查询,更改等简单的操作. 而后面再做有些题目,就可能会碰到一种回退的操作.这里的回退是指回到未做各种操作之 ...
- 2018 Multi-University Training Contest 1 杭电多校第一场
抱着可能杭电的多校1比牛客的多校1更恐怖的想法 看到三道签到题 幸福的都快哭出来了好吗 1001 Maximum Multiple(hdoj 6298) 链接:http://acm.hdu.edu. ...
- 2017杭电多校06Rikka with Graph
Rikka with Graph Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) ...
- [2019杭电多校第五场][hdu6629]string matching(扩展kmp)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6629 题意求字符串的每个后缀与原串的最长公共前缀之和. 比赛时搞东搞西的,还搞了个后缀数组...队友一 ...
- 2018 Multi-University Training Contest 9 杭电多校第九场 (有坑待补)
咕咕咕了太久 多校博客直接从第三场跳到了第九场orz 见谅见谅(会补的!) 明明最后看下来是dp场 但是硬生生被我们做成了组合数专场…… 听说jls把我们用组合数做的题都用dp来了遍 这里只放了用组 ...
随机推荐
- Ubuntu端口开放
一.关于iptable的介绍 维基百科:https://zh.wikipedia.org/wiki/Iptables 注意:iptables的操作需要root权限 二.具体操作 sudo apt-ge ...
- spring boot中log4j冲突问题和解决办法
Spring Boot中自带了log4j日志管理.写法应该是: private static final Logger logger = Logger.getLogger(XXX.class); 而不 ...
- [转帖]ipvsadm命令参考及其应用例子
ipvsadm命令参考及其应用例子 https://blog.csdn.net/orichisonic/article/details/47375227 只是简单创建了 service和添加serve ...
- HDU 4913 Least common multiple
题目:Least common multiple 链接:http://acm.hdu.edu.cn/showproblem.php?pid=4913 题意:有一个集合s,包含x1,x2,...,xn, ...
- AngularJS双向数据绑定
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- VUE.JS 使用axios数据请求时数据绑定时 报错 TypeError: Cannot set property 'xxxx' of undefined 的解决办法
正常情况下在data里面都有做了定义 在函数里面进行赋值 这时候你运行时会发现,数据可以请求到,但是会报错 TypeError: Cannot set property 'listgroup' of ...
- cordova微信支付回调App闪退
这是cordova版本太高,不兼容这个插件所导致的.解决方案是修改$your_project/plugins/cordova-plugin-wechat/scripts/android-install ...
- SpringMVC配置三大组件
1.组件扫描器 使用组件扫描器省去在spring容器配置每个Controller类的繁琐. 使用<context:component-scan>自动扫描标记@Controller的控制器类 ...
- 工程师常犯的web后台界面用户体验错误
- has invalid type <class 'numpy.ndarray'>, must be a string or Tensor
转自: https://blog.csdn.net/jacke121/article/details/78833922 has invalid type <class 'numpy.ndarra ...