题目链接: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的更多相关文章

  1. 提高十连测day3

    提高十连测day3 A 我们可以枚举两个 $ 1 $ 之间的相隔距离,然后计算形如 $ 00100100 \cdots $ 的串在原串中最⻓⼦序列匹配即可,复杂度 $ O(n^2) $ .寻找 $ S ...

  2. 四连测Day4

    四连爆炸 卡我常数 好像被AluminumGod拉到了创客...哇我这个天天爆炸的水平可能会被其他三位dalao吊起来打 orz Edmond-Karp_XiongGod orz Deidara_Wa ...

  3. 【2018.8.10】四连测day4 题解

    T1:给出一棵 $n$ 个节点的无根树,其中 $m$ 个节点是特殊节点,求对于任意 $i ∈ [0, m]$,包含 $i$ 个特殊节点的联通块个数$\mod 998244353$. $1<=n, ...

  4. 四连测总结(XYX)

    目录 成绩 总结 事后... 成绩 telephonewire monkey 总分 0 56 56 cowjog guard path temperature 总分 0 40 0 68 108 cba ...

  5. 四连测Day2

    题目:链接: https://pan.baidu.com/s/1ef_9hGBhczW0B4dz5IUKmw 密码: qgjy T1: hash后直接二分查询即可 #include<iostre ...

  6. 四连测Day1

    题目:链接: https://pan.baidu.com/s/163ycV64ioy7uML7AvRDTGw 密码: p86i T1: 倍增求LCA,minn数组记录最小值 #include<i ...

  7. ZROI 提高十连测 DAY3

    由于我不太会写 觉得从比赛开始就冷静分析.然后看完三道题心态有点爆炸没有紧扣题目的性质. 这个心态是不可取的尽量不要有畏难心理 不要草草的写暴力. LINK:[最长01子序列](http://zhen ...

  8. (四连测)滑雪场的高度差题解---二分 + 搜索---DD(XYX)​​​​​​​的博客

    滑雪场的高度差 时间限制: 1 Sec  内存限制: 128 MB 题目描述 滑雪场可以看成M x N的网格状山地(1 <= M,N <= 500),每个网格是一个近似的平面,具有水平高度 ...

  9. STM32—TIMx实现编码器四倍频

    文章目录 一.储备知识 二.TIMx的编码器模式介绍 1.计数边沿设置 2.选择极性和使能 3.使能 4.计数方向 三.代码部分 一.储备知识 通过STM32的定时器编码器接口模式对编码器进行四倍频, ...

随机推荐

  1. OSG-HUD

    本文转至http://www.cnblogs.com/shapherd/archive/2010/08/10/osg.html 作者写的比较好,再次收藏,希望更多的人可以看到这个文章 互联网是是一个相 ...

  2. 180623-SpringBoot之logback配置文件

    SpringBoot配置logback 项目的日志配置属于比较常见的case了,之前接触和使用的都是Spring结合xml的方式,引入几个依赖,然后写个 logback.xml 配置文件即可,那么在S ...

  3. Java+Selenium 3.x 实现Web自动化 - 1.自动化准备

    (一)自动化准备 说明:本文主要记录了基于公司现有项目(一个电子商务平台),从0开始实现UI自动化的历程.从准备阶段,部分内容直接省略了基础知识,一切以最终做成自动化项目为目标,难免会有晦涩之处.文章 ...

  4. 57[LeetCode] Insert Interval

    Given a set of non-overlapping intervals, insert a new interval into the intervals (merge if necessa ...

  5. Halcon和visionPro的比较

    很多朋友会问到visionpro和halcon这两款机器视觉软件,到底学哪个好呢,今天重码网就给大家讲一讲: 首先比较下两者的优缺点: halcon: 提供的图像算法要比Visionpro多,也就是说 ...

  6. 关于GitHub推送时发生Permission denied (publickey)的问题

    今天在学习廖雪峰老师官网的git教程“添加远程库”时发现总是推送失败,下边提示“Permission denied (publickey) 这个问题” 传送门:https://www.liaoxuef ...

  7. openstack对接VMware浅析

    前言 本文是对openstack对接vmware的浅析,所以本文重点是以下两点: 先了解它的整体架构,搞清楚为什么要用这样的架构: 然后再了解架构中的各个组件,组件提供的主要功能与各个组件之间的交互 ...

  8. 将System.Drawing.Bitmap转换为Direct2D.D2DBitmap

    最近在尝试Direct2D编程,挺好玩的. 但是有时候还是会用到GDI+来生成图片,但D2D绘图需要用到自己的D2DBitmap类. 因此需要转换,查阅了下网上的资料,写了这么一个方法: using ...

  9. 【备忘】mysql常用操作汇总

    1.增删改查 // 插入一条数据 insert into tableName values('liu','bei') // 删除一条数据 delete from tableName where las ...

  10. Coursera:Internet History ,Techornology and Security

    WEEK1 War Time Computing and Communication Bletchley Park 布莱彻利庄园:a top-secret code breaking effort b ...