BZOJ2708: [Violet 1]木偶
来源:互联网 发布:php io阻塞 编辑:程序博客网 时间:2024/05/02 00:45
Portal
Sample Input
1
2
1
54
2
8 9
3
1 2 3
2
56 60
3
59 59 57
3
51 55 59
5
1 2 3 2 4
4
87 70 81 34
4
50 55 58 59
6
1 2 3 4 5 6
6
1 2 3 3 4 5
8
1 2 3 3 4 2 5 4
9
22 23 52 61 39 38 1 40 17
Sample Output
0
0
0
1
0
0
0
1
0
0
2
2
2
1
先排序
假如将木偶和提线分别对应放为两列,配对的相连。那么最优的答案应该是形如:
Cal过程枚举一条线跨越区间长度,然后检验。
过程看看代码意会一下。。
【代码】
#include <iostream>#include <cstdio>#include <algorithm>#define N 1000005#define mod 1000000#define INF 1e9using namespace std;typedef long long ll;int read(){ int x=0,f=1;char ch=getchar(); while(!isdigit(ch)){if(ch=='-') f=-1;ch=getchar();} while(isdigit(ch)){x=(x<<1)+(x<<3)+ch-'0';ch=getchar();} return x*f;} int n;int f[N],a[N]; int Cal(int x,int y){ for(int k=1;k<=y-x+1;k++) { if(abs(a[x+k-1]-a[y-k+1])<=1) return k-1; for(int i=k;i<=y-x;i++) if(abs(a[i+x]-a[i+x-k])>1) return k-1; } return y-x+1;}int main(){ while(scanf("%d",&n)!=EOF) { for(int i=1;i<=n;i++) a[i]=read(),f[i]=0; sort(a+1,a+1+n); 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]); } return 0;}
0 0
- BZOJ2708 [Violet 1]木偶
- BZOJ2708: [Violet 1]木偶
- 【bzoj2708】【Violet 1】【木偶】【dp】
- bzoj 2708: [Violet 1]木偶
- bzoj2708木偶(dp)
- [Violet 1]木偶 SRM308 DIV1 1000pt
- BZOJ 2708 [Violet 1]木偶 DP
- bzoj 2708 [Violet 1]木偶 dp 贪心
- [DP 思路题] BZOJ 2708 [Violet 1]木偶
- VIOLET
- 2709: [Violet 1]迷宫花园
- bzoj2709 [Violet 1]迷宫花园
- BZOJ2709: [Violet 1]迷宫花园
- BZOJ2709: [Violet 1]迷宫花园 二分+Spfa
- bzoj2709 [Violet 1]迷宫花园 二分+spfa
- [bzoj2709][Violet 1]迷宫花园 二分+spfa
- 美式木偶剧
- 我不想做木偶
- Robot Framework引入autoitlibrary显示红色问题
- 最简单的android studio2.3安装 ButterKnife 8.5.1版本方法,解放双手
- Vitamio 视频框架使用心得
- JSPatchPlatformSDK接入教程
- CodeForces
- BZOJ2708: [Violet 1]木偶
- study
- Android Studio 2.3 版本下select deployment target nothing to show
- JDK中环境变量path,classpath,JAVA_HOME的配置方法
- log4j与commons-logging,slf4j的关系
- overlapped I/O 运用详解
- wamp下phpmyadmin上传文件大小受到限制问题
- OGLES 程序和着色器间的数据传递
- C#学习问题集