题意:

id=2708">链接

方法: DP

解析:

这题太神辣。

做梦都没想到DP啊,反正我不会。


先谈一个我有过的错的想法。

最小费用最大流?

能匹配的边连费用为1的,不能匹配的连费用为0的

跑最小费用最大流

然而这显然是错的。我还思考半天。

由于这道题强制假设还用费用为1的边。那必须先跑费用为1的边。

这样就不符合辣

至于自己改下这个写法?

尝试过- -。然而卡在哪里呢?

一堆费用为1的边你先跑那个呢?- -评估?评估函数怎么写啊,我不会啊。

所以这个写法显然弃疗。


然而我还曾有过一个想法。

贪心?

对于每个值pi来说。我们统计一下Num,然后呢

我们来考虑拿最大的Num。最大的Num怎么拿呢?

让他没有匹配的对象,或是尽可能的使他能匹配的对象都跟别人匹配。然后Num-他还能匹配的对象就是这一轮操作的答案。

每匹配一次更新一遍,直到Num都为0

只是这正确性有点可怜…

总感觉是错的。

好像上一个方法的错误部分就能卡住这个?

应该吧,反正我没实现。

但总感觉贪心有路子,可是我不会啊。


正解

正解好神并且好简洁啊。

排一下序

然后设f[i]为前i个最多扔多少个。

f[i]=max(f[j],cal(j+1,i))

这个cal是什么呢

我们枚举能扔多少个。

然后验证,

并且验证的时候是依照什么样子匹配呢?

有序之后就这么匹配即可辣

正确性?不会证明啊,应该看起来是对的

复杂度?n这么小谈什么复杂度。


15.10.27 Update:

对于例子 1 2 3 3 4 5的解释。

假设依照上述分段的思想。

可能会这样匹配

1 2 3 3 4 5

2 3 1 4 5 3

这种话。木偶会剩下 3 5。而提线剩下1 3。还能够继续匹配。

并不符合上述解法。

事实上仅仅在于一个点上-》就是不同的段上的匹配方式是互逆的。

1 2 3

2 3 1 依照这种方式。

3 4 5

5 3 4 仅仅要是上一段的逆序匹配即可,就不会出现矛盾的情况。

代码:

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#define N 55
using namespace std;
int f[N];
int a[N];
int n;
int cal(int x,int y)
{
for(int k=1;k<=y-x+1;k++)
{
for(int j=x;j<=y-k;j++)
if(abs(a[j]-a[j+k])>1)return k-1;
if(abs(a[x+k-1]-a[y-k+1])<=1)return k-1;
}
return y-x+1;
}
int main()
{
while(~scanf("%d",&n))
{
memset(f,0,sizeof(f));
for(int i=1;i<=n;i++)scanf("%d",&a[i]);
sort(a+1,a+n+1);
for(int i=1;i<=n;i++)
for(int j=0;j<i;j++)
f[i]=max(f[i],f[j]+cal(j+1,i));
printf("%d\n",f[n]);
}
}

