Hdu--5064(DP)
2014-10-15 22:36:29
思路:挺好的一道动规题,需要仔细分析。怒粘一篇std题解。
1003 Find Sequence 首先考虑解的结构一定是C1,C1,…,C1,C2,C3,…,Cm这种形式,其中满足C1<C2<C3<…<Cm 所以对a1,a2,a3,…,an去重后从小到大排序得到c1,c2,c3,…,cx其中x是sqrt(M)级别的,用DP[i][j]表示以ci和cj结尾的满足条件的最长序列 首先初值化 DP[i][i]=count(ci) 即ci在原序列中的个数。 而dp[i][j]=max(dp[k][i] 其中k≤i还满足ci−ck≤cj−ci)+1 这样的复杂度是 O(x^3),在题中x最大为1000级别所以会超时,要使用下面优化 因为 dp[i][j]=max(dp[k][i] 其中k≤i还满足ci−ck≤cj−ci)+1 dp[i][j+1]=max(dp[k][i] 其中k≤i还满足ci−ck≤cj+1−ci)+1 注意到cj+1>cj 所以满足ci−ck≤cj−ci的dp[k][i]必然满足ci−ck≤cj+1−ci因而不必重复计算 即最后复杂度可以为O(x^2).
1 /************************************************************************* 2 > File Name: 1003.cpp 3 > Author: Nature 4 > Mail: 564374850@qq.com 5 > Created Time: Sat 11 Oct 2014 08:42:37 PM CST 6 ************************************************************************/ 7 8 #include <cstdio> 9 #include <cstring> 10 #include <cstdlib> 11 #include <cmath> 12 #include <vector> 13 #include <map> 14 #include <set> 15 #include <queue> 16 #include <iostream> 17 #include <algorithm> 18 using namespace std; 19 #define lp (p << 1) 20 #define rp (p << 1|1) 21 #define getmid(l,r) (l + (r - l) / 2) 22 #define MP(a,b) make_pair(a,b) 23 typedef long long ll; 24 const int INF = 1 << 30; 25 const int maxn = 1 << 12; 26 27 int val[1 << 22],c[maxn],n,m,t; 28 int dp[maxn][maxn]; 29 30 int main(){ 31 scanf("%d",&t); 32 while(t--){ 33 memset(dp,0,sizeof(dp)); 34 scanf("%d%d",&n,&m); 35 for(int i = 1; i <= n; ++i) scanf("%d",&val[i]); 36 sort(val + 1,val + n + 1); 37 int cur = 1; 38 c[cur] = 1; 39 for(int i = 2; i <= n; ++i){ 40 if(val[i] == val[cur]) ++c[cur]; 41 else{ 42 val[++cur] = val[i]; 43 c[cur] = 1; 44 } 45 } 46 int ans = 0; 47 for(int i = 1; i <= cur; ++i) dp[i][i] = c[i]; 48 for(int i = 1; i <= cur; ++i){ 49 int k = i,tmax; 50 tmax = dp[i][i]; 51 ans = max(ans,tmax); 52 for(int j = i + 1; j <= cur; ++j){ 53 for(; k > 0 && val[i] - val[k] <= val[j] - val[i]; --k){ 54 tmax = max(tmax,dp[k][i] + 1); 55 } 56 dp[i][j] = tmax; 57 ans = max(ans,tmax); 58 } 59 } 60 printf("%d\n",ans); 61 } 62 return 0; 63 }
转载于:https://www.cnblogs.com/naturepengchen/articles/4027630.html
Hdu--5064(DP)相关推荐
- hdu 2224(dp)
hdu 2224 (1)题意: 从1找一条到n的路径(路径上的前一个节点的编号小于后一个节点的编号), 然后找一条从n到1的路径,(路径上的前一个节点的编号大于后一个节点的编号)要求这两条路径遍历所有 ...
- hdu 5534(dp)
Input The first line contains an integer T indicating the total number of test cases. Each test case ...
- hdu 2155(dp)
小黑的镇魂曲 Time Limit: 5000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Problem D ...
- HDU 2571(dp)题解
命运 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submiss ...
- HDU 4489(DP)
http://acm.hdu.edu.cn/showproblem.php?pid=4489 解题思路这里已经说的很清楚了: http://blog.csdn.net/bossup/article/d ...
- 跳打开hdu 1208 (DP)
新手发帖,很多方面都是刚入门,有错误的地方请大家见谅,欢迎批评指正 点击打开链接 /* DP ,有点水,直接码代. map[ i ][ j ]表现跳几格 dp [ i ][ j ] 表现有几种条法 ...
- hdu 1024(dp)
传送门:Max Sum Plus Plus 题意:从n个数中选出m段不相交的连续子段,求这个和最大. 分析:经典dp,dp[i][j][0]表示不取第i个数且前i个数分成j段达到的最优值,dp[i][ ...
- hdu 3466(dp)
讲解博客 针对单个物品好理解贪心策略,两个物品相对比的思路不易理解. #include<cstdio> #include<iostream> #include<cstri ...
- HDU 2577(DP)
题意:要求一个字符串输入,按键盘的最少次数.有Caps Lock和Shift两种转换大小写输入的方式 思路:用dpa与dpb数组分别记录Caps Lock的开关状态,dpa表示不开,dpb表示开 代码 ...
- HDU6578 2019HDU多校训练赛第一场 1001 (dp)
HDU6578 2019HDU多校训练赛第一场 1001 (dp) 传送门:http://acm.hdu.edu.cn/showproblem.php?pid=6578 题意: 你有n个空需要去填,有 ...
最新文章
- 独家 | 忘记波士顿动力公司。这个机器人可以自学走路
- Cnyunwei-Cacti+Nagios安装说明
- warning modified in the future
- linux基础系统命令大全
- SpringBoot2.0 基础案例(13):基于Cache注解模式,管理Redis缓存
- cuda8 cuda9 cudnn 安装与卸载
- Spring Boot:Consider defining a bean of type ‘*.*.*‘ in your configuration解决方案
- POJ 3250:Bad Hair Day 好玩的单调栈
- python open r/rb
- RJ45口线序的理解
- 用python画雪花飘落_故宫下雪了!我花了45秒,用Python给它画了一组手绘图
- 预应力内力计算时作用机理(纠结好久的问题orz)
- 计算机公式加法A C,概率公式c怎么计算
- RTX 3060Ti和rtx2080Super的区别
- SVN入门必备教程 一看就懂
- 【c++】factory的使用:create和destory,以cicadaplayer的render实现为例
- opencv-python 小白笔记(3)
- 浏览器禁用cookie后session还能用吗?cookie与session区别
- 数据库内外联接查询语句
- 荣耀note10无缘鸿蒙,赵明确认荣耀NOTE10 真机参数疑似全曝光!
热门文章
- 总体分布概况符合无界约翰逊分布(johnsonsu)的情况
- java短语音聊天室_实现一个简单的语音聊天室(多人语音聊天系统)
- html入门教程推荐,html入门教程:8个html零基础入门教程推荐
- MQ 是什么?为什么使用?
- 计算机丢失mscvr,教大家计算机丢失Msvcr100.dll的解决方法
- 电子商务平台如何给商户结算?
- 一、恒生电子面试 (校招)
- 伽罗华域(Galois Field,GF,有限域)乘法运算
- java jersey,java Jersey
- 全球与中国航天工业注塑机市场深度研究分析报告