Kattis mapcolouring(状压dp)
刚知道vj上查看别人代码,看不到汉字。。。我理解的都注明后边了。
#include <bits/stdc++.h>
#define ll long long
#define met(a, b) memset(a, b, sizeof(a))
#define rep(i, a, b) for(int i = a; i <= b; i++)
#define bep(i, a, b) for(int i = a; i >= b; i--)
#define pb push_back
#define mp make_pair
#define debug cout << "KKK" << endl
#define ls num*2
#define rs num*2+1
#define re return 0
using namespace std;
const ll mod = 1e9+9;
const double PI = acos(-1);
const ll INF = 4e18+1;
const int inf = 1e9 + 15;
const double eps = 1e-7;
const int maxn = 1e5 + 5;
bool ma[16][16];
int dp[1<<16]; // dp[i] 表示给i状态染色所需最小的颜色数。i状态是i对应的二进制,如果某位1,表示该位被染色。 int main(){
ios::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
int t; cin >> t;
while(t--){
int m, n; cin >> n >> m;
int u, v; met(ma, 0);
rep(i, 1, m){
cin >> u >> v;
ma[u][v] = ma[v][u] = 1;
} rep(i, 1, (1 << 16) - 1){
bool flag = 1; //先判断1种颜色能不能染
rep(x, 0, n-1) if(i & (1<<x))
rep(y, 0, n-1) if(i & (1<<y))
if(ma[x][y]) flag = 0; //相连的边都被染色了,不行。 if(flag) dp[i] = 1; // 如果行,这种状态就是1。
else{
dp[i] = 10000; //初始化
for(int j = (i-1)&i; j > 0; j = (j-1)&i){ //这个真牛逼,j是枚举了所有i的排列组合。(x&(x-1))是让二进制最后一位1变成0。比如x = 1010.操作后是1000。
//然后这个(j-1) & i。自己随便找个例子就明白了。比如i = 10101. j会遍历10100 10001 10000 00101 00100 00001枚举了位数是1的排列组合
dp[i] = min(dp[i], dp[i-j]+dp[j]); //相当于i-j状态和j状态用的颜色都不同,。
}
}
}
if(dp[(1<<n)-1] <= 4) cout << dp[(1<<n)-1] << endl;
else cout << "many" << endl;
}
re;
}
Kattis mapcolouring(状压dp)的更多相关文章
- BZOJ 1087: [SCOI2005]互不侵犯King [状压DP]
1087: [SCOI2005]互不侵犯King Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 3336 Solved: 1936[Submit][ ...
- nefu1109 游戏争霸赛(状压dp)
题目链接:http://acm.nefu.edu.cn/JudgeOnline/problemShow.php?problem_id=1109 //我们校赛的一个题,状压dp,还在的人用1表示,被淘汰 ...
- poj3311 TSP经典状压dp(Traveling Saleman Problem)
题目链接:http://poj.org/problem?id=3311 题意:一个人到一些地方送披萨,要求找到一条路径能够遍历每一个城市后返回出发点,并且路径距离最短.最后输出最短距离即可.注意:每一 ...
- [NOIP2016]愤怒的小鸟 D2 T3 状压DP
[NOIP2016]愤怒的小鸟 D2 T3 Description Kiana最近沉迷于一款神奇的游戏无法自拔. 简单来说,这款游戏是在一个平面上进行的. 有一架弹弓位于(0,0)处,每次Kiana可 ...
- 【BZOJ2073】[POI2004]PRZ 状压DP
[BZOJ2073][POI2004]PRZ Description 一只队伍在爬山时碰到了雪崩,他们在逃跑时遇到了一座桥,他们要尽快的过桥. 桥已经很旧了, 所以它不能承受太重的东西. 任何时候队伍 ...
- bzoj3380: [Usaco2004 Open]Cave Cows 1 洞穴里的牛之一(spfa+状压DP)
数据最多14个有宝藏的地方,所以可以想到用状压dp 可以先预处理出每个i到j的路径中最小权值的最大值dis[i][j] 本来想用Floyd写,无奈太弱调不出来..后来改用spfa 然后进行dp,这基本 ...
- HDU 1074 Doing Homework (状压dp)
题意:给你N(<=15)个作业,每个作业有最晚提交时间与需要做的时间,每次只能做一个作业,每个作业超出最晚提交时间一天扣一分 求出扣的最小分数,并输出做作业的顺序.如果有多个最小分数一样的话,则 ...
- 【BZOJ1688】[Usaco2005 Open]Disease Manangement 疾病管理 状压DP
[BZOJ1688][Usaco2005 Open]Disease Manangement 疾病管理 Description Alas! A set of D (1 <= D <= 15) ...
- 【BZOJ1725】[Usaco2006 Nov]Corn Fields牧场的安排 状压DP
[BZOJ1725][Usaco2006 Nov]Corn Fields牧场的安排 Description Farmer John新买了一块长方形的牧场,这块牧场被划分成M列N行(1<=M< ...
- 【BZOJ1087】 [SCOI2005]互不侵犯King 状压DP
经典状压DP. f[i][j][k]=sum(f[i-1][j-cnt[k]][k]); cnt[i]放置情况为i时的国王数量 前I行放置情况为k时国王数量为J #include <iostre ...
随机推荐
- http和https有什么区别?网站有没有必要启用https
最近在浏览文章的时候发现,很多站长都在纠结网站到底要不要做https的问题.作为个人站长,也一直关注着这块.最近查阅了很多资料,对https也有了更进一步的认识,这里对https的有关问题做了一个总结 ...
- anaconda怎么将用户名路径切换为工作路径
- 解决vuex“状态管理声明输错”后报错为:"Uncaught TypeError: __WEBPACK_IMPORTED_MODULE_1_vuex__.a.store is not a constructor"
//Vuex index.js 源码 import Vue from 'vue'; import Vuex from 'vuex'; Vue.use(Vuex); import actions fro ...
- AX2012 循环读取DataSource的记录
static void LoopFormDataSource(Args _args) { FormDataSource formDataSource; SalesLine salesLineSel, ...
- python投票一致性指数(IVC)实现代码
毕业论文中用于计算联合国会员国间在联合国大会上的投票一致性(IVC) import pandas as pd import sqlite3 import networkx as nx import t ...
- centos安装docker显示 No package docker-ce available
温馨提醒,docker内核版本必须是3.10+以上的版本 查看方式 uname -r 1. 卸载老版本的 docker 及其相关依赖 sudo yum remove docker docker-com ...
- Jmeter-接口测试(一)
一.接口测试分类 内部接口 外部接口--被测系统调用外部 --系统对外部提供的接口 接口测试重点:接口参数传递的正确性.接口功能的正确性.输出结果正确性.各种异常容错处理.权限控制.分页.调用 ...
- 2月21日python程序设计
Python变量 1.不需要事先声明变量名及其类型,直接赋值即可. 2.强类型编程语言,根据赋值或运算来推断变量类型. 3.动态类型语言,变量的类型也是可以随时变化的. >>> x ...
- [jmeter的使用]jmeter上传文件接口的写法
1.类型和参数名称,依据接口/抓的包决定 2.必须选择java否则报错 3.http header也要写
- Synchronized和Lock有什么区别?用Lock有什么好处?
Synchronized 和 Lock 1.原始构成 Synchronized 是关键字属于JVM层面 (代码中以蓝色字体呈现) monitorenter .monitorexit Lock 是具体类 ...