题目链接: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. Windows运行机理——窗口和句柄

    Windows运行机理这系列文章都是来至于<零基础学Qt4编程>——吴迪,个人觉得写得很好,所以进行了搬运和个人加工 1. 窗口 窗口是Windows应用程序中一个非常重要的元素,一个Wi ...

  2. git服务器搭建及eclipse使用git

    一.搭建git服务器 1.yum install git 2.新建用户linux用户git,管理git服务 useradd git passwd git 3.初始化git仓库 git init --b ...

  3. Unity - Humanoid设置Bip骨骼导入报错

    报错如下: 解决: 原因是biped骨骼必须按照Unity humanoid的要求设置,在max中设置如下:

  4. 搭建redis集群的过程中遇到的问题

    1.GCC没有安装或版本不对 报错信息如下 CC adlist.o /bin/sh: cc: command not found make[1]: *** [adlist.o] Error 127 m ...

  5. lintcode 二叉树后序遍历

    /** * Definition of TreeNode: * class TreeNode { * public: * int val; * TreeNode *left, *right; * Tr ...

  6. python基本数据类型——集合

    集合 无序可变序列,集合中元素不允许重复,即每个元素都是唯一的 集合中的元素按照升序排列 # 创建集合 >>aset = set([0,2,4,5,7,2,3,5,9,0]) >&g ...

  7. Android开发-API指南-<permission-tree>

    <permission-tree> 英文原文:http://developer.android.com/guide/topics/manifest/permission-tree-elem ...

  8. 【转载】Android 内存溢出如何发生的。

    [转载]Android 内存溢出如何发生的. 且谈Android内存溢出 前言 关于android的内存溢出在创新文档库中也有不少,网络上也有很多这方面的资料.所以这遍文章不算是正真意义上的创新,仅仅 ...

  9. 二:HDFS 命令指南

    命令具体选项请参考: http://hadoop.apache.org/docs/r2.6.3/hadoop-project-dist/hadoop-hdfs/HDFSCommands.html   ...

  10. POJ 2987 Firing(最大流最小割の最大权闭合图)

    Description You’ve finally got mad at “the world’s most stupid” employees of yours and decided to do ...