dalao教导我们,看到计数想容斥……
卡常策略:枚举顺序、除去无效状态、(树结构)

  1. #include <cstdio>
  2. #include <cstring>
  3. #include <algorithm>
  4. typedef long long LL;
  5. const int N=;
  6. LL f[N][N];
  7. int n,m,d[N][N],full;
  8. bool yeah[N];
  9. int st[N],cnt;
  10. struct V{
  11. int to,next;
  12. }c[N<<];
  13. int head[N],t;
  14. inline void add(int x,int y){
  15. c[++t].to=y,c[t].next=head[x],head[x]=t;
  16. }
  17. inline void dfs(int x,int fa){
  18. register int i,j,k;LL sum=;
  19. for(i=head[x];i;i=c[i].next)
  20. if(c[i].to!=fa)
  21. dfs(c[i].to,x);
  22. for(i=;i<=n;++i){
  23. if(!yeah[i]){
  24. f[x][i]=;
  25. continue;
  26. }
  27. f[x][i]=;
  28. for(j=head[x];j;j=c[j].next)
  29. if(c[j].to!=fa){
  30. sum=;
  31. for(k=;k<=cnt;++k)
  32. if(d[i][st[k]])
  33. sum+=f[c[j].to][st[k]];
  34. f[x][i]*=sum;
  35. }
  36. }
  37. }
  38. int main(){
  39. scanf("%d%d",&n,&m);
  40. full=(<<n)-;
  41. int i,j,x,y;
  42. for(i=;i<=m;++i){
  43. scanf("%d%d",&x,&y);
  44. d[x][y]=d[y][x]=;
  45. }
  46. for(i=;i<n;++i){
  47. scanf("%d%d",&x,&y);
  48. add(x,y),add(y,x);
  49. }
  50. LL ans=,sum;
  51. for(i=;i<=full;++i){
  52. cnt=,sum=;
  53. for(j=;j<n;++j)
  54. if(i&(<<j))yeah[j+]=true,st[++cnt]=j+;
  55. else yeah[j+]=false;
  56. dfs(,);
  57. for(j=;j<=n;++j)
  58. sum+=f[][j];
  59. ans+=(((n-cnt)&)?-:)*sum;
  60. }
  61. printf("%lld\n",ans);
  62. return ;
  63. }

【BZOJ 4455】 [Zjoi2016]小星星 容斥计数的更多相关文章

  1. BZOJ 4455: [Zjoi2016]小星星(容斥+树形dp)

    传送门 解题思路 首先题目中有两个限制,第一个是两个集合直接必须一一映射,第二个是重新标号后,\(B\)中两点有边\(A\)中也必须有.发现限制\(2\)比较容易满足,考虑化简限制\(1\).令\(f ...

  2. 4455[Zjoi2016]小星星 容斥+dp

    4455: [Zjoi2016]小星星 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 527  Solved: 317[Submit][Status] ...

  3. bzoj 4455 [Zjoi2016]小星星 树形dp&容斥

    4455: [Zjoi2016]小星星 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 643  Solved: 391[Submit][Status] ...

  4. BZOJ 4455: [Zjoi2016]小星星 [容斥原理 树形DP]

    4455: [Zjoi2016]小星星 题意:一个图删掉一些边形成一棵树,告诉你图和树的样子,求让图上的点和树上的点对应起来有多少方案 看了很多题解又想了一段时间,感觉题解都没有很深入,现在大致有了自 ...

  5. BZOJ 4455: [Zjoi2016]小星星

    Sol 容斥原理+树形DP. 这道题用的容斥思想非常妙啊!主要的思路就是让所有点与S集合中的点对应,可以重复对应,并且可以不用对应完全(意思是是S的子集也可以).这样他有未对应完全的,那就减去,从全都 ...

  6. UOJ185 ZJOI2016 小星星 容斥、树形DP

    传送门 先考虑一个暴力的DP:设\(f_{i,j,S}\)表示点\(i\)映射到了图中的点\(j\),且点\(i\)所在子树的所有点映射到了图中的集合\(S\)时的映射方案数,转移暴力地枚举子集即可, ...

  7. 【BZOJ 4455】 4455: [Zjoi2016]小星星 (容斥原理+树形DP)

    4455: [Zjoi2016]小星星 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 426  Solved: 255 Description 小Y是 ...

  8. 【BZOJ-4455】小星星 容斥 + 树形DP

    4455: [Zjoi2016]小星星 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 204  Solved: 137[Submit][Status] ...

  9. 「LOJ2091」「ZJOI2016」小星星 容斥+DP

    题目描述 小 Y 是一个心灵手巧的女孩子,她喜欢手工制作一些小饰品.她有\(n\)颗小星星,用 \(m\)条彩色的细线串了起来,每条细线连着两颗小星星.有一天她发现,她的饰品被破坏了,很多细线都被拆掉 ...

随机推荐

  1. Python3.6+selenium3.8+Firefox5.7 环境搭建

    大家好,我是阿哲,本人是从php转岗过来学习测试的一名小菜! 在学习selenium过程中,发现运行selenium有很多的问题. 我们在利用pip install selenium 安装的最新版后, ...

  2. 了解Python控制流语句——if语句

    控制流 截止到现在,在我们所看过的程序中,总是有一系列语句从上到下精确排列,并交由 Python 忠实地执行.如果你想改变这一工作流程,应该怎么做?就像这样的情况:你需要程序作出一些决定,并依据不同的 ...

  3. Skype for Business Server 方案

    方案说明: 高可用性的配置屏蔽了单点故障,使得当一个服务器节点失效时,另外的可用的节点能够进行服务的接管.可伸缩性的配置可以保证当即时沟通平台的使用用户增加时,该平台应该具有良好的可伸缩性,能非常方便 ...

  4. 开源自动驾驶仿真平台 AirSim (2) - 编译 AirSim

    AirSim 的官方 Github: https://github.com/Microsoft/AirSim 对于 Unreal Engine 来说,AirSim 其实是作为一个插件存在,说白了就是把 ...

  5. [ Continuously Update ] The Paper List of Image / Video Captioning

    Papers Published in 2018 Convolutional Image Captioning - Jyoti Aneja et al., CVPR 2018 - [ Paper Re ...

  6. LeetCode - 268. Missing Number - stable_sort应用实例 - ( C++ ) - 解题报告

    1.题目大意 Given an array nums, write a function to move all 0's to the end of it while maintaining the ...

  7. C#通过gridview导出excel

    [CustomAuthorize]        public FileResult ExportQuestionCenterExcel(SearchBaseQuestion search)      ...

  8. nodejs反向代理插件anyproxy安装

    目前我使用的是Anyproxy,AnyProxy .这个软件的特点是可以获取到https链接的内容.在2016年年初的时候微信公众号和微信文章开始使用https链接.并且Anyproxy可以通过修改r ...

  9. JQuery常用函数方法全集

    Attribute: $("p").addClass(css中定义的样式类型); 给某个元素添加样式 $("img").attr({src:"test ...

  10. HDU 4300 Clairewd’s message (next函数的应用)

    题意:给你一个明文对密文的字母表,在给你一段截获信息,截获信息前半段是密文,后半段是明文,但不清楚它们的分界点在哪里,密文一定是完整的,明文可能是残缺的,求完整的信息串(即完整的密文+明文串). 题解 ...