P4869 罪犯分组

思路:
明显的dp,虽然我想到了二进制模拟,想到了转移,但还是先看了题解,原来真是这样,,,,不是第三题吗?
用f[i]表示,对于前i个罪犯最少需要分几组。
对于每个状态用二进制表示,第i位上1,0表示该集合中是否包含i罪犯。
转移时,枚举中间节点,把f[i]看成所有f[j]+f[i^j]的最小值。(即两个最小的互补子集的和)
咳咳,有人问我为什么是^抑或,因为U=A^B,U^A=B,U^B=A.(U是全集,A,B是子集)
#include<iostream>
#include<queue>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
const int N= <<;
int n,m,k,f[N];
bool map[][];
int tot;
int main()
{
scanf("%d%d%d",&n,&m,&k);
for(int i=,x,y;i<=m;i++)
{
scanf("%d%d",&x,&y);
--x,--y;//从零开始记,也就是二进制的第一位
map[x][y]=map[y][x]=;
}
memset(f,,sizeof(f));
for(int i=;i<(<<n);i++)
{
tot=;
for(int j=;j<n;j++)
for(int kk=j;kk<n;kk++)
if(map[j][kk]&&((<<j)&i)&&((<<kk)&i)) tot++;//看看这个状态下有多少犯人之间有矛盾
if(tot<=k) f[i]=;//小于K的话,一组就够了 for(int j=i;j;j=(j-)&i)
f[i]=min(f[i],f[j]+f[i^j]);//可以看成是两个部分的和,但要两部分犯人完美拼合。(也就是说两部分犯人即使放一块,最优解也是他们各自在自己原来的组里)
}
cout<<f[(<<n)-];
return ;
}
P4869 罪犯分组的更多相关文章
- tyvj4869 罪犯分组
看数据范围,果断状压.真是比愤怒的小鸟还智障..... #include<bits/stdc++.h> using namespace std; #define MAXN 500000+1 ...
- noip模拟赛 罪犯分组
分析:看了题后没别的思路,感觉就是dp,普通dp的话状态和方程实在是不好设计,观察数据,发现N非常小,暗示了这道题要用状压dp来做. 先枚举每个集合,再用O(n^2)的暴力看这个集合内有多少个冲突,如 ...
- noip2017考前整理(未完)
快考试了,把我以前写过的题回顾一下.Noip2007 树网的核:floyd,推出性质,暴力.Noip2008 笨小猴:模拟Noip2008 火柴棒等式:枚举Noip2008 传纸条:棋盘dpNoip2 ...
- NOIP模拟赛16
NOIP2017金秋冲刺训练营杯联赛模拟大奖赛第一轮Day2 期望得分:100+100+ =200+ 实际得分:100+40+70=210 T1天天寄快递 直接模拟,代码丢了...... T2天天和不 ...
- 2019.8.3 NOIP模拟测试12 反思总结【P3938 斐波那契,P3939 数颜色,P3940 分组】
[题解在下面] 早上5:50,Gekoo同学来到机房并表态:“打暴力,打暴力就对了,打出来我就赢了.” 我:深以为然. (这是个伏笔) 据说hzoi的人还差两次考试[现在是一次了]就要重新分配机房,不 ...
- 2019.8.3 [HZOI]NOIP模拟测试12 C. 分组
2019.8.3 [HZOI]NOIP模拟测试12 C. 分组 全场比赛题解:https://pan.baidu.com/s/1eSAMuXk 刚看这题觉得很难,于是数据点分治 k只有1和2两种,分别 ...
- noip模拟9[斐波那契·数颜色·分组](洛谷模拟测试)
这次考试还是挺好的 毕竟第一题被我给A了,也怪这题太简单,规律一眼就看出来了,但是除了第一题,剩下的我只有30pts,还是菜 第二题不知道为啥我就直接干到树套树了,线段树套上一个权值线段树,然后我发现 ...
- 一条Sql语句分组排序并且限制显示的数据条数
如果我想得到这样一个结果集:分组排序,并且每组限定记录集的数量,用一条SQL语句能办到吗? 比如说,我想找出学生期末考试中,每科的前3名,并按成绩排序,只用一条SQL语句,该怎么写? 表[TScore ...
- 关押罪犯 and 食物链(并查集)
题目描述 S 城现有两座监狱,一共关押着N 名罪犯,编号分别为1~N.他们之间的关系自然也极不和谐.很多罪犯之间甚至积怨已久,如果客观条件具备则随时可能爆发冲突.我们用"怨气值"( ...
随机推荐
- N1游记
考试一年前:要认真学文化课,所以还是别报七月的了吧,等到年底就该稳了. 考试半年前:虽然暑假没学,但是到了年底就该稳了. 考试一个月前:我咋还要考N1,算了不管了,到时候再说吧. 考试一周前:我一定要 ...
- 【LeetCode】064. Minimum Path Sum
题目: Given a m x n grid filled with non-negative numbers, find a path from top left to bottom right w ...
- The specified named connection is either not found in the configuration, not intended to be used
今天用EF遇到一个问题, The specified named connection is either not found in the configuration, not intended t ...
- ReSIProcate环境搭建
1首先下载resiprocate-1.6 2取消resiprocate-1.6目录的只读属性 3然后使用Visual Studio 2008打开resiprocate-1.6下的reSIProcate ...
- .NETFramework-Timers:Timer
ylbtech-.NETFramework-Timers:Timer 1.程序集 System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b7 ...
- Docker入门(四):服务(Services)
这个<Docker入门系列>文档,是根据Docker官网(https://docs.docker.com)的帮助文档大致翻译而成.主要是作为个人学习记录.有错误的地方,Robin欢迎大家指 ...
- ContOS 小细节
rm [filename] 这个filenam 中间如果有()那么就必须用/转义,如 demo_(2).txt 必须写为 demo_\(2\).txt 上传 rz下载 sz + 文件名退出 exit解 ...
- css属性学习
CSS display 属性 display 属性规定元素应该生成的框的类型. none:此元素不会被显示. block:此元素将显示为块级元素,此元素前后会带有换行符. inline默认.此元素会被 ...
- Consuming JSON Strings in SQL Server
https://www.simple-talk.com/sql/t-sql-programming/consuming-json-strings-in-sql-server/ Consuming JS ...
- POJ1251 Jungle Roads Kruskal+scanf输入小技巧
Jungle Roads The Head Elder of the tropical island of Lagrishan has a problem. A burst of foreign ai ...