题目:https://vjudge.net/contest/68966#overview

POJ2533

最长上升子序列,很平常的题,但是维持单调队列+二分还是值得一贴的,O(nlogn)

关键思想:出现在单调队列里的数都在当前接收的数之前,所以找到最小的比他大的数替换即可,而替换的位置其实就相当于它的DP[i],只是已经没有记录的必要了。如果是当前最大就放到最后,cnt++。

最后单调数组长度就是所求,并且数组内的数组成的就是最长上升序列。

(对萌新通俗点说,一个数比你先出现,还比你大,dp值还一样,那他肯定已经没用了)

#include<iostream>
#include<cstdio>
using namespace std;const int maxn = 1005;int Binary_Search(int *a,int left,int right,int element)//二分标准写法,用熟
{int l = left;int r = right;int mid;while(l < r){mid = (l + r) / 2;if(a[mid] <= element) l = mid + 1;elser = mid;}return l;
}int main()
{int m;int i;while(cin>>m){int t;int cnt;int a[maxn];cnt = 0;scanf("%d",&a[0]);cnt++; //一个元素插入队列 //cout<<cnt<<endl;for(i=1;i<m;i++){scanf("%d",&t);if(t > a[cnt-1]){a[cnt++] = t;}else{a[Binary_Search(a,0,cnt,t)] = t;}}printf("%d",cnt);}return 0;
}

HDU1114

背包题:经典背包求最大利益,这是求最小可能利益

所以,状态转移方程是这样:dp[j] = min(dp[j],dp[j-wei[i]]+val[i]);没必要贴代码

HDU1260

递推,姑且叫一维dp吧,不难,对当前人就两种选择,自己买,或者和上一个人一起买

所以dp[i][1]=dp[i-1][0]+y[i]-x[i-1];

dp[i][0]=min(dp[i-1][0],dp[i-1][1])+x[i];

dp[i][0]表示第i个人单独买票,dp[i][1]表示第i个人和前面的人一起买票。和以前一道题类似。也没必要贴代码

HDU1160

也是简单变形,先按照重量排序,然后找出LIS最长上升子序列就可以了。

排序,记录,回溯,操作略麻烦,而且是挺好的题,代码就贴出来。

#include<cstdio>
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<string.h>
using namespace std;
struct Mice{int w,v,id;
}mice[1010];
int dp[1010];
int pre[1010];
bool cmp(Mice a,Mice b)
{return a.w>b.w;
} int main()
{int s=0;while(scanf("%d%d",&mice[s].w,&mice[s].v)!=EOF){mice[s].id=s+1;s++;}sort(mice,mice+s,cmp);memset(pre,-1,sizeof(pre));for(int i=0;i<s;i++)dp[i]=1;for(int i=0;i<s;i++)for(int j=0;j<i;j++){if(mice[j].w>mice[i].w&&mice[j].v<mice[i].v){if(dp[i]<dp[j]+1){dp[i]=dp[j]+1;pre[i]=j;//注意记录}}}int ans=0;int p;for(int i=0;i<s;i++){if(dp[i]>ans){ans=dp[i];p=i;}       }printf("%d\n",dp[p]);while(p!=-1)//回溯{printf("%d\n",mice[p].id);p=pre[p];}
}

dp打开思路2:POJ2533 HDU1114 HDU1260 HDU1160(水题不水)相关推荐

  1. dp打开思路4:POJ1189 UVA12511 HDU2845 HBCPC K

    POJ1189 http://poj.org/problem?id=1189 怎么说呢,不算难,但是容易出问题 我一开始的思路是,第一个钉子只有一种情况,然后下面每个钉子:左边有钉子就加左边的情况数, ...

  2. dp打开思路3:HDU1069 POJ3616 POJ1088

    HDU 1069 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1069 题意:把给定的长方体(不限)叠加在一起,叠加的条件是,上面一个长方体的长和宽都 ...

  3. dp打开思路:HDU1029 HDU1087 HDU1176 HDU1257 POJ1458(水题不水)

    题目:https://vjudge.net/contest/68966#overview HDU - 1029 题意:找出出现次数超过一半的数字 蠢思路:排序找中间 DP:扫一遍一个变量count记录 ...

  4. 洛谷P1352 没有上司的舞会(树形DP水题)

    题目描述 某大学有N个职员,编号为1~N.他们之间有从属关系,也就是说他们的关系就像一棵以校长为根的树,父结点就是子结点的直接上司.现在有个周年庆宴会,宴会每邀请来一个职员都会增加一定的快乐指数Ri, ...

  5. 梦幻星空PSD分层海报素材,通过临摹打开思路。

    临摹是学习的最好方法.不过临摹之前,自己要仔细观察,并把作品分解:然后按照自己的喜 欢寻找类似素材:再从背景开始慢慢搭建即可. 优图网带来梦幻星空PSD分层海报素材,通过临摹打开思路. 海洋桥梁漫天星 ...

  6. 关于一道你们眼中的水题 Windy数 的乱写(数位dp)

    啊一道水题有什么好说的 上课听不懂,下课泪两行. 有的人什么套路都会,我.. 只能可怜巴巴的抄代码,然后自己总结,顺(zhu)便(yao)颓博客 1.递推dp的思路做到一半死了,怎么也想不出来如何处理 ...

  7. 【dp水题】HDU5079+LGP2051

    HDU5079 Square [题目大意] 给你一个n×n(n≤8)n \times n(n≤8)的棋盘,上面有一些格子必须是黑色,其它可以染黑或者染白,对于一个棋盘,定义它的优美度为它上面最大的连续 ...

  8. N等于三个质数求解题目--dp泄露研究--题目(m的高位攻击刷题)--大小循环统计出现次数题--Dvwa文件上传(2级)

    目录 N等于三个质数求解题目 dp泄露研究 题目(m的高位攻击刷题) 大小循环统计出现次数题 Dvwa文件上传(2级) N等于三个质数求解题目 分析题目发现有三个质数,三个质数之间并有什么关系.n等于 ...

  9. 寒假每日一题题解(1.29)摘花生(DP水题)

    摘花生 Hello Kitty想摘点花生送给她喜欢的米老鼠. 她来到一片有网格状道路的矩形花生地(如下图),从西北角进去,东南角出来. 地里每个道路的交叉点上都有种着一株花生苗,上面有若干颗花生,经过 ...

最新文章

  1. mysql int和bigdecimal,mysql的 int 类型,刨析返回类型为BigDicemal 类型的奇怪现象
  2. java threadgourp_Java Thread getThreadGroup()方法
  3. Nginx流媒体支持配置
  4. css Gradients(渐变)
  5. linux服务器环境要求,在Linux服务器中配置node环境
  6. PAT甲级1130 Infix Expression:[C++题解]中缀表达式、二叉树中序遍历、dfs
  7. python3反转列表的三种方式
  8. 搜索引擎提交软件_增加SEO超级外链须知的高权重网站目录提交方法
  9. python3 rid1.7.4.2 控制台中文乱码_TL;DR - 有关 Python 2 和 Sublime Text 中文 Unicode 编码问题的分析与理解...
  10. ASP.NET Core 2.1 : 十.升级现有Core2.0 项目到2.1
  11. MapReduce的模式、算法和用例
  12. react打包成html5,create-react-app项目打包相关问题
  13. IDEA 公司,又出新神器,一套代码适应多端!
  14. shapefile(.shp)空间数据格式详细说明
  15. HTML5响应式手机模板:IOS风格app手机个人中心页面模板HTML+CSS+JavaScript
  16. 个人风景网站模板HTML+CSS+JS(源码)
  17. Python 迷宫算法
  18. MySQL 数据库管理之 --- SQL 语言进阶一
  19. 读《富爸爸,穷爸爸》后感(三)
  20. TL-WR720N路由器Android安卓不能连接外网问题解决

热门文章

  1. 6个座位办公室最佳位置_四人办公室座次的首选最佳座位在哪儿
  2. Logistic Regression:最基础的神经网络
  3. 在CF卡上实现TrueFFS
  4. mysql修改语句_序言:MySQL与Navicat安装Tips
  5. sklearn svm 调参_SVM(Support Vector Machine)
  6. 神经网络与深度学习——TensorFlow2.0实战(笔记)(四)(python上下文管理器)
  7. 【转】刨根究底正则表达式(1):开篇
  8. SqlServer学习之存储过程
  9. Sentinel 连接数据源
  10. 【转】2.5SharePoint服务器端对象模型 之 访问网站和列表数据(Part 5)