Codeforces 1077F2 Pictures with Kittens (hard version)——单调队列优化dp

题意: 从n个数中选x个,要求任意连续k个必须有数被选中,问最后x个数的和最大是多少 1<=n,k<=5000, 1<=x<=n 思路: 设dp[i][j]为选中a[i]且选了j个时的最大和,则dp[i...

2018-12-19 22:43:22

阅读数 14

评论数 0

Codeforces 1076F Summer Practice Report——贪心+dp

题意:你有n个纸条,现在你要用0和1去写满这些纸条(每个纸条只能写一行),每个纸条都给出了一个x和一个y,表示要求写的0的数量和1的数量,并且规定任何时候都不能有超过k个0连续,任何时候都不能有超过k个1连续,注意假设写完一个纸条和它后一个纸条是连续的,也就是说一个纸条末尾的0或1也要算在它后一个...

2018-12-04 17:47:39

阅读数 26

评论数 0

斯坦纳树——hdu 4085

最近打全国高校绿色计算机大赛遇到了一个斯坦纳树(决赛第二阶段第三题),当时网上找了模板水过去了,赛后学习一下 【一】什么是斯坦纳树 斯坦纳树问题是组合优化学科中的一个问题。将指定点集合中的所有点连通,且边权总和最小的生成树称为最小斯坦纳树(Minimal Steiner Tree),其实最小生...

2018-11-12 20:32:57

阅读数 27

评论数 0

Codeforces 1073D——暴力

题意 n个售货车排成一个圈,编号1~n,每个售货车卖一种冰激凌,价格为a[i],数量无限,现在你有T块钱,从1号点出发,无限转圈,每到一个售货车,如果你能买一个冰激凌,那么一定买一个,否则不买,直到钱少到无法买冰激凌为止,问你能买多少个冰激凌 1<=n&l...

2018-11-02 08:53:02

阅读数 128

评论数 0

Codeforces 1073E——状压+数位dp

题意 输入l r k,输出区间[l,r]内数位种数不超过k的数字之和,比如l=10,r=50,k=1,答案就是11+22+33+44=110 1<=l<=1e18,1<=e<=1e18,1&...

2018-11-01 22:06:56

阅读数 83

评论数 0

HDU - 5955 Guessing the Dice Roll——ac自动机+概率dp+高斯消元

要写的就是代码中的solve函数,看一下就明白了,其余的都是模板,挺水的 #include <bits/stdc++.h> using namespace std; const int maxn = 105; int T, N, L, data[ma...

2018-10-09 12:11:57

阅读数 29

评论数 0

HDU - 5956 The Elder——斜率优化dp

状态转移方程很好想 写出来发现是经典的斜率优化 由于状态本质上是在树链上转移, 所以回溯的时候要撤销状态 分析了一下单调队列可能不太好做,所以直接二分了 #include <bits/stdc++.h> using namespace std;...

2018-10-08 18:41:59

阅读数 23

评论数 0

Gym - 101550C Card Hand Sorting——思维

开始读错题意了,题目要求的是相同花色之间有序,知道这一点以后就枚举一下序列跑几个LCS就好了 #include <bits/stdc++.h> using namespace std; const int maxn = 100; char str[m...

2018-10-08 11:33:31

阅读数 17

评论数 0

HDU 3507 Print Article——斜率优化dp

首先不难推出这道题的状态转移方程:dp[i]=min{dp[j]+(sum[i]-sum[j])^2|0<j<i} 假设有k<j,j比k更优当且仅当dp[j]+(sum[i]-sum[j])^2<=dp[k]...

2018-10-06 18:12:27

阅读数 25

评论数 0

HDU - 6006 Engineer Assignment——dp

和背包差不多 #include <bits/stdc++.h> using namespace std; const int maxn = 100; int T, n, m, c[maxn], d[maxn], a[maxn][maxn], b[ma...

2018-10-01 20:19:49

阅读数 71

评论数 0

HDU - 6007 Mr. Panda and Crystal——dp

求出每个物品的最小花费后跑完全背包 最小花费循环n次,每次把k个关系都更新一遍就行了 #include <bits/stdc++.h> using namespace std; const int maxn = 1010; typedef long...

2018-10-01 19:39:37

阅读数 25

评论数 0

UVALive 4394 String painter——dp

设ans[i]为区间[1,i]已经染好的最小花费 若s[i]=t[i],ans[i]=ans[i-1] 否则ans[i]=min{ans[j-1]+cost(j,i)},cost(j,i)为区间[j,i]染好的最小花费,1<=j<=i 然而会发现c...

2018-10-01 11:52:12

阅读数 55

评论数 0

UVALive - 2038 Strategic game——dp

大水题 #include <bits/stdc++.h> using namespace std; const int maxn = 1e4; vector<int> G[maxn]; int n, dp[...

2018-09-26 21:19:01

阅读数 15

评论数 0

UVALive - 3530 Martian Mining

题意:每个格子放左箭头或者上箭头,要求箭头不能中断,顺着箭头走的时候不能转折(比如一个左箭头左面有一个上箭头或者一个上箭头上面有一个左箭头,但是允许上箭头下面有左箭头,允许左箭头右面有上箭头),左箭头获得的价值为a[i][j],上箭头获得的价值为b[i][j],问把图布满箭头的最大价值为多少 前...

2018-09-26 20:51:23

阅读数 60

评论数 0

UVA - 10564 Paths through the Hourglass——dp

乱写一通就过了。。。 #include <bits/stdc++.h> using namespace std; typedef long long ll; int n, s; int a[100][100]; ll dp[100][100][510...

2018-09-26 20:16:33

阅读数 21

评论数 0

UVALive - 4727 Jump Jump——dp

#include <bits/stdc++.h> using namespace std; const int maxn = 1e6; int t, n, k, dp[maxn], ans[5]; int main() { cin &a...

2018-09-26 18:00:31

阅读数 12

评论数 0

HDU - 6219 Empty Convex Polygons——dp+几何

首先枚举最低点o,将纵坐标大于等于o的点极角排序,然后dp求解 设dp(i,j)为以oi为最后一条边,以oj为倒数第二条边的最大空凸包,转移方程为 dp[i][j] = max(dp[i][j], dp[j][k] + area);其中area为三角形oij的面积,k要小于j,注意oij要能形成...

2018-09-24 16:45:00

阅读数 52

评论数 0

HDU 6241Color a Tree——二分+树形dp

A限制用树形dp就可以做,B限制一开始想维护一下父亲,兄弟等信息,但怎么都维护不出来,然后突然想到可以二分答案x,每个节点只要有A的信息以及答案x就可以得到B的信息了,想到以后扫了一遍点,判了一下dp[i]+b[i]是否小于x,WA了... 这是因为节点a满足条件,节点b满足条件,但是节点ab不...

2018-09-14 15:20:24

阅读数 28

评论数 0

HDU 6249 Alice’s Stamps——dp

不带滚动数组版: #include <cstdio> #include <algorithm> #define rep(i,x,y) for(int i=x;i<=y;i++) usi...

2018-09-06 11:01:14

阅读数 83

评论数 0

UVA 11795 Mega Man's Mission——dp

#include <bits/stdc++.h> using namespace std; typedef long long ll; int T, ks, n, m; char str[20]; int t[20], kl[1<...

2018-09-03 16:21:48

阅读数 25

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