四连测Day3
题目链接:https://pan.baidu.com/s/1_vsHfMI_qO-9IDxmFLkHfg 密码: uza8
T1:
小奥的一笔画,判连通性,查奇偶点即可
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
inline long long read()
{
long long f=,ans=;char c;
while(c<''||c>''){if(c=='-')f=-;c=getchar();}
while(c>=''&&c<=''){ans=ans*+c-'';c=getchar();}
return f*ans;
}
long long t;
long long n,m;
struct node{
long long x,y;
long long nex;
}s[];
long long head[];
long long cnt=;
void add(long long a,long long b)
{
s[cnt].x=a,s[cnt].y=b;
s[cnt].nex=head[a];head[a]=cnt++;
}
long long xx[];
long long book[];
bool f;
void dfs(long long bh,long long ans)
{
for(long long i=head[bh];i!=-;i=s[i].nex)
{
if(book[s[i].y]==)
{
book[s[i].y]=;
dfs(s[i].y,ans+);
}
}
return;
}
int main()
{
t=read();
while(t--)
{
memset(head,-,sizeof(head));
memset(book,,sizeof(book));
memset(s,,sizeof(s));
memset(xx,,sizeof(xx));
n=read(),m=read();
cnt=;
for(long long i=;i<=m;i++)
{
long long u=read(),v=read();
add(u,v),add(v,u);
xx[u]++,xx[v]++;
}
f=true;
book[]=;
dfs(,);
for(int i=;i<=n;i++)
if(book[i]==) {f=false;break;}
if(f==false)
{
cout<<"NO"<<endl;
continue;
}
bool ssss=true;long long ans=;
for(long long i=;i<=n;i++)
{
if(xx[i]%==) ans++;
if(xx[i]==)
{
ssss=false;
cout<<"NO"<<endl;
break;
}
if(ans>)
{
ssss=false;
cout<<"NO"<<endl;
break;
}
}
if(ssss) cout<<"YES"<<endl;
}
return ;
}
/*
1
8 9
1 2
1 3
2 3
3 7
3 8
3 4
4 5
5 6
3 8
*/
T2:
状压dp,dp[i][j]:i在二进制有0的位数表示这个人希望已被破灭,1表示这个希望仍在。j表示前j个人(被期望活的人m)。总体表示在逆元之后的值
显然,dp[i][j+1]=(dp[i][j]*inv)%mod(j+1这个人还活着)
而j+1死的时候:dp[i&t1][j+1]=(dp[i][j]*inv)%mod //ti表示除了希望破灭的人的二进制数,从而表示出来j+1死后别人的希望
因为每种可能都占1/2,所以每次取前面dp[i][j]的1/2
dp[(1<<n)-1][0]=1,因为这是每一个都有希望
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#define inv 499122177
#define mod 998244353
#define low_bit(x) x&-x
using namespace std;
inline long long read()
{
long long f=,ans=;char c;
while(c<''||c>''){if(c=='-')f=-;c=getchar();}
while(c>=''&&c<=''){ans=ans*+c-'';c=getchar();}
return f*ans;
}
long long cx(long long s)
{
long long c=;
while(s!=)
{
long long sry=low_bit(s);
s-=sry;
c++;
}
return c;
}
long long n,m,dp[][],ans[];
long long s[][];
int main()
{
n=read(),m=read();
for(long long i=;i<=n;i++)
{
long long x=read();
long long xx;
for(long long j=;j<=x;j++) xx=read(),s[i][xx]=;
}
dp[(<<n)-][]=;
for(long long i=;i<m;i++)
{
for(long long j=(<<n)-;j>=;j--)
{
dp[j][i+]+=(dp[j][i]*inv)%mod;
dp[j][i+]%=mod;
long long t=(<<n)-;
for(long long k=;k<=n;k++)
if(s[k][i+]==) t-=(<<k-);
dp[j&t][i+]+=(dp[j][i]*inv)%mod;
dp[j&t][i+]%=mod;
}
}
for(long long i=;i<=(<<n)-;i++)
{
(ans[cx(i)]+=dp[i][m])%=mod;
}
for(long long i=;i<=n;i++) printf("%d ",ans[i]);
}
四连测Day3的更多相关文章
- 提高十连测day3
提高十连测day3 A 我们可以枚举两个 $ 1 $ 之间的相隔距离,然后计算形如 $ 00100100 \cdots $ 的串在原串中最⻓⼦序列匹配即可,复杂度 $ O(n^2) $ .寻找 $ S ...
- 四连测Day4
四连爆炸 卡我常数 好像被AluminumGod拉到了创客...哇我这个天天爆炸的水平可能会被其他三位dalao吊起来打 orz Edmond-Karp_XiongGod orz Deidara_Wa ...
- 【2018.8.10】四连测day4 题解
T1:给出一棵 $n$ 个节点的无根树,其中 $m$ 个节点是特殊节点,求对于任意 $i ∈ [0, m]$,包含 $i$ 个特殊节点的联通块个数$\mod 998244353$. $1<=n, ...
- 四连测总结(XYX)
目录 成绩 总结 事后... 成绩 telephonewire monkey 总分 0 56 56 cowjog guard path temperature 总分 0 40 0 68 108 cba ...
- 四连测Day2
题目:链接: https://pan.baidu.com/s/1ef_9hGBhczW0B4dz5IUKmw 密码: qgjy T1: hash后直接二分查询即可 #include<iostre ...
- 四连测Day1
题目:链接: https://pan.baidu.com/s/163ycV64ioy7uML7AvRDTGw 密码: p86i T1: 倍增求LCA,minn数组记录最小值 #include<i ...
- ZROI 提高十连测 DAY3
由于我不太会写 觉得从比赛开始就冷静分析.然后看完三道题心态有点爆炸没有紧扣题目的性质. 这个心态是不可取的尽量不要有畏难心理 不要草草的写暴力. LINK:[最长01子序列](http://zhen ...
- (四连测)滑雪场的高度差题解---二分 + 搜索---DD(XYX)的博客
滑雪场的高度差 时间限制: 1 Sec 内存限制: 128 MB 题目描述 滑雪场可以看成M x N的网格状山地(1 <= M,N <= 500),每个网格是一个近似的平面,具有水平高度 ...
- STM32—TIMx实现编码器四倍频
文章目录 一.储备知识 二.TIMx的编码器模式介绍 1.计数边沿设置 2.选择极性和使能 3.使能 4.计数方向 三.代码部分 一.储备知识 通过STM32的定时器编码器接口模式对编码器进行四倍频, ...
随机推荐
- hdu1052Tian Ji -- The Horse Racing(贪心,细节多)
Tian Ji -- The Horse Racing Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (J ...
- Maya Api笔记 - How polygons are handled internally
为加深记忆和理解Maya的Polygon,尝试利用空闲时间翻译Maya Api文档相关章节. How polygons are handled internally - 多边形是如何在内部处理的
- org.apache.spark.launcher.Main源码分析
public static void main(String[] argsArray) throws Exception { //org.apache.spark.launcher.Main chec ...
- Ubuntu16.04安装truffle时的一些错误
1.使用truffle时出现 Error: /usr/bin/env: node: 没有那个文件或目录 1.如果是用sudo apt-get install nodejs命令安装的nodejs, ub ...
- react创建新项目并且修改配置文件
react创建项目 这是我在用react搭建项目时,用到的一些东西,顺序纯属自己定义, 一.创建项目 用react 创建一个项目,这也是官方给出的 1.npm install create-react ...
- 关于set和get机制的整理
首先这是es5新增的:定义是设置和获取对象属性时候出发的方法,属于修饰器: 犀牛书例子: function test(n){ return { get count(){ return n }, set ...
- Alpha版——版本控制报告(Thunder)
Part One 回答问题: 0.在吹牛之前,先回答这个问题:如果你的团队来了一个新队员,有一台全新的机器,你们是否有一个文档,只要设置了相应的权限,她就可以根据文档,从头开始搭建环境,并成功地把最新 ...
- JSR303中的来验证数据信息
spring mvc之实现简单的用户管理三 博客分类: spring spring mvc spring mvc dispatcherServlet springspring mvcbean vali ...
- .net改善程序性能建议
对改善程序性能的建议. 文章:https://msdn.microsoft.com/zh-cn/library/ms973838.aspx
- TCP系列27—窗口管理&流控—1、概述
在前面的内容中我们依次介绍了TCP的连接建立和终止过程和TCP的各种重传方式.接着我们在这部分首先关注交互式应用TCP连接相关内容如延迟ACK.Nagle算法.Cork算法等,接着我们引入流控机制(f ...