ZOJ 3161 Damn Couples 动态规划 难度:2
Damn Couples
Time Limit: 1 Second Memory Limit: 32768 KB
As mentioned in the problem "Couples", so many new words appear on the internet. Another special one is "Damn Couples", a club which consists of people who have failed on love affairs and decide not to start a relationship. (If you want to know more words, just turn to a search engine.)
We have a group of people in the club, and everyday they sit there in one line in a fixed order, doing nothing. Life in the club is indeed boring, especially for the leader Wyest, and one day she invented a game. She first makes up a list of imaginary "8g"s among the members, every "8g" is between two persons, then publishes the list. Each minute she chooses one "8g" from the list and announces it to be true, until all "8g"s in the list have been announced. She will not 8g the same two persons more than once.
In a single minute, the following things may happen.
1. If the two persons involved in the "8g" are sitting next to each other, one of them will speak out the "Damn couples!" slogan, then stand up and leave the table. Notice that leaving doesn't prevent him/her from possible future "8g"s.
2. If the ith person left, the (i-1)th and the (i+1)th are considered to be next to each other.
On the other hand, Wyest wouldn't like to see people become too few since she likes it to be noisy. All the members know this, however, to show their loyalty for the club, they try to make leaving people as many as possible, based on the already announced "8g"s and those not yet to be. Wyest also knows what they're planning, so now she wants to know at most how many people can remain, if she carefully chooses the "8g" to announce each minute. Could you help her find it out?
Input
The first line of each case will contain two integers n (2 <= n <= 500) and m (0 <= m <= C(n, 2)), indicating the number of persons and the number of "8g"s in the list. People are indexed from 0 to n - 1 and they always sit in increasing order. The following m lines each contains two integers a and b, meaning a "8g" between a and b. Proceed to the end of file.
Output
For each case, print one line containing the maximum number of people that can remain in total.
Sample Input
3 2
0 1
1 2
3 1
0 2
Sample Output
1
3
思路:
1 可以把不相邻的先宣布,所以不相邻的不纳入考虑,这时只剩下相连的几片了,任务就是求这几片的某种分割使得留下的人最多,只需要分类统计,关注这些相连片的大小即可
2 因为这些点都必须是孤立的所以就直接设dp[i]为使i相互独立所需删去点数,对一个小于i的点集j,dp[i]=max(dp[i-j]+dp[j-1]+1,dp[i-j-1][j]+1)(FFF团员取最大值),那么对于所有j,Wyest取其中的最小值,也就是dp[i]=min(dp[i],max(dp[i-j]+dp[i-j]+1,dp[i-j-1][j]+1))
3 这道题如果按照我最初的思路,直接dp原图而不是分类统计,那么反而会很麻烦
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
int dp[];
int n,m;
bool heap[]; int main(){
while(scanf("%d%d",&n,&m)==){
memset(dp,,sizeof(dp));
memset(heap,,sizeof(heap));
int f,t;
for(int i=;i<m;i++){
scanf("%d%d",&f,&t);
if(t<f)swap(f,t);
if(t-f==){
heap[f]=true;
}
}
dp[]=;
dp[]=;
dp[]=;
for(int i=;i<=n;i++){
dp[i]=0x7ffffff;
for(int j=;j<i;j++){
dp[i]=min(dp[i],max(dp[j-]+dp[i-j]+,dp[j]+dp[i-j-]+));
}
}
int ans=,cnt=;
for(int i=;i<n;i++){
if(!heap[i]||i==n-){
if(cnt>) ans+=dp[cnt];
cnt=;
}
else cnt++;
}
printf("%d\n",n-ans);
}
return ;
}
ZOJ 3161 Damn Couples 动态规划 难度:2的更多相关文章
- Damn Couples ZOJ - 3161
传送门 题目大意 N个人,M组关系,每次选一种关系,如果两个人相邻,则任意删除其中一个,否则不变.问最坏情况下最多能剩多少人. 分析 为了留的人最多,我们可以先将原来不相邻的关系全部说完,这样我们只需 ...
- [ZOJ 3662] Math Magic (动态规划+状态压缩)
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3662 之前写过这道题,结果被康神吐槽说代码写的挫. 的确,那时候 ...
- ZOJ 1234 Chopsticks(动态规划)
Chopsticks 题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=234 题目大意:给定n个筷子的长度,取k+8套筷 ...
- UVa LA 3882 - And Then There Was One 递推,动态规划 难度: 2
题目 https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_pr ...
- UVa LA 3695 - Distant Galaxy 前缀和,状态拆分,动态规划 难度: 2
题目 https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_pr ...
- ZOJ 3822 Domination 概率dp 难度:0
Domination Time Limit: 8 Seconds Memory Limit: 131072 KB Special Judge Edward is the headm ...
- ZOJ 3829 Known Notation 贪心 难度:0
Known Notation Time Limit: 2 Seconds Memory Limit: 65536 KB Do you know reverse Polish notation ...
- sgu 183. Painting the balls 动态规划 难度:3
183. Painting the balls time limit per test: 0.25 sec.memory limit per test: 4096 KB input: standard ...
- ZOJ ACM 1204 (JAVA)
毕业好几年了,对算法还是比較有兴趣,所以想又一次開始做ACM题.俺做题比較任意,一般先挑通过率高的题来做. 第1204题,详细描写叙述请參考,ZOJ ACM 1204 1)难度分析 这个题目,基本的难 ...
随机推荐
- CF 316E3 Summer Homework(斐波那契矩阵+线段树)
题目链接:http://codeforces.com/problemset/problem/316/E3 题意:一个数列A三种操作:(1)1 x y将x位置的数字修改为y:(2)2 x y求[x,y] ...
- 搭建最新版本的Android开发环境
只为成功找方法,不为失败找借口! Android开发学习总结(一)——搭建最新版本的Android开发环境 最近由于工作中要负责开发一款Android的App,之前都是做JavaWeb的开发,Andr ...
- vim的加密和解密?
vim中出现的错误提示含义: 参考: http://blog.csdn.net/u014599371/article/details/43955169 E488: trailing character ...
- Java8中数据流的使用
Code: @Data @ToString @NoArgsConstructor @AllArgsConstructor public class Employee { private Integer ...
- RedHat6使用CentOS yum源 换yum
yum 简单介绍一下 yum 主要功能是更方便的添加/删除/更新RPM 包,自动解决包的倚赖性问题,便于管理大量系统的更新问题. yum 可以同时配置多个资源库(Repository),简洁的配置文件 ...
- Leetcode ——Lowest Common Ancestor of a Binary Tree
Question Given a binary tree, find the lowest common ancestor (LCA) of two given nodes in the tree. ...
- 让低版本浏览器支持html5的标签
原理就是首先用js的createElement来创建,之后在使用 document.createElement('header'); <header> <hgroup>头部信息 ...
- Java异常类复习总结
个人理解先行: 异常类是当在程序出现问题时抛出的一个警告.提示你程序设计或者代码有存在错误的地方. 异常类和Error都继承自Throwable, Throwable继承自Object类. Runti ...
- Mac OSX 安装qemu
参考: Installing QEMU on OS X Homebrew Mac OSX 安装qemu 1.Install Homebrew: /usr/bin/ruby -e "$(cur ...
- UVa 10817 校长的烦恼
https://vjudge.net/problem/UVA-10817 题意: 某校有m个教师和n个求职者,需讲授s个课程,已知每人的工资c和能教的课程集合,要求支付最少的工资使得每门课都至少有两名 ...