hdu5064 dp
先排序,再去重。去重之后数据量小于3000
然后用dp[i][k]表示以i和k两个节点作为结尾的能形成的符合题意的串的长度。
之后更新的时候,由于dp[i][k+1]肯定大于等于dp[i][k],因此向前找的时候,dp[i][k]停止的位置可以作为dp[i][k+1]开始寻找的位置,持续向前找。
注意细节,附代码:
#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>using namespace std;int dp[3005][3005];
int v[(1<<22)+10];
int s[3005];
int n,m;
int cnt;
int ans;int max(int a,int b)
{return a>b?a:b;
}void solve()
{ans=0;for (int i=1;i<=m;i++){ans=max(ans,s[i]);for (int k=i+1;k<=m;k++)dp[i][k]=s[i]+1;}for (int i=1;i<=m;i++) //枚举i{int j=i-1; //j代表dp[j][i]中的jint k=i+1;while (k<=m) //枚举k{if (j!=0&&v[k]-v[i]>=v[i]-v[j]) //j==0,说明已经找到头,说明v[k]-v[i]>=v[i]-v[1],那么便不必再往前找了{dp[i][k]=max(dp[i][k],dp[j][i]+1);j--;}else{dp[i][k+1]=dp[i][k];ans=(dp[i][k],ans); //记录答案k++;}}}
}int main()
{int T;scanf("%d",&T);while (T--){scanf("%d%d",&n,&m);for (int i=1;i<=n;i++)scanf("%d",&v[i]);if (n==1){printf("1\n");continue;}sort(v+1,v+n+1);cnt=0;int pre=1;s[0]=1;ans=0;for (int i=2;i<=n;i++){if (v[i]!=v[i-1]){cnt++;s[cnt]=i-pre;pre=i;}}s[++cnt]=n-pre+1;m=unique(v,v+n+1)-(v+1);if (m==1) //想省点时间,结果发现没用{printf("%d\n",s[1]);continue ;}solve();printf("%d\n",ans);}
}
hdu5064 dp相关推荐
- dp,sp,px相互转化
方法一: public int sp2px(float sp) {return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, ...
- [JS][dp]题解 | #打家劫舍(一)#
题解 | #打家劫舍(一)# 题目链接 打家劫舍(一) 题目描述 描述 你是一个经验丰富的小偷,准备偷沿街的一排房间,每个房间都存有一定的现金,为了防止被发现,你不能偷相邻的两家,即,如果偷了第一家, ...
- HDU 2084 数塔(DP)(JAVA版)
数塔 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submiss ...
- dp cf 20190615
A. Timofey and a tree 这个不算是dp,就是一个思维题,好难想的思维题,看了题解才写出来的, 把点和边分开,如果一条边的两个点颜色不同就是特殊边,特殊边两边连的点就叫特殊点, 如果 ...
- BZOJ 1003[ZJOI2006]物流运输(SPFA+DP)
Problem 1003. -- [ZJOI2006]物流运输 1003: [ZJOI2006]物流运输 Time Limit: 10 Sec Memory Limit: 162 MB Submit ...
- [NOI2005]聪聪与可可(期望dp)
题意:给一张无向图,有一只猫和一只老鼠,猫每秒会向老鼠的方向移动两个单位,若它们的距离为一,那么只会移动一个单位,老鼠会等概率向周围移动一步或不动,求猫抓到老鼠的期望时间. Solution luog ...
- Codeforces 903F Clear The Matrix(状态压缩DP)
题目链接 Clear The Matrix 题意 给定一个$4 * n$的矩形,里面的元素为$'.'$或$'*'$.现在有$4$种正方形可以覆盖掉$'*'$,正方形的边长分别为$1,2,3,4$. 求 ...
- 喵哈哈村的魔法考试 Round #1 (Div.2) 题解源码(A.水+暴力,B.dp+栈)
A.喵哈哈村的魔法石 发布时间: 2017年2月21日 20:05 最后更新: 2017年2月21日 20:06 时间限制: 1000ms 内存限制: 128M 描述 传说喵哈哈村有三种神 ...
- 尼克的任务 dp 洛谷1280
蒟蒻表示老久没看过dp题目了,,挺水的一道dp题目都没想出来,,, 首先设dp[i]表示从开始到i时间的最大空闲时间,用vector to[x] 表示从x点开始的任务结束时间,cnt[x]表示从x开始 ...
- BNUOJ 52305 Around the World 树形dp
题目链接: https://www.bnuoj.com/v3/problem_show.php?pid=52305 Around the World Time Limit: 20000msMemory ...
最新文章
- 如何对linux镜像md5,Linux系统如何校验SHA1和MD5
- Oracle dump 分析secondary key
- 【跃迁之路】【685天】程序员高效学习方法论探索系列(实验阶段442-2019.1.4)...
- bzoj2333[SCOI2011]棘手的操作
- Acwing 307. 连通图
- Android广播接实现电话的监听(电话的状态,拦截)
- vue组件样式穿透种类 /deep/ ::v-deep >>>。the >>> and /deep/ combinators have been deprecated. Use :deep() in
- Odoo10参考系列--Odoo指导方针
- 通过fork进程爆破canary
- Atom:一些有用的Packages和插件
- mysql提权马免杀_webshell/牛逼免杀提权隐藏大马.asp at master · tennc/webshell · GitHub...
- python身份证号真假验证_【趣味案例】用python制作全国身份证号验证及查询系统...
- 火狐浏览器解除端口限制
- Go语言开发工具 LiteIDE X27 发布
- mtatlas mysql_MHA-Atlas-MySQL高可用(下)
- Spring Boot集成阿里云视频点播服务的过程记录
- Unity3D-iOS创建本地视频
- 启动电脑QQ遇到QQ安全防护进程,且Windows无法启动QPCore Server
- JSONObject转换json时出现nameValuePair
- linux怎样查看当前文件目录位置
热门文章
- 数据分析师说坐飞机安全么
- 美国加拿大结婚证公证及使馆认证流程时间用于国内法院离婚
- 植发搞笑图片_搞笑:终于找到原图了!像不像?
- catia二次开发:函数
- __ieee80211_data_to_8023
- pandas处理时序数据
- C++关于函数声明定义的位置
- python使用gdal读写BIP、BSQ数据格式tif及相互转换
- 七年级上册计算机工作计划,七年级上册班主任工作计划
- C数据结构排序算法——希尔排序法用法总结(转http://www.cnblogs.com/skywang12345/p/3597597.html)...