
动态规划
Loi_whales
生活不止眼前的苟且,还有诗和远方的田野
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
openjudge每日推荐——7624山区建小学
描述 政府在某山区修建了一条道路,恰好穿越总共m个村庄的每个村庄一次,没有回路或交叉,任意两个村庄只能通过这条路来往。已知任意两个相邻的村庄之间的距离为di(为正整数),其中,0 < i < m。为了提高山区的文化素质,政府又决定从m个村中选择n个村建小学(设 0 < n < = m < 500 )。请根据给定的m、n以及所有相邻村庄的距离,选择在哪些村庄建小学,才使得所有村到最近小学的距离总原创 2016-10-21 17:18:05 · 1122 阅读 · 0 评论 -
洛谷P1137 旅行计划
题目描述小明要去一个国家旅游。这个国家有N个城市,编号为1~N,并且有M条道路连接着,小明准备从其中一个城市出发,并只往东走到城市i停止。 所以他就需要选择最先到达的城市,并制定一条路线以城市i为终点,使得线路上除了第一个城市,每个城市都在路线前一个城市东面,并且满足这个前提下还希望游览的城市尽量多。 现在,你只知道每一条道路所连接的两个城市的相对位置关系,但并不知道所有城市具体的位置。现在对于原创 2017-08-18 10:47:09 · 377 阅读 · 0 评论 -
codevs1058合唱队形
初始化的时候出了点小问题导致调试了n~久,真是悲催 这个题目我是先找到所有的拐点,再以每个拐点为终点和起点跑最长上升下降子序列 再取最大的和,这也就是队形人数最多的情况,也是删去人数最少的情况#include <cstdio> #include <iostream> #include <cstring> #include <algorithm> using namespace std; int原创 2016-11-01 15:23:57 · 287 阅读 · 0 评论 -
codevs1044拦截导弹
这个题第一问是求最长下降子序列,第二问可以转化成求最长上升子序列,为什么? 因为我们每遇到有hi < hj的情况(i < j)都要再使用一枚导弹,因为导弹只处理hi >hj的情况嘛,很好理解的吧 所以代码如下: (完全可以更短)#include <cstdio> #include <iostream> #include <cstring> #include <algorithm> using原创 2016-11-01 10:48:21 · 417 阅读 · 0 评论 -
codevs2598编辑距离问题
/* 在最终状态都是A串转换到B串 可以进行修改,删除和添加,dp[i-1][j]是把第一个串的当前字符删除, 这样就是搜到上一个字符的操作数+1,dp[i][j-1]+1是在上一种状态下把串1 添加到第二个串上,操作数+1 */ #include <cstdio> #include <iostream> #include <cst原创 2016-11-01 10:43:15 · 315 阅读 · 0 评论 -
openjudge每日推荐——4978宠物小精灵之收服
描述 宠物小精灵是一部讲述小智和他的搭档皮卡丘一起冒险的故事。 一天,小智和皮卡丘来到了小精灵狩猎场,里面有很多珍贵的野生宠物小精灵。小智也想收服其中的一些小精灵。然而,野生的小精灵并不那么容易被收服。对于每一个野生小精灵而言,小智可能需要使用很多个精灵球才能收服它,而在收服过程中,野生小精灵也会对皮卡丘造成一定的伤害(从而减少皮卡丘的体力)。当皮卡丘的体力小于等于0时,小智就必须结束原创 2016-10-22 07:42:18 · 521 阅读 · 0 评论 -
codevs1169传纸条
这个题跟方格取数是一样的额,不过是改成了从头到尾和从尾到头的两条路径,其实还是一样的。#include <cstdio> #include <iostream> #include <cstring> #include <algorithm> using namespace std; int n,x,y,v,ans,m; int sum=0; int s[60][60]; int f[51][51][原创 2016-11-03 11:26:44 · 417 阅读 · 0 评论 -
codevs2188最长上升子序列
这个题,我是先找到比第k个元素小的并且在它前面的,和比它大在它后面的元素,放到一个数组里,就保证我们找的最长上升子序列里一定包含第K个元素了,在新的数组里跑一遍最长上升子序列就行了,我发现我的做法跟DQS神犇的一样,然而本蒟蒻只会O(n²)的方法啊,于是在T掉两个点后跑去学了O(nlog(n))的方法,就A了。。。。#include <cstdio> #include <iostream> #inc原创 2016-11-03 10:53:04 · 334 阅读 · 0 评论 -
codevs2980买帽子
将每个字符串翻转后得到一个新的字符串,再与原串找最长公共子序列就行了 (话说我竟然卡在了字典序的问题上良久,还是string好搞,用char的时候打渣了WA了几次,就不想用它了)#include <cstdio> #include <iostream> #include <cstring> #include <algorithm> using namespace std; int dp[1000]原创 2016-11-03 10:47:25 · 325 阅读 · 0 评论 -
bzoj4562: [Haoi2016]食物链
Description如图所示为某生态系统的食物网示意图,据图回答第1小题 现在给你n个物种和m条能量流动关系,求其中的食物链条数。 物种的名称为从1到n编号 M条能量流动关系形如 a1 b1 a2 b2 a3 b3 …… am-1 bm-1 am bm 其中ai bi表示能量从物种ai流向物种bi,注意单独的一种孤立生物不算一条食物链 Input第一行两个整数n和m,接下来m原创 2017-08-16 14:41:54 · 495 阅读 · 0 评论