Description

红包是一个有艺术细胞的男孩子。

红包由于NOI惨挂心情不好,暑假作业又多,于是他开始在作业本上涂鸦。

一开始,他在纸上画了一棵 n 个节点的树。但是他觉得这样的画太简单了,体现不出他高超的绘画功底,于是他又额外画上了 k 条边。

然而他觉得这样画面太复杂,于是想删去一些边使得这个无向图仍然是连通的。

请帮红包求出删边的方案数。两个方案被认为是不同的当且仅当存在一条边在其中一组中被删而另一组中没有。(什么边都不删也算一种方案)

Solution

首先发现可能被删除的边一定是在环上的,如果我们构出一棵树来,那么剩下的非树边一定都是反祖边,并且反祖边的条数不超过 \(10\)

用 \(Dzy Loves Chinese II\) 的方法做,我们给所有非树边一个权值,然后把跨过的树边都异或上这个权值(树上差分实现就好了)

那么不连通的情况就是存在一个子集异或和为 \(0\).

但是边树太多了不好枚举,我们缩边:把权值相同的一条链缩为以条边,这条边权值 \(w\) 为与它相同相同的边的数目(删这条边有 \(w\) 种选择),缩点后的树的一种方案对应原图中 \(\Pi w_i\) 中方案

缩完之后的边不会很大,具体数字和证明见 \(UOJ\) 题解,大约是一个 \(bell\) 数

然后在一边搜索的时候用一边用线性基判掉不合法的方案就行了

#include<bits/stdc++.h>
using namespace std;
const int N=2e5+50,mod=998244353;
int head[N],nxt[N*2],to[N*2],num=1,n,m,dep[N],st[N],top=0,w[N],cnt=0;
inline void link(int x,int y){nxt[++num]=head[x];to[num]=y;head[x]=num;}
inline void dfs(int x,int last){
for(int i=head[x];i;i=nxt[i]){
if(i==last)continue;
int u=to[i];
if(!dep[u]){
dep[u]=dep[x]+1;dfs(u,i^1);w[x]^=w[u];
if(w[u])st[++top]=w[u];
}
else if(dep[u]<dep[x]){
w[x]^=1<<cnt;w[u]^=1<<cnt;
st[++top]=(1<<cnt++);
}
}
}
int b[1005][15],ans=0;
struct data{int w,v;}e[N];
inline void bfs(int x,int t){
if(x==cnt+1){
ans=(ans+t)%mod;
return ;
}
memcpy(b[x],b[x-1],sizeof(b[x]));
bfs(x+1,t);
for(int i=10,c=e[x].w;i>=0;i--){
if(!(c>>i&1))continue;
if(!b[x][i]){b[x][i]=c;break;}
else c^=b[x][i];
if(!c)return ;
}
bfs(x+1,1ll*t*e[x].v%mod);
}
int main(){
freopen("pp.in","r",stdin);
freopen("pp.out","w",stdout);
int x,y;
scanf("%d%d",&n,&m);m=n+m-1;
for(int i=1;i<=m;i++){
scanf("%d%d",&x,&y);
link(x,y);link(y,x);
}
dep[1]=1;dfs(1,1);
sort(st+1,st+top+1);cnt=0;
for(int i=1,t=1;i<=top;i++,t++)
if(i==top || st[i]!=st[i+1])e[++cnt]=(data){st[i],t},t=0;
bfs(1,1);
printf("%d\n",ans);
return 0;
}