BZOJ 2708 [Violet 1]木偶 DP的更多相关文章

  1. 二分+最短路判定 BZOJ 2709: [Violet 1]迷宫花园

    BZOJ 2709: [Violet 1]迷宫花园 Sample Input 5 ######### # # # # # # # #S# # ##### # # ## # # # ### ### ## ...

  2. Bzoj 1131[POI2008]STA-Station (树形DP)

    Bzoj 1131[POI2008]STA-Station (树形DP) 状态: 设\(f[i]\)为以\(i\)为根的深度之和,然后考虑从他父亲转移. 发现儿子的深度及其自己的深度\(-1\) 其余 ...

  3. [BZOJ 4332] [JSOI2012]分零食(DP+FFT)

    [BZOJ 4332] [JSOI2012]分零食(DP+FFT) 题面 同学们依次排成了一列,其中有A位小朋友,有三个共同的欢乐系数O,S和U.如果有一位小朋友得到了x个糖果,那么她的欢乐程度就是\ ...

  4. BZOJ 2720 [Violet 5]列队春游 ——期望DP

    很喵的一道题(我可不是因为看了YOUSIKI的题解才变成这样的) $ans=\sum_{x<=n}\sum_{i<=n} iP(L=i)$ 其中P(x)表示视线为x的概率. 所以只需要求出 ...

  5. BZOJ2708 [Violet 1]木偶

    首先想到的是贪心...肯定不对嘛...T T 然后发现其实是可以DP的...不过我们要先排序 令f[i]表示前i个木偶最坏要丢掉几个,则 f[i] = max(f[j] + calc(j + 1, i ...

  6. [BZOJ 1025] [SCOI2009] 游戏 【DP】

    题目链接:BZOJ - 1025 题目分析 显然的是,题目所要求的是所有置换的每个循环节长度最小公倍数的可能的种类数. 一个置换,可以看成是一个有向图,每个点的出度和入度都是1,这样整个图就是由若干个 ...

  7. BZOJ.1535.[POI2005]SZA-Template(KMP DP)

    BZOJ 洛谷 \(Description\) 给定一个字符串\(s\),求一个最短的字符串\(t\)满足,将\(t\)拼接多次后,可以得到\(s\).拼接是指,可以将\(t\)放在当前串的任意位置, ...

  8. BZOJ.4818.[SDOI2017]序列计数(DP 快速幂)

    BZOJ 洛谷 竟然水过了一道SDOI!(虽然就是很水...) 首先暴力DP,\(f[i][j][0/1]\)表示当前是第\(i\)个数,所有数的和模\(P\)为\(j\),有没有出现过质数的方案数. ...

  9. BZOJ.4559.[JLOI2016]成绩比较(DP/容斥 拉格朗日插值)

    BZOJ 洛谷 为什么已经9点了...我写了多久... 求方案数,考虑DP... \(f[i][j]\)表示到第\(i\)门课,还有\(j\)人会被碾压的方案数. 那么\[f[i][j]=\sum_{ ...

随机推荐

  1. thinkphp命名空间

    thinkphp命名空间 总结 1.只对函数,类,及const定义的常量有效,对define定义的常量无效 2.如果函数不是为了使用,那有什么意义呢 3.ThinkPHP将命名空间转化为了路径,比如n ...

  2. childNodes.length和form.length的不同

    我们知道,DOM里面提供了element.childNodes.length属性,childNodes 属性返回节点的子节点集合,以 NodeList 对象. 那么childNodes包含哪些节点呢? ...

  3. RHEL启动错误:Kernel panic - not syncing:Attempted to kill init!解决方案

    Virtual Box虚拟机启动RHEL系统报错,错误信息如下: 解决方案: 在GRUB引导界面按下e键,进入下图所示界面. 选择第二项,按下e键,进入编辑状态 在结尾追加enforcing=0,按下 ...

  4. ECNUOJ 2616 游黄山

    游黄山 Time Limit:1000MS Memory Limit:65536KB Total Submit:165 Accepted:52 Special Judge Description Po ...

  5. KM最大匹配 HDU 2255

    KM算法详解+模板 - wenr - 博客园  http://www.cnblogs.com/wenruo/p/5264235.html #include<iostream> #inclu ...

  6. ti-sdk-evm-am335x-05.07 uboot分析(MLO跳转到u-boot之前)

    --------------------------------------------------------------------------------                     ...

  7. iOS 画圆形头像

    demo下载地址:http://pan.baidu.com/s/1mgBf6YG _logoImageView.image = [self getEllipseImageWithImage:[UIIm ...

  8. abap选择屏幕上的button

    1.背景:近期在看sap的一些abapDemo,看了一个比較好用的功能.分享一下.希望对用到的兄弟有帮助,主要功能是:在选择屏幕上弹出一个小窗体.放一些button在上面,触发不同button,会处理 ...

  9. 当我们谈论Erlang Maps时,我们谈论什么 Part 1

         Erlang 添加 Maps数据类型并非非常突然,由于这个提议已经进行了2~3年之久,仅仅只是Joe Armstrong老爷子近期一篇文章Big changes to Erlang掀起不小了 ...

  10. Ehcache整合spring配置,配置springMVC缓存

    为了提高系统的运行效率,引入缓存机制,减少数据库访问和磁盘IO.下面说明一下ehcache和spring整合配置. 1.   需要的jar包 slf4j-api-1.6.1.jar ehcache-c ...