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. vs附加调试

    已解决.项目-属性-调试-启用调试器选择启用本机代码调试,不知道怎么的选成启用Visual Studio承载进程了.

  2. CentOS7 关闭防火墙[转]

    CentOS6关闭防火墙使用以下命令, /临时关闭 service iptables stop //禁止开机启动 chkconfig iptables off CentOS7中若使用同样的命令会报错, ...

  3. ES6——介绍

    什么是ES6? ECMAScript 6.0 (简称ES6)是继ECMAScript 5.1 之后 JavaScript 语言的下一代标准,发布在2015年6月.他的目标,是使得 JavaScript ...

  4. 工作中的Buff加成-结构化思考力:第一章:认识结构化思维及其作用

    一:引言 为了更好的说明结构思考力,我们先来做几个小测试. PS:如果你能做到,请留言,因为我要和你交好友,因为你是人才啊,可以挖一挖,挖到我的公司中. 第一个测试:请在三秒内记住下列数字.数字顺序不 ...

  5. LightOJ 1094 - Farthest Nodes in a Tree

    http://lightoj.com/volume_showproblem.php?problem=1094 树的直径是指树的最长简单路. 求法: 两遍BFS :先任选一个起点BFS找到最长路的终点, ...

  6. 874. Walking Robot Simulation

    A robot on an infinite grid starts at point (0, 0) and faces north.  The robot can receive one of th ...

  7. codeforces785E

    http://codeforces.com/contest/785/problem/E 一道经典的求逆序对的题目,可以用树状数组套平衡树解决 平衡树需要支持插入一个数,删除一个数,找比 x 小的数的个 ...

  8. centos6.5 命令行配置无线上网

    1.驱动下载地址: RTL8188无线网卡驱动下载 链接:https://pan.baidu.com/s/1ms-EbQCDxa76jPhYUPmr9Q 密码:r2vu 2.安装步骤: [root@c ...

  9. npm淘宝镜像和默认镜像切换

    1.得到原本的镜像地址 npm get registry > https://registry.npmjs.org/ 设成淘宝的 npm config set registry http://r ...

  10. CF765F Souvenirs 离线+线段树+主席树

    $ \color{#0066ff}{ 题目描述 }$ A县旁,连绵着一条长度为 n 的山脉,这条山脉由 n 座山峰组成,第 i 座山 峰的高度为 ai.作为著名的旅游县城,每天来到山脉游玩的旅客络绎不 ...