ZOJ3161
朴素动态规划
ZOJ3161
题意:(严重标题党)老板不想让客人走,客人不想留,客人按顺序排好,老板抽8g(书上翻译成八卦,神翻译),抽到的
如果相邻,其中一个人由客人决定离开,求最后黑心的老板最多能让多少人留下。
输入:
n(客人个数),m(8g关系对数)
a(客人a),b(客人b)(m行)
输出:
T(最多留下的人数)
思路:之前看题目的时候看懂了,但压根想不出来怎么用dp做,因为我考虑到既然老板要求最多人,而且走人的时候又由客人来选择谁走,那么情况应该很复杂(后来证明我想多了),书上的算法分析是这样说的,整个序列可以分成一些独立的部分,每一个部分相邻的两个人都有8g,并且互不影响(当时就一直在纠结这里),然后我想了下,如果可以分成很多序列的话,要做预处理,先解出F[i]这个状态i个人这样的序列有多少,用数组存放,然后dp,dp方程其实就是判定i个人状态下,
最多有多少个人能留下来,如果我们假设枚举的是第j个人,那么相邻的就是j和j+1,所以如果走的是j,j-1和i-j代表的就是除去j后的状态,而j和i-(j+1)就是除去j+1后的状态,选取较小的和状态i比较,然后最大的就是最优的结果。最后因为dp保存的是单个序列下能留下的最大人数,所以前面预处理的数组要用上。
#include<iostream>
#include <stdio.h>
#include <cstring>
#include <cmath>
using namespace std;
#define MAX 505
int F[MAX];
int flag[MAX];
int n,m;
int main()
{ int index_t[MAX][MAX];
while(scanf("%d%d",&n,&m)!=EOF)
{
memset(flag,0,sizeof(flag));
memset(index_t,0,sizeof(index_t));
memset(F,0,sizeof(F));
for(int i=1; i<=m; i++)
{
int a,b;
scanf("%d%d",&a,&b);
if(abs(a-b)==1)
{
index_t[a+1][b+1]=1;
index_t[b+1][a+1]=1;//预处理
}
}
for(int i=1; i<=n; i++)
{
int count=1;
while(index_t[i][i+1])
{
count++;
i++;
}
flag[count]++;
}
F[0]=0;
F[1]=1;
F[2]=1;
F[3]=1; for(int i=4; i<=n; i++)
for(int j=1; j<i; j++)
F[i]=max(F[i],min(F[j]+F[i-j-1],F[j-1]+F[i-j])); int ans=flag[1];
for(int i=2; i<=n; i++)
ans+=flag[i]*F[i];
printf("%d\n",ans);
}
return 0;
}
ZOJ3161的更多相关文章
- zoj3161 Damn Couples
不想打题面了,题面戳这里 这道题目的模型转换地有点猛.首先我们肯定需要让老板把那些不相邻的人的卡牌放在前面,这样他们就作废了.然后剩下的卡牌就都是相邻人之间的了.我们就可以把这个序列分成若干个联通块, ...
随机推荐
- bc命令详解与实例
bc: bc 是一种高精度的可交互执行的计算机语言.它在一些浮点数的运算中应用广泛. 一般情况下我们直接输入 bc ,便可进入其工作环境.当然,它还有其他的参数 -h 显示帮助信息并退出 -i 强制进 ...
- jQuery中事件冒泡问题及处理
在为一个元素添加事件时,经常会出现的一个问题就是事件冒泡.例如在div中嵌套了一个span元素,为div和span都添加了事件点击,如果点击span会导致span和div元素相继触发监听事件.顺序是从 ...
- AutoMapper DynamicMap天坑
如果调用Mapper.DynamicMap该方法,会将所有映射重置为默认映射,即以字段名匹配映射.
- [HTML5 Canvas学习] 基础知识
HTML5 canvas元素通过脚本语言(通常是Javascript) 绘制图形, 它仅仅是一个绘图环境,需要通过getContext('2d')方法获得绘图环境对象,使用绘图环境对象在canvas元 ...
- python Template中substitute()的使用
在python中Template可以将字符串的格式固定下来,重复利用. Template属于string中的一个类,要使用他的话可以用以下方式调用: from string import Templa ...
- a标签的 target 使用
<a target="_blank" href="www.baidu.com" onclick="return test()"> ...
- Scut:通用配置管理器
1. 配置节 ConfigSection private List<ConfigNode> _configNodes; public class ConfigNode { public C ...
- JQuery整体大纲
今天公司放假,闲的无聊,就总结了一套JQuery的笔记,我感觉更像是大纲,在这里跟大家分享一下,这是我的成果: 这个就是我的劳动成果了,说实话真是不容易,为了做这个东西,翻阅了很多以前做过的笔记,发现 ...
- struts2整合spring出现的Unable to instantiate Action异常
在struts2整合spring的时候,完全一步步按照官方文档上去做的,最后发现出现 Unable to instantiate Action,网上一搜发现很多人和我一样的问题,配置什么都没有错误,就 ...
- Qt:截图工具,任意大小矩形截图、全屏截图
http://blog.csdn.net/rl529014/article/details/53146440