dp问题。

设f [ i ]表示前 i 个数里最多能扔多少个,f [ i ]=max(f [ i ], f [ j ]+find(j+1, i ));

这里的find表示从第j+1个数到第i个数最多扔掉几个,采用枚举扔的个数,若在扔的一堆中能互相配对,在没扔的一堆中任意两个不能配对,就是可行的。

#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
int n;
int a[2000];
int cmp(int a,int b)
{return a<b;
}
int f[2000];
int find(int st,int to)
{if(a[to]-a[st]<=1){return 0;}for(int i=1;i<=to-st+1;i++){for(int j=st+i;j<=to;j++){if(abs(a[j]-a[j-i])>1){return i-1;}}if(abs(a[st+i-1]-a[to-i+1])<=1){return i-1;}}return to-st+1;
}
int main()
{
//  freopen("puppet,in","r",stdin);
//  freopen("puppet.out","w",stdout);while(scanf("%d",&n)!=EOF){memset(f,0,sizeof(f));for(int i=1;i<=n;i++){scanf("%d",&a[i]);}sort(a+1,a+1+n,cmp);f[1]=0;for(int i=2;i<=n;i++){for(int j=0;j<i;j++){f[i]=max(f[j]+find(j+1,i),f[i]);}}printf("%d\n",f[n]);}return 0;
}

以下摘自他人博客:

其实dp很难逃出3种思路:
1、一维线性dp:每次考虑i时,选择最优子问题要么在i-1,要么在1...i-1里;
2、二维线性dp:考虑(i,j)子问题时,选择最优子问题要么在(i+1,j)、(i,j-1),要么在i<= k <=j,在k里;
3、树形dp:考虑i节点最优时,选择子节点最优,一般融合了01背包dp的双重dp。

bzoj2708木偶(dp)相关推荐

  1. 【DP】BZOJ2708 木偶

    分析: 将目标转化一下,变为:求互不矛盾的数值相邻的三元组的个数 为什么是三元组呢,是因为这样第一个一定不能选最后一个,所以内部是不会矛盾的.在最优条件下,然后所有没用到数都可以自己选择自己,这样是没 ...

  2. BZOJ 2708 [Violet 1]木偶 DP

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

  3. dp,sp,px相互转化

    方法一: public int sp2px(float sp) {return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, ...

  4. [JS][dp]题解 | #打家劫舍(一)#

    题解 | #打家劫舍(一)# 题目链接 打家劫舍(一) 题目描述 描述 你是一个经验丰富的小偷,准备偷沿街的一排房间,每个房间都存有一定的现金,为了防止被发现,你不能偷相邻的两家,即,如果偷了第一家, ...

  5. HDU 2084 数塔(DP)(JAVA版)

    数塔 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submiss ...

  6. dp cf 20190615

    A. Timofey and a tree 这个不算是dp,就是一个思维题,好难想的思维题,看了题解才写出来的, 把点和边分开,如果一条边的两个点颜色不同就是特殊边,特殊边两边连的点就叫特殊点, 如果 ...

  7. BZOJ 1003[ZJOI2006]物流运输(SPFA+DP)

    Problem 1003. -- [ZJOI2006]物流运输 1003: [ZJOI2006]物流运输 Time Limit: 10 Sec  Memory Limit: 162 MB Submit ...

  8. [NOI2005]聪聪与可可(期望dp)

    题意:给一张无向图,有一只猫和一只老鼠,猫每秒会向老鼠的方向移动两个单位,若它们的距离为一,那么只会移动一个单位,老鼠会等概率向周围移动一步或不动,求猫抓到老鼠的期望时间. Solution luog ...

  9. Codeforces 903F Clear The Matrix(状态压缩DP)

    题目链接 Clear The Matrix 题意 给定一个$4 * n$的矩形,里面的元素为$'.'$或$'*'$.现在有$4$种正方形可以覆盖掉$'*'$,正方形的边长分别为$1,2,3,4$. 求 ...

最新文章

  1. 线上分享会预告之三维模型检索技术介绍
  2. 《Python从小白到大牛》第4章 Python语法基础
  3. 树莓派linux驱动学习之LED控制
  4. Andriod anim scale中的属性介绍以及Animation类的属性
  5. Javascript笔记:(实践篇)从jQuery插件技术说起(上篇)
  6. python 线程类 threading.Thread.join() 方法 (自闭,不让别人进来了)
  7. 因子(Number_Of_Factors)
  8. [转]经典的C语言著作,“C语言四书五经”
  9. 很火的仿soul交友盲盒1.0全开源源码
  10. Linux进阶之进程与线程
  11. Centos安装Kafka集群
  12. Linux下安装了conda以后pychram无法使用
  13. 长沙IT培训学校有哪些?IT培训选线上还是线下?
  14. 计算机专业课911,2018年北京物资学院911计算机学科专业基础综合考研复习资料...
  15. 秦小明推荐书单+豆瓣金融TOP12 金融书籍
  16. Mysql orchestrator高可用
  17. 选中物体高亮显示(MR开发日志)
  18. python: 百度地图api爬虫
  19. Win10 如何进入WinRE模式?
  20. IDEA中DEBUG时断点变成灰色

热门文章

  1. 适合人工智能AI的编程语言有哪些 哪些语言适用于人工智能 人工智能开发语言排行榜
  2. 工作中要怎样与同事相处呢?
  3. pstack 跟踪进程栈
  4. Excel 日期公式识别--批量转格式Text To Be columns
  5. 10 大黑客专用的 Linux 操作系统
  6. git的使用(github篇)
  7. VMware中的虚拟机设置开启VT虚拟化 虚拟机中创建虚拟机
  8. 力扣772 基本计算器 III
  9. 深度神经网络(DNN)Deep Neural Networks 介绍
  10. 音频频谱显示-显示音频文件静态频谱图(一)