2018.10.25 uoj#308. 【UNR #2】UOJ拯救计划(排列组合)
传送门
有一个显然的式子:Ans=∑A(n,i)∗用i种颜色的方案数Ans=\sum A(n,i)*用i种颜色的方案数Ans=∑A(n,i)∗用i种颜色的方案数
这个东西貌似是个NPCNPCNPC。
于是需要仔细观察数据范围。
咦模数等于666?
那么对于A(n,i)A(n,i)A(n,i)在i≥3i\geq 3i≥3的时候模666都是000了。
因此只用讨论i=1i=1i=1和i=2i=2i=2的方案数。
什么?
i=1?i=1?i=1?
没错,题目上并没有说过m!=0m!=0m!=0啊。
还有就是貌似边数跟题目描述不太一样。
代码:
#include<bits/stdc++.h>
using namespace std;
inline int read(){
int ans=0;
char ch=getchar();
while(!isdigit(ch))ch=getchar();
while(isdigit(ch))ans=(ans<<3)+(ans<<1)+(ch^48),ch=getchar();
return ans;
}
const int N=1e5+5,M=2e6+5,mod=6;
int T,n,m,K,first[N],cnt=0,tot=0,fa[N],col[N],ans;
struct edge{int v,next;}e[M<<1];
inline void addedge(int u,int v){e[++cnt].v=v,e[cnt].next=first[u],first[u]=cnt;}
inline void add(int u,int v){addedge(u,v),addedge(v,u);}
inline bool dfs(int p,int f){
col[p]=f;
for(int i=first[p];i;i=e[i].next){
int v=e[i].v;
if(~col[v]){if(!(col[v]^f))return false;}
else if(!dfs(v,f^1))return false;
}
return true;
}
inline int find(int x){return x==fa[x]?fa[x]:fa[x]=find(fa[x]);}
int main(){
T=read();
while(T--){
n=read(),m=read(),K=read();
if(!m){
ans=1;
for(int i=1;i<n;++i){
ans<<=1;
if(ans>=mod)ans-=mod;
}
--ans;
if(ans<0)ans+=mod;
ans=ans*K%mod*(K-1)%mod;
ans+=K%mod;
if(ans>=mod)ans-=mod;
}
else{
cnt=0,tot=0,ans=1;
for(int i=1;i<=n;++i)first[i]=0,fa[i]=i,col[i]=-1;
for(int i=1,u,v,fx,fy;i<=m;++i){
u=read(),v=read(),add(u,v),add(v,u),fx=find(u),fy=find(v);
if(fx!=fy)fa[fx]=fy;
}
for(int i=1,f;i<=n;++i)
if(~col[i])continue;
else{
if(!dfs(i,0)){ans=0;break;}
++tot;
}
if(ans){
for(int i=1;i<tot;++i){
ans<<=1;
if(ans>=mod)ans-=mod;
}
ans=ans*K%mod*(K-1)%mod;
}
}
printf("%d\n",ans);
}
return 0;
}
2018.10.25 uoj#308. 【UNR #2】UOJ拯救计划(排列组合)的更多相关文章
- 2018.10.25 CCSP马拉松摸铜归来
24号体测跑50+1000米. 50米抢跑被罚重跑???然后老年人就只能吊着一口仙气跑第二次50米.然后跑1000米,然后再到宿舍收拾行李赶往地铁站,然后再冲到火车站...(卒) 宾馆,三人挤入二人房 ...
- 2018.10.25 bzoj4565: [Haoi2016]字符合并(区间dp+状压)
传送门 当看到那个k≤8k\le 8k≤8的时候就知道需要状压了. 状态定义:f[i][j][k]f[i][j][k]f[i][j][k]表示区间[i,j][i,j][i,j]处理完之后的状态为kkk ...
- 课堂笔记及知识点----UI框架简介(2018/10/25)
UI框架学习目标: 要知道怎样套用的! 框架里面的基本执行流程 怎样开始执行(配置文件) 怎么套用 最主要的三个脚本: (也是多态的体现之一) 1).BaseUI: 作用-->提供UI能够使用的 ...
- 2018.10.25 bzo1227: [SDOI2009]虔诚的墓主人(组合数学+扫描线+bit)
传送门 有点难调啊.其实是我自己sb了 不过交上去1A1A1A还是平衡了一下心态. 所以这道题怎么做呢? 我们考虑对于一个点(x,y)(x,y)(x,y)如果这个点成为中心,正左/右/上/下分别有l/ ...
- 2018.10.25 洛谷P4187 [USACO18JAN]Stamp Painting(计数dp)
传送门 其实本来想做组合数学的2333. 谁知道是道dpdpdp. 唉只能顺手做了 还是用真难则反的思想. 这题我们倒着考虑,只需要求出不合法方案数就行了. 这个显然是随便dpdpdp的. f[i]f ...
- 2018.10.25 bzoj4517: [Sdoi2016]排列计数(组合数学)
传送门 组合数学简单题. Ans=(nm)∗1Ans=\binom {n} {m}*1Ans=(mn)∗1~(n−m)(n-m)(n−m)的错排数. 前面的直接线性筛逆元求. 后面的错排数递推式本蒟 ...
- 2018.10.25 atcoder Leftmost Ball(计数dp+组合数学)
传送门 dp妙题啊. 我认为DZYODZYODZYO已经说的很好了. 强制规定球的排序方式. 然后就变成了一个求拓扑序数量的问题. 代码: #include<bits/stdc++.h> ...
- 2018.10.25 uestc上天的卿学姐(计数dp)
传送门 看了DZYODZYODZYO的题解之后发现自己又sbsbsb了啊. 直接dpdpdp是O(2d)O(2^d)O(2d)更新,O(1)O(1)O(1)查询或者O(1)O(1)O(1)更新,O(2 ...
- 2018.10.25 bzoj3928: [Cerc2014] Outer space invaders(区间dp)
传送门 区间dpdpdp好题. 首先肯定需要把坐标离散化. 然后在数轴上面区间dpdpdp. 对于当前区间,区间中最大的数一定会被选. 于是我们记f[i,j]f[i,j]f[i,j]表示所有左端点在i ...
随机推荐
- Java自学之路(小白向)
首先学习一门语言无非就受教与自学两种方式,本博文针对自学(穷逼没钱报班,大学又不是计算机专业,只能自学啊) 开个玩笑,其实有很多人是适合自学的,下面介绍. 一.要充满自信我自己就可以学好(够面试用的入 ...
- python:django
====启动django==== python manager.py runserver --host 0.0.0.0 --port 9008 python manager.py runserver ...
- Mac 上fopen总返回NULL
全局,相对路径都不行, 在沙盒中获取也不行 //在沙盒中获取Documents的完整路径 NSString * path = [NSSearchPathForDirectoriesInDomains( ...
- mybatis批量更新update-设置多个字段值 报错 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near
mybatis批量更新update-设置多个字段值 2016年08月01日 12:49:26 姚一号 阅读数:29539 标签: mysql mybatis批量更新批量更新allowMultiQuer ...
- wk1&2 字符串
[CQ] 自增怎么样都增了,赋值不一定: int x = 2; int y = 2; int i = ++x; int j = y++; System.out.println(x); System.o ...
- Android沉浸式状态栏背景色以及字体颜色的修改
在activity中设置透明状态栏 的思路: 1.让activity的布局全屏 此时布局会和状态栏重叠 2.让布局最上方预留出和状态栏高度一样的高度,将状态栏的背景色设置为透明 效 ...
- sqlserver的数据库状态——脱机与联机
1.数据库状态: online:可以对数据库进行访问 offline:数据库无法访问 2.查看数据库状态的方法: (1)使用查询语句: SELECT state_desc FROM SYS.datab ...
- 10.22JS日记
1.js数据类型分析 (1)基础类型:string.number.boolean.null.undefined (2)引用类型:object-->json.array... 2.点运算 xxx ...
- c# dev treelist 总结
1:去掉左侧顺序号列 2: EnableAppearanceFocusedCell 允许/否获得焦点的单格使用外观 设置TreeList的OptionsSelection属性: 3:设置TreeLis ...
- 【转】我为什么把think in java 读了10遍
我在想写这篇博文之前,就曾经对我媳妇(她是做web前端的)讲,我把think in java看了几次几次,媳妇那时就用很羡慕和莫名的眼神看着我说,你真有毅力,我当时就蒙了,我以为她会说,你现在基础一定 ...