nyoj
文章平均质量分 60
BIGKAKA
What they have done? What are you doing?
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
nyoj232 How to eat more Banana (LIS变形)
刚开始我以为知道题始背包问题,可是后来不知怎么存储有效的数据,忍不住(唉,每次都这样,十几分钟想不出来就想看题解了,这就是现在为什么我还是那么菜的原因之一)看了题解,其实就是LIS(最长上升序列)变形。 一个突破口就是把每个长方体的三种情况都列入数列中,在按照长宽从小到大排序,在套LIS的方法,但不是自己完全写出来的,唉~~~ #include #include #include原创 2016-01-23 00:43:45 · 566 阅读 · 0 评论 -
nyoj246 Human Gene Functions(LCS变形)
花了两个多小时才把这道水题A了,不过1A还是值得开心的 这道题就是LCS的变形,不过验证转移方程花了好久,还是多得练习,特别是代码,其实很多时候有想法但是不知怎么用代码实现。。。 转移方程:dp(i,j)=max(dp(i-1,j)+s[i], dp(i,j-1)+s[j], dp(i-1,j-1)+s(i,j) ) 其中dp(i,j)表示s1的前i个和s2的前j个匹配原创 2016-01-23 15:26:50 · 467 阅读 · 0 评论 -
nyoj456 邮票分你一半(01背包)
很显然的01背包问题,但是想的方向不对,半天都写不出转移方程,发现越做题越显得自己脑残~~~ 这题的重点把两堆邮票看成两个容器,而我一直做成两堆弄得很烦,其实就是把n个物品放到sum/2里的最大值,开始没想到,想一下才觉得这个方案是成立的,因为当一堆装得越多,另一堆也会越接近总数的一般,这样就可以经典的01背包问题了,但是我做了二维的超空间了,要做成一维的,久没看背包也忘了一维怎么写了,原创 2016-01-23 20:47:59 · 564 阅读 · 0 评论 -
nyoj571 整数划分(三)
这道题吃了翔,尼玛有没说多case。。。 通过这道题,初步了解了整数划分的经典问题,值得。 一 求将n划分为若干正整数之和的划分数 1. 若划分的多个整数可以相同 设dp[i][j]为将i划分为不大于j的划分数 (1) 当i时,i不能划分为大于i的数,所以dp[i][j]=dp[i][i]; (2) 当i>j 时,可以根据划分中是否转载 2016-01-24 19:46:19 · 1167 阅读 · 0 评论 -
nyoj61 传纸条(一) (双线dp)
初次学双进程dp,其实就是多维dp,但是就是多一维我的脑子就转不过来了,模模糊糊看得懂而已, 从矩阵的左上角(1,1)点到矩阵的右下角(m,n)点找到两条不相交的路径使其值最大, 题中是从(1,1)到(m,n)走一次,再从(m,n)到(1,1)走一次,我们可以等价变形 一下,变为:同时从(1,1)走向(m,n)找两条路,且这两条路不相交,同时走! 假设有两个人在走,一个原创 2016-01-25 00:31:26 · 782 阅读 · 0 评论 -
nyoj 魔法少女(简单dp)
dp(i,0)=min{dp(i-1,1),dp(i-1,0)}+a[i]; dp(i,1)=min{dp(i-1,0),dp(i-1,1)}; 0表示在第i层不飞,1表示在第i层飞,当不飞时,上一层可以飞或者不飞;当飞时,上一层或上两层肯定不飞才能满足条件, 感觉自己弱爆了~~自己写出来的还是不是很熟悉~~ #include #include using namespace std;原创 2016-03-06 00:57:43 · 777 阅读 · 0 评论 -
nyoj ones
想的时候还是要很久。。。 dp[i]=min(dp[i-1]+1,dp[k]+dp[i/k]);(2 #include #include #include using namespace std; #define N 10001 int dp[N]; int n; int main() { for(int i=1;i<6;i++) dp[i]=i; for原创 2016-03-06 01:15:56 · 417 阅读 · 0 评论 -
nyoj 首尾相连数组的最大子数组和
这道题如果按照O(n*n)的复杂度写会TLE。。。 所以需要转化思想,其中有两种方法,可是我一种都没想到。 法一:构造虚假数列,即复制一遍数组放置于原数组后面,这样就可以看成求首尾不连接的最大和,但是有限制条件。第一,最大子和的首位位置在1~n中,不能超出n。第二,最大和的长度不能超过n。 按照求最大和的方法再加上两个限制条件,但是写起来有点nan~~(对我来说) #include #i原创 2016-03-07 20:02:43 · 674 阅读 · 0 评论 -
nyoj 飞翔d
想不到可以转化为最长递增子序列。。。 因为每走一步都是往上走,所以求出一段最长的斜路即使最短路径。 #include #include #include #include using namespace std; #define N 1000005 #define inf -999999 struct node { int x,y; } s[N]; int dp[N],n,m;原创 2016-03-07 21:24:04 · 399 阅读 · 0 评论
分享