有一个DP题,意题都看了好久用n个珠子串成一个项链,但是n个珠子两两之间可能不能放在一起,问有几种串珠子的方式?
因为项链可以旋转,所以选择一个起点最终走到这个起点,且每个点只能走一次,问有多少种情况?
类似旅行商问题,但不一样。问题还是对于一个珠子之后,它要选哪个珠子,因为n个珠子都要被选到,这里解决的就是个顺序问题。
如何定义dp状态
dp[state][i] :在state状态下,且以i为最后一个放入的元素的情况下的总数。
转移方式:从这个状态可以转移到的状态,目标状态总数+=现在的状态总数(状态之间只有加法的时候,这种转移很有用)

#include<iostream>
#include<stdio.h>
#include<string>
#include<cstring>
#include<vector>
#include<stack>
#include<algorithm>
using namespace std;
#define clr(a, x) memset(a, x, sizeof(a))
#define mp(x, y) make_pair(x, y)
#define pb(x) push_back(x)
#define X first
#define Y second
#define fastin                    \ios_base::sync_with_stdio(0); \cin.tie(0);
typedef long long LL;
typedef pair<int, int> PII;
typedef vector<int> VI;
const int INF=0x3f3f3f3f;
int n,m;
int G[20][20];
LL dp[20][1<<19];//dp[i][j] 最后放的是i,状态为j的个数
int main()
{while(cin>>n>>m){clr(G,0);clr(dp,0);for(int i=0,x,y;i<m;i++){cin>>x>>y;x--;y--;G[x][y]=G[y][x]=1;}dp[0][1] = 1;//固定一开始放0 那转态就是1for(int st=1;st<(1<<n);st++) //枚举状态for(int j=0;j<n;j++)//拆解转态{if(dp[j][st]==0) continue;for(int k=1;k<n;k++) //0已经加进去了 无需考虑{if( G[j][k] && (st&(1<<k))==0 )dp[k][st|(1<<k)]+=dp[j][st];}}LL sum=0;for(int i=0;i<n;i++){//cout<<dp[i][(1<<n)-1]<<endl;if(G[i][0]){sum+=dp[i][(1<<n)-1];}}cout<<sum<<endl;}return 0;
}
/*
3 3
1 2
1 3
2 3*/

HDU - 3091相关推荐

  1. HDU 3091 Necklace

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=3091 题意:给你一些珠子,某些珠子之间可以互相连接,问可以连成多少种不同的项链 我们只需要从任意一个点出发 ...

  2. HDU 3091(动态规划-状态压缩)

    问题描述: One day , Partychen gets several beads , he wants to make these beads a necklace . But not eve ...

  3. 解题报告 (五) Burnside引理和Polya定理

    Burnside引理 笔者第一次看到Burnside引理那个公式的时候一头雾水,找了本组合数学的书一看,全是概念.后来慢慢从Polya定理开始,做了一些题总算理解了.本文将从最简单的例子出发,解释Bu ...

  4. HDU——1106排序(istringstream的使用、STLvector练习)

    排序 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submiss ...

  5. hdu 5438 Ponds 拓扑排序

    Ponds Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/contests/contest_showproblem ...

  6. HDU 1248 寒冰王座(全然背包:入门题)

    HDU 1248 寒冰王座(全然背包:入门题) http://acm.hdu.edu.cn/showproblem.php?pid=1248 题意: 不死族的巫妖王发工资拉,死亡骑士拿到一张N元的钞票 ...

  7. hdu 1312 Red and Black 解题报告

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1312 第二条深搜,题目并不难,但是做了我好久好久,由于一个细节,让我赌上了一个晚上的时间. 题目大意: ...

  8. HDU 1429 胜利大逃亡(续) (BFS+位压缩)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1429 胜利大逃亡(续) Time Limit: 4000/2000 MS (Java/Others)  ...

  9. hdu 1272 小希的迷宫

    Problem Description 上次Gardon的迷宫城堡小希玩了很久(见Problem B),现在她也想设计一个迷宫让Gardon来走.但是她设计迷宫的思路不一样,首先她认为所有的通道都应该 ...

最新文章

  1. 三星note5 android版本区别吗,三星Note5哪种颜色好看?三星Note5四种颜色区别对比图解...
  2. 简明python教程 --C++程序员的视角(七):异常
  3. Tool:微信使用技巧之手把手教你如何在电脑端同时登录多个微信账号之图文教程详细攻略
  4. 纠偏的意思_承压能力和纠偏能力,决定成长的高度
  5. BZOJ 2822: [AHOI2012]树屋阶梯 [Catalan数 高精度]
  6. 关于Bitmapimage图片保存(png格式)
  7. 张量分解在无线通信和MIMO雷达中的概述
  8. Tbase 源码 (六)
  9. 腾讯云不同账号之间VPC网络直接建立内网通讯
  10. 6070. 计算字符串的数字和
  11. Python 二分法求一元三次方程唯一的正实数根
  12. 波士顿动力SpotMini改造有胳膊半人马,这家意大利创企打造极致机械手臂
  13. 服务器遇到DDOS攻击怎么办?
  14. Swift,任重而道远!
  15. UE4灰度图生成地图记录blender生成城市地形
  16. r语言和python的区别-Python和R语言之分析对比
  17. 学习java需要的软件
  18. 追涨而不被套的4大绝招[转载]
  19. 用开源系统来组件数据中心
  20. 中学生作文指导杂志中学生作文指导杂志社中学生作文指导编辑部2022年第22期目录

热门文章

  1. android html拦截广告,android去除webview加载的html中的底部广告
  2. “未来之光:揭秘创新科技下的挂灯魅力“
  3. 解锁新姿势:FairyGUI在Unity中遇见的问题-第二弹
  4. linux calibrate_delay
  5. uniApp 自定义分享到微信、朋友圈
  6. Log4j2 又爆出重大bug,log4j-2.17.0-rc1 紧急发布
  7. python精通 epub_《跟老齐学Python:从入门到精通》齐伟(编著)epub+mobi+azw3
  8. 【C语言】计算器(支持括号和长式子)
  9. Mybatis 批量插入报ORA-00933: SQL 命令未正确结束
  10. 氨丙基表面修饰二氧化硅亚微米微球/二氧化硅微球表面负载硫化亚铁纳米晶