先排序,再去重。去重之后数据量小于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相关推荐

  1. dp,sp,px相互转化

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

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

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

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

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

  4. dp cf 20190615

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

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

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

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

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

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

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

  8. 喵哈哈村的魔法考试 Round #1 (Div.2) 题解源码(A.水+暴力,B.dp+栈)

    A.喵哈哈村的魔法石 发布时间: 2017年2月21日 20:05   最后更新: 2017年2月21日 20:06   时间限制: 1000ms   内存限制: 128M 描述 传说喵哈哈村有三种神 ...

  9. 尼克的任务 dp 洛谷1280

    蒟蒻表示老久没看过dp题目了,,挺水的一道dp题目都没想出来,,, 首先设dp[i]表示从开始到i时间的最大空闲时间,用vector to[x] 表示从x点开始的任务结束时间,cnt[x]表示从x开始 ...

  10. BNUOJ 52305 Around the World 树形dp

    题目链接: https://www.bnuoj.com/v3/problem_show.php?pid=52305 Around the World Time Limit: 20000msMemory ...

最新文章

  1. 如何对linux镜像md5,Linux系统如何校验SHA1和MD5
  2. Oracle dump 分析secondary key
  3. 【跃迁之路】【685天】程序员高效学习方法论探索系列(实验阶段442-2019.1.4)...
  4. bzoj2333[SCOI2011]棘手的操作
  5. Acwing 307. 连通图
  6. Android广播接实现电话的监听(电话的状态,拦截)
  7. vue组件样式穿透种类 /deep/ ::v-deep >>>。the >>> and /deep/ combinators have been deprecated. Use :deep() in
  8. Odoo10参考系列--Odoo指导方针
  9. 通过fork进程爆破canary
  10. Atom:一些有用的Packages和插件
  11. mysql提权马免杀_webshell/牛逼免杀提权隐藏大马.asp at master · tennc/webshell · GitHub...
  12. python身份证号真假验证_【趣味案例】用python制作全国身份证号验证及查询系统...
  13. 火狐浏览器解除端口限制
  14. Go语言开发工具 LiteIDE X27 发布
  15. mtatlas mysql_MHA-Atlas-MySQL高可用(下)
  16. Spring Boot集成阿里云视频点播服务的过程记录
  17. Unity3D-iOS创建本地视频
  18. 启动电脑QQ遇到QQ安全防护进程,且Windows无法启动QPCore Server
  19. JSONObject转换json时出现nameValuePair
  20. linux怎样查看当前文件目录位置

热门文章

  1. 数据分析师说坐飞机安全么
  2. 美国加拿大结婚证公证及使馆认证流程时间用于国内法院离婚
  3. 植发搞笑图片_搞笑:终于找到原图了!像不像?
  4. catia二次开发:函数
  5. __ieee80211_data_to_8023
  6. pandas处理时序数据
  7. C++关于函数声明定义的位置
  8. python使用gdal读写BIP、BSQ数据格式tif及相互转换
  9. 七年级上册计算机工作计划,七年级上册班主任工作计划
  10. C数据结构排序算法——希尔排序法用法总结(转http://www.cnblogs.com/skywang12345/p/3597597.html)...