动态规划
永远热血沸腾
这个作者很懒,什么都没留下…
展开
-
Codeforces Round #416 (Div. 2) C. Vladik and Memorable Trip 【线性DP】
对于每个数字 ai{a_i} 处理出最左的位置 Lai{L_{a_i}} 和最右的位置 Rai{R_{a_i}},然后 dpi{dp_i} 为前i个数字最大的值,对于每一个 Lai=i{L_{a_i}=i} 的位置计算出来i到MAX(Rai−Rai){i到MAX(R_{a_i-R{a_i}})} 的异或值,然后更新dp{dp},最后dpn{dp_n} 为最后的答案。#include<bits/std原创 2017-05-29 15:42:52 · 483 阅读 · 0 评论 -
zoj3537 Cake 【凸包+最优三角形划分】
判断输入的点能不能组成凸包(即所有点都要是凸包的顶点)然后就是求最优三角形划分问题,也就是区间dp感觉这种区间dp还是记忆化搜索写起来比较方便记忆化搜索#include<bits/stdc++.h>using namespace std;const int inf=0x3fffffff;int top,s[10024];struct data{ int x,y;} p[100原创 2016-04-06 11:29:31 · 967 阅读 · 0 评论 -
hdu5682 zxa and leaf【dfs+树形dp】
#pragma comment(linker, "/STACK:102400000,102400000")#include<cstdio>#include<algorithm>#include<cmath>#include<cstring>#include<vector>using namespace std;const int N=5*10000+10;const long lon原创 2016-05-18 18:38:44 · 367 阅读 · 0 评论 -
Codeforces Round #349 (Div. 2) C. Reberland Linguistics 【DP】
/* ***********************************************Author :MaltubEmail :xiang578@foxmail.comBlog :htttp://www.xiang578.com************************************************ */#原创 2016-05-06 17:03:30 · 625 阅读 · 0 评论 -
hdu4314Save the dwarfs 【dp】
#include<bits/stdc++.h>using namespace std;struct node{ int a,b,ab;}p[5000];int cmp(node x,node y){ return x.ab>y.ab;}int dp[2000+5][2000+5],ans,sum[2000+5];int main(){ int n,h;原创 2016-05-24 23:01:17 · 322 阅读 · 0 评论 -
hdu2870 Largest Submatrix 【dp】
hdu1505升级版#include<bits/stdc++.h>using namespace std;const int N=1024;int g[N][N],r[N],h[N][N],l[N];char s[N][N],st[N];int n,m;int fcn(int k){ if(k==0) { for(int i=1; i<=n; i++)原创 2016-04-29 17:57:43 · 367 阅读 · 0 评论 -
hdu1300 Pearls 【dp】
没有看到限制条件,品质越高的价格就越贵,导致想了一个多月都写不出来。#include<bits/stdc++.h>using namespace std;int a[1024],p[1024],dp[1024],sum[1024];int main(){ int _,n; scanf("%d",&_); while(_--) { scanf("%原创 2016-04-28 19:10:53 · 473 阅读 · 0 评论 -
hdu3001 Travelling 三进制状态压缩dp
tsp类型,只是这里面的点最多可以访问2次。 所以用一个来表示访问了多少次,正好是三进制。 对于每个状态i,先处理出第j位为几,即num[i][j],方便使用。 用dp[i][j]表示,状态i时,以j为终点的最小花费。然后是和tsp一样扩展下一个点。#include<bits/stdc++.h>using namespace std;const int inf=0x7fffffff;in原创 2016-02-26 15:44:13 · 979 阅读 · 0 评论 -
hdu3652 B-number 数位dp
dfs版本#include<bits/stdc++.h>using namespace std;typedef long long ll;int num[15];int dp[15][15][3];//dp[i][j][k]//i:数位//j:余数//k:3种状态,0-没有1,1-有1,2-有13//pos为当前处理的数位(权重表示法,也就是剩下pos+1位待填数)//mod-余数原创 2016-03-09 14:01:13 · 283 阅读 · 0 评论 -
hdu 1505 City Game
hdu1506 的二维情况,对于每一个点,已他所在行为矩形的最上边。预处理该点下面有多少个连续的一就是h[i] [j],然后求出l[i][j]和r[i][j].#include<bits/stdc++.h>using namespace std;const int N=1024;int g[N][N],r[N][N],h[N][N],l[N][N];int main(){ int _原创 2016-03-20 19:56:05 · 226 阅读 · 0 评论 -
HDU 1506 Largest Rectangle in a Histogram 迭代思想应用
依次考虑每一个a[i],只需要求出左边和右边连续的不小于a[i]数的个数即可。所以,要维护l[i]和r[i]。 然后优化的地方在于l[i]和r[i]的求法:a[i-1]#include <stdio.h>using namespace std;const int N=100000+10;__int64 a[N],l[N],r[N],tmp;int main(){ int n,i;原创 2016-03-18 22:06:56 · 258 阅读 · 0 评论 -
hdu 2242 考研路茫茫——空调教室 点强连通+树形dp
首先用强连通缩点,之后再用图中的桥和强连通分量新建一张图,之后算一次树形dp。 树形dp过程是,将一棵无根树,当成有根树,利用dfs计算每个节点的子树中的权值(即每一个强连通分量中的人数)#include <stdio.h>#include <string.h>#include <iostream>#include <algorithm>#include <vector>#include原创 2015-12-09 08:20:52 · 374 阅读 · 0 评论 -
poj 1163 The Triangle 动态规划
。。。原创 2015-09-25 11:28:39 · 314 阅读 · 0 评论 -
hdu 1080 Human Gene Functions 线性dp
#include<bits/stdc++.h>using namespace std;int a[128][128];void init(){ memset(a,0,sizeof(a)); a['A']['A']=5; a['A']['C']=-1; a['A']['G']=-2; a['A']['T']=-1; a['A']['-']=-3;原创 2015-10-26 23:01:57 · 387 阅读 · 0 评论 -
hdu1158 Employment Planning 【dp】
#include<bits/stdc++.h>using namespace std;const int inf=0xfffffff;int dp[100][100];int s[100],u[100];int a,b,c;int main() { int k,n,ans; while(~scanf("%d",&n)) { if(n==0) break;原创 2016-05-17 14:06:39 · 270 阅读 · 0 评论 -
hdu3008 Warcraft 「DP」
#include<cstdio>#include<algorithm>#include<cmath>#include<cstring>#include<iostream>using namespace std;const int inf=0x3fffffff;int n,t,q,m,x,ans;int a[1024],b[1024],dp[200][200];int main(){原创 2016-05-19 18:03:59 · 872 阅读 · 0 评论 -
VIJOS P1037搭建双塔 【双塔DP】
dp[i][j]: 代表合理利用前i个水晶建造两座塔,较高的塔比较低的塔高j时,较高的塔的高度。 每次转移考虑三种情况,不选用第i个,或者分别放在较高的塔上、较低的塔上。#include<bits/stdc++.h>using namespace std;int sum,n,h[1000],dp[2][5000];int main(){ while(~scanf("%d",&n))原创 2017-02-04 21:14:51 · 828 阅读 · 0 评论 -
hdu5898 odd-even number 【数位DP】
#include<bits/stdc++.h>using namespace std;typedef long long ll;int num[20];ll dp[20][20][3];//dp[i][k]//i:数位//k:3种状态,0-随便填,1-必须要选奇数,2-必须要选偶数//pos为当前处理的数位(权重表示法,也就是剩下pos+1位待填数)//have-状态;//lim-原创 2016-09-18 21:40:29 · 884 阅读 · 0 评论 -
2016年团体程序设计天梯赛-决赛 L2-014. 列车调度 【导弹拦截系统-最长上升子序列nlogn求法】
导弹拦截问题中的本质是求一个序列的最长上升子序列,只有这样才会新开导弹组。也就是本问题中的铁轨。#include<bits/stdc++.h>#include<bits/stdc++.h>using namespace std;int n,a[100000+10],b[100000+10];int cnt,t;int main(){ int n,m,k; scanf("%d原创 2016-07-21 20:32:25 · 805 阅读 · 0 评论 -
Codeforces Round #358D. Alyona and Strings【DP】
#include<bits/stdc++.h>using namespace std;char a[1024],b[1024];int dp[1024][1024][20],ans[1024][1024][20];int main(){ int n,m,p; scanf("%d%d%d",&n,&m,&p); scanf("%s",a+1); scanf("%原创 2016-07-06 13:56:22 · 278 阅读 · 0 评论 -
poj1185炮兵阵地【状压DP】
#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;int g[1024],num[1024],cnt,dp[105][70][70],p[105];char s[105][15];void init(int m){ cnt=0; int up=1<<m,f,sum=0;原创 2016-07-24 15:20:46 · 574 阅读 · 0 评论 -
hdu1502 Regular Words 【dp+java】
import java.math.BigInteger;import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner in=new Scanner(System.in); int n,x,y,z; BigInteger原创 2016-05-16 22:22:13 · 340 阅读 · 0 评论 -
hdu1160 FatMouse's Speed 【最长下降子序列+输出】
本来想写nlogn,想错了,一直过不了,只能上暴力的。//#include<bits/stdc++.h>#include<stdio.h>#include<vector>#include<string.h>#include<algorithm>using namespace std;const int N=1024;int f[N],a[N],d[N];struct node{原创 2016-04-05 16:27:12 · 1247 阅读 · 0 评论 -
FZU2101 大三的美好时光 【离散化+dp】
时间的范围比较大,但是最多只有20W点,所以可以选择离散化离散化时,可以lower_bound重新搜索标号之后,按结束时间从小到大排序,再进行dp?#include<stdio.h>#include<string.h>#include<math.h>#include<algorithm>using namespace std;const int N=100000+10;struct原创 2016-04-07 20:06:58 · 322 阅读 · 0 评论 -
hdu2830 Matrix Swapping II 【dp】
#include<bits/stdc++.h>using namespace std;int a[1024][1024],h[1024][1024];int cmp(int n,int m) { return n>m;}int main() { int n,m,ans; char s[1024]; while(~scanf("%d%d",&n,&m)) {原创 2016-05-16 22:55:40 · 263 阅读 · 0 评论 -
hdu1081 To The Max 「dp」
#include<bits/stdc++.h>using namespace std;int n,a[1024][1024],b[1024],dp[1024],t;int inf=0x3fffffff;int main(){ while(~scanf("%d",&n)) { int ans=-inf; for(int i=1;i<=n;i++原创 2016-05-17 16:42:32 · 238 阅读 · 0 评论 -
hdu1501 Zipper 【dp】
#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>#include <vector>#include <queue>#include <stack>#include <set>#include <map>#include <string>#include <cmath>#inclu原创 2016-05-16 22:39:23 · 395 阅读 · 0 评论 -
hdu1421 搬寝室 【线性DP】
忍住没有搜题解,零零碎碎想了两个星期才想出来怎么DP。#include<bits/stdc++.h>using namespace std;typedef long long ll;const ll inf=0x7fffffff;ll dp[2048][2048],c[2048],ans;int main(){ int i,j,n,k; while(~scanf("%d%d原创 2016-04-03 21:29:08 · 276 阅读 · 0 评论 -
hdu1227 Fast Food 【DP】
#include<bits/stdc++.h>using namespace std;const int inf=0xfffffff;int dp[400][400],cost[400][400],a[400],sum[400];int main(){ int n,m,cnt=0,ans; while(~scanf("%d%d",&n,&m)) {原创 2016-05-18 08:36:16 · 443 阅读 · 0 评论 -
hdu 4283 You Are the One 区间dp
#include<bits/stdc++.h>using namespace std;const int inf=1<<24;int main(){ int _,__,i,j,k,n,t,ans,a[100+5],sum[100+5],dp[100+5][100+5]; scanf("%d",&_); for(__=1; __<=_; __++) {原创 2015-10-27 16:15:07 · 341 阅读 · 0 评论 -
hdu 1950 Bridging signals 最长上升序列nlogn
#include <bits/stdc++.h>using namespace std;int a[500000+5],b[500000+5],f[500000+5];int bs(int l,int r,int x){ int mid; while(l<r) { mid=(l+r)/2; if(x>=f[mid]) l=mid+1;原创 2015-10-26 19:18:56 · 307 阅读 · 0 评论 -
uva 10066 The Twin Towers
。。。原创 2015-02-24 10:51:04 · 807 阅读 · 0 评论 -
uva 531 Compromise
。。。原创 2015-02-23 16:17:23 · 461 阅读 · 0 评论 -
uva 437 The Tower of Babylon
。。。原创 2015-02-22 15:39:55 · 406 阅读 · 0 评论 -
uva 10404 Bachet's Game
。。。原创 2015-02-18 23:45:42 · 408 阅读 · 0 评论 -
uva 147 Dollars
。。。原创 2015-02-18 10:21:33 · 349 阅读 · 0 评论 -
uva 562 Dividing coins
。。。原创 2015-02-21 21:36:39 · 395 阅读 · 0 评论 -
uva 10130 SuperSale
。。。原创 2015-02-20 19:42:56 · 426 阅读 · 0 评论 -
uva 10465 Homer Simpson
。。。原创 2015-02-18 13:23:40 · 411 阅读 · 0 评论 -
uva 111 History Grading
。。。原创 2015-02-17 14:56:47 · 422 阅读 · 0 评论