UOJ #138. 【UER #3】开学前的涂鸦的更多相关文章

  1. 【线性基 集合hash】uoj#138. 【UER #3】开学前的涂鸦

    还需要加强分析题目特殊性质,设计对应特殊算法,少想多写大力dfs剪枝不要管MLETLE直接上的能力 红包是一个有艺术细胞的男孩子. 红包由于NOI惨挂心情不好,暑假作业又多,于是他开始在作业本上涂鸦. ...

  2. UOJ136 开学前的作文

    描述 红包是一个萌萌的男孩子. 红包由于 NOI 惨挂,直到前不久依然无心写作业.如今快开学了,他决定好好完成作业. 对于可以交电子稿的作文,红包有特殊的完成技巧,大致流程是依次选中一段内容→按下 C ...

  3. UOJ #455 [UER #8]雪灾与外卖 (贪心、模拟费用流)

    题目链接 http://uoj.ac/contest/47/problem/455 题解 模拟费用流,一个非常神奇的东西. 本题即为WC2019 laofu的讲课中的Problem 8,经典的老鼠进洞 ...

  4. [UOJ#245][UER#7]天路(近似算法)

    允许5%的相对误差,意味着我们可以只输出$\log_{1.05} V$种取值并保证答案合法.并且注意到答案随着区间长度而单增,故取值不同的答案区间是$O(\log_{1.05} V)$的. 于是初始x ...

  5. 第138天:Web前端面试题总结(编程)

    1.如何让一个盒子水平垂直居中 //已知宽高 <div class="div1"></div> <style> .div1{ width:400 ...

  6. ZJOI2019Round#1

    考的这么差二试基本不用去了 不想说什么了.就把这几天听课乱记的东西丢上来吧 这里是二试乱听课笔记ZJOI2019Round#2 ZJOI Round#1 Day1 M.<具体数学>选讲 罗 ...

  7. 从微软MVP到女儿开学--2017前半年小结

    2017年转眼就到了9月,原本在年初定的计划基本泡汤了. 看书啊减肥啊出教程啊,都被因为各种事物给缠身而没有完成. 1号带女儿去报名的时候,听到老师说"家长们请到这边来集合"的时候 ...

  8. 我们应当怎样学习HTML和CSS

    目标读者:web前端小白.大神请绕路 学习一门新技术,应当找一本经典入门书,在两三天之内快速翻阅完毕,了解其概貌. 然后再制定一个学习路线图(这个路线图绝大多数情况下非书本目录的顺序),接着遵循学习路 ...

  9. 【CodeVS 3123】高精度练习之超大整数乘法 &【BZOJ 2197】FFT快速傅立叶

    第一次写法法塔,,,感到威力无穷啊 看了一上午算导就当我看懂了?PS:要是机房里能有个清净的看书环境就好了 FFT主要是用了巧妙的复数单位根,复数单位根在复平面上的对称性使得快速傅立叶变换的时间复杂度 ...

随机推荐

  1. Nutch 快速入门(Nutch 2.2.1+Hbase+Solr)

    http://www.tuicool.com/articles/VfEFjm Nutch 2.x 与 Nutch 1.x 相比,剥离出了存储层,放到了gora中,可以使用多种数据库,例如HBase, ...

  2. 关于Git的那些事

    以前一直使用tfs 或者svn当做代码管理器,随着GitHub的越来越火,git的使用人说也越来越多,这不我也开始来折腾git .GitHub的连接速度有的时候很慢,在国内不是太稳定,正好看到开源中国 ...

  3. .CHM文件使用问题

    1.查看时内容为空---解除锁定 解决方案:选中xx.CHM,右键点击属性,常规选项卡中点击“解除锁定”.OK了 2.内容显示乱码---修改浏览器编码 IE中的查看 > 编码 > 自动选择 ...

  4. 新编辑器Cocos Creator发布:对不起我来晚了!

    1月19日,由Cocos创始人王哲亲手撰写的一篇Cocos Creator新品发布稿件在朋友圈被行业人士疯狂转载,短短数小时阅读量突破五位数.Cocos Creator被誉为“注定将揭开Cocos开发 ...

  5. 开发者都应该使用的10个C++11特性

    摘要: 在C++11新标准中,语言本身和标准库都增加了很多新内容,本文只涉及了一些皮毛.不过我相信这些新特性当中有一些,应该成为所有C++开发者的常规装备.你也许看到过许多类似介绍各种C++11特性的 ...

  6. numpy 数组运算

    数组的减法:不同维数

  7. “全栈2019”Java第三十二章:增强for循环Foreach语法

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  8. 条目二十二《切勿修改set或multiset的键》

    条目二十二<切勿修改set或multiset的键> 所有的标准关联容器一样,set和multiset按照一定的顺序来存放自己的元素,而这些容器的正确行为也是建立在其元素保持有序的基础之上的 ...

  9. 高阶篇:6)设计评审Design reviews;

    本章目的:明白设计评审Design reviews的概念和流程,不犯常见错误. 1 设计评审概念: 所谓设计评审,是指对设计所作的正式的.综合性的和系统性的审查,并写成文件,以评定设计要求与设计能力是 ...

  10. 2018 ICPC Asia Jakarta Regional Contest

    题目传送门 题号 A B C D E F G H I J K L 状态 Ο . . Ο . . Ø Ø Ø Ø . Ο Ο:当场 Ø:已补 .  :  待补 A. Edit Distance Thin ...