题意:

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. centos7 更改网络后 无法重启network (解决办法)

    今天由于用nat与本地局域网冲突,可能和之前ENSP搭建时虚拟机冲突造成 然后修改了VMnet8的ip,网关,DNS 同时更改虚拟网络编译器与VMnet8保持相同 进入虚拟机,更改/etc/sysco ...

  2. 5.不用拷贝的对象可以用ref

    #include <iostream> #include <string> #include <boost/bind.hpp> #include <boost ...

  3. spring boot整合mail

    1.添加依赖 </dependency> <dependency> <groupId>org.springframework.boot</groupId> ...

  4. jsLittle源码封装对象合并

    JSLi.extend = JSLi.fn.extend = function () { var options, name, src, copy, target = arguments[0],i = ...

  5. 51Nod 最长的循环节(打表预处理)

    正整数k的倒数1/k,写为10进制的小数如果为无限循环小数,则存在一个循环节,求<=n的数中,倒数循环节长度最长的那个数,假如存在多个最优的答案,输出所有答案中最大的那个数.     1/6= ...

  6. salt的grains

    grains作用: 1.匹配 minion 2.收集信息 (每次重启minion才会收集) grains 数据存储在minion端. salt '*' grains.ls salt '*' grain ...

  7. vue实现文字上下滚动

    实现文字的上下滚动使用positon的relative的top属性,通过动态改变top来实现相关内容的更换,通过transion来实现相关的动画效果, 相关的dom内容 <template> ...

  8. Python 读写文件 小应用:生成随机的测验试卷文件

    去年学习了python的读写文件部分,了解了python读写的常用模块os.shelve,今天准备把课后作业试着自己做一下 目标:1)生成35份试卷.每个试卷有50道选择题 2)为了防止有学生作弊,需 ...

  9. 紫书 例题 10-28 UVa 1393(简化问题)

    这道题是对称的 所以只算"\", 最后答案再乘以2 然后每一条直线看作一个包围盒 枚举包围盒的长宽 有两种情况会重复 (1)包围盒里面有包围盒. 这个时候就是在一条直线上 那么我们 ...

  10. URAL 1513. Lemon Tale(简单的递推)

    写几组数据就会发现规律了啊. .但是我是竖着看的.. .还找了半天啊... 只是要用高精度来写,水题啊.就当熟悉一下java了啊. num[i] = 2*num[i-1]-num[i-2-k]. 15 ...