最优策略一定可以把整个序列分成几段,每一段都是像这样子的

红线表示不可匹配。
所以可以排序后dp[i]表示前i个数最多删掉多少=max(f[j-1]+cal(j,i)) cal(j,i)表示j到i最多删掉多少个。注意是判断红线相连的两个是否能够匹配,而不是第i个和第i+k个能否匹配
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
 
#define ll long long
#define inf 1e9
#define eps 1e-8
#define md
#define N 55
using namespace std;
int a[N],f[N];
int cal(int l,int r)
{
for (int k=1;k<=r-l+1;k++)
{
for (int i=l,j=l+k;j<=r;i++,j++)
if (a[j]-a[i]>1) return k-1;
if (a[r-k+1]-a[l+k-1]<=1) return k-1;
}
return 0;
}
 
int main()
{
int n;
while (scanf("%d",&n)!=EOF)
{
for (int i=1;i<=n;i++) scanf("%d",&a[i]);
sort(a+1,a+n+1);
for (int i=1;i<=n;i++)
{
f[i]=0;
for (int j=1;j<=i;j++)
f[i]=max(f[i],f[j-1]+cal(j,i));
}
printf("%d\n",f[n]);
}
return 0;
}

bzoj 2708: [Violet 1]木偶相关推荐

  1. BZOJ 2708 [Violet 1]木偶 DP

    题意:链接 方法: DP 解析: 这题太神辣. 做梦都没想到DP啊,反正我不会. 先谈一个我有过的错的想法. 最小费用最大流? 能匹配的边连费用为1的,不能匹配的连费用为0的 跑最小费用最大流 然而这 ...

  2. BZOJ 2708 木偶

    #include <bits/stdc++.h> using namespace std; const int N=55; int n; int a[N],f[N];inline bool ...

  3. [Luogu P4168] [BZOJ 2724] [Violet]蒲公英

    洛谷传送门 BZOJ传送门 题目背景 亲爱的哥哥: 你在那个城市里面过得好吗? 我在家里面最近很开心呢.昨天晚上奶奶给我讲了那个叫「绝望」的大坏蛋的故事的说!它把人们的房子和田地搞坏,还有好多小朋友也 ...

  4. bzoj 2724[Violet 6]蒲公英

    2724: [Violet 6]蒲公英 Time Limit: 40 Sec  Memory Limit: 512 MB Submit: 2630  Solved: 920 [Submit][Stat ...

  5. BZOJ 2716: [Violet 3]天使玩偶

    2716: [Violet 3]天使玩偶 Time Limit: 80 Sec  Memory Limit: 128 MB Submit: 1473  Solved: 621 [Submit][Sta ...

  6. Bzoj 2724: [Violet 6]蒲公英(分块)

    2724: [Violet 6]蒲公英 Time Limit: 40 Sec Memory Limit: 512 MB Description Input 修正一下 l = (l_0 + x - 1) ...

  7. bzoj 2724: [Violet 6]蒲公英(分块预处理)

    2724: [Violet 6]蒲公英 Time Limit: 40 Sec  Memory Limit: 512 MB Submit: 2464  Solved: 848 [Submit][Stat ...

  8. BZOJ 2709 Violet 1 迷宫花园

    2709: [Violet 1]迷宫花园 Time Limit: 5 Sec  Memory Limit: 128 MB Submit: 976  Solved: 340 [Submit][Statu ...

  9. BZOJ 2716 Violet 3 天使玩偶

    2716: [Violet 3]天使玩偶 Time Limit: 80 Sec  Memory Limit: 128 MB Submit: 2145  Solved: 928 [Submit][Sta ...

最新文章

  1. python好难找工作_Python 太难找工作了
  2. Flutter 2 源码阅读
  3. python分支语句_Python中分支语句与循环语句实例详解
  4. Windows下编译配置Caffe的GPU版本
  5. Sublime+ZenCoding的使用
  6. 更改重做日志(redolog)文件的大小
  7. k均值聚类+基于核的k均值聚类+C++实现
  8. Android开发 MeasureSpec介绍
  9. 什么是WBS分解法?
  10. url编码 java_java中的url 编码与解码
  11. 【已解决】ipa降级教学 苹果旧版APP下载
  12. masm编译.asm文件报错fatal errorA1000: cannot open file
  13. 将QQ语音的slk格式转化为wma
  14. 纯MSDOS操作系统下的计算机重启与关机
  15. Java Swing 制作一个Pong小游戏
  16. 计算机在服装生产中的应用情况,【服装设计论文】服装设计中计算机信息技术的运用(共1730字)...
  17. ubuntu 安装chrome并禁止提示更新
  18. Wormhole流程搭建踩坑总结(一)
  19. lda主题模型 python_主题模型LDA
  20. 【单片机】电子音乐播放器的设计与制作(说明书)

热门文章

  1. 发现自己很失败。。。
  2. allegro skill 选择和获取函数
  3. WPS公式和字体对不齐
  4. 根据目标检测结果裁剪bbox保存到本地,python,opencv
  5. 四川一度智信:拼多多活动报名规则解读
  6. 60万奖金“人脸攻防大战”,全部进阶妙招奉上丨独家公开课实录(3)
  7. 聊聊Kafka中值得我们学习的优秀设计
  8. Systrace 流畅性实战 2 :案例分析: MIUI 桌面滑动卡顿分析
  9. Python数据分析与应用_从数据获取到可视化题库及答案
  10. 爱笑程序员-笑话10则