摘要: dp[i][j]表示从i,j开始的最长路径,记忆化搜索一下。#include #include #include using namespace std;#define maxn 120int dp[maxn][maxn],map[maxn][maxn];int r,c;int dfs(int i,... 阅读全文
posted @ 2014-07-12 20:19 贝尔摩德 阅读(99) 评论(0) 推荐(0) 编辑
摘要: 题意为F束花插入V个瓶子里面,花要按编号递增顺序插,不同花插入不同的花瓶有不同的美观程度,要求最大的美观程度。一种f[i][j]表示第i束花插入第[j]个瓶子里面所获得的最大的美观程度。则状态转移函数可以表示为f[i][j]=max(f[i-1][k]+a[i][j])其中i-1#include #... 阅读全文
posted @ 2014-07-12 20:17 贝尔摩德 阅读(121) 评论(0) 推荐(0) 编辑
摘要: 转载自 http://blog.csdn.net/qq564690377/article/details/17100011题意:在一个有向图当中,现在每一条边带有一个容量,现在有K个人在起点,需要到终点去吃饭,询问这K个人最后一个人到达食堂的最小时间是多少。想法:联想到普通的网络流,那么我们网络流可... 阅读全文
posted @ 2014-07-12 15:57 贝尔摩德 阅读(250) 评论(0) 推荐(0) 编辑
摘要: 求最少去掉几个公交站使得从s到t的最短路径大于k。迭代加深搜索。#include #include #include using namespace std;#define maxn 60#define maxm 50000int n,m,K,cnt,up;int head[maxn],pre[ma... 阅读全文
posted @ 2014-07-12 14:17 贝尔摩德 阅读(244) 评论(0) 推荐(0) 编辑
摘要: #include #include #include #include using namespace std;char map[110][110];int n,m;#define inf 100000struct node{ int x,y;};vector nn;int main(){ ... 阅读全文
posted @ 2014-07-12 14:14 贝尔摩德 阅读(168) 评论(0) 推荐(0) 编辑
摘要: 给定一个序列,求出一共有多少个三元组(ai,aj,ak),使得i#include #define maxn 100200#define N 20100int sum[maxn*4];int lmax[N],lmin[N],rmax[N],rmin[N];int ans[N];void pushup(... 阅读全文
posted @ 2014-07-12 14:13 贝尔摩德 阅读(270) 评论(0) 推荐(0) 编辑
摘要: 就是看能不能装满给定容量的背包。#include #include int dp[200000],a[15];int main(){ int cas=0,c; int i,j,k; while(1) { int sum=0; cas++; ... 阅读全文
posted @ 2014-07-12 14:10 贝尔摩德 阅读(146) 评论(0) 推荐(0) 编辑
摘要: 很常见的想法了= =#include #include #include using namespace std;const int N=400;const int MAXE=200000;const int inf=10&&d[u]+edge[j].w=0) printf("Oh, I lose ... 阅读全文
posted @ 2014-07-12 14:09 贝尔摩德 阅读(203) 评论(0) 推荐(0) 编辑
摘要: 枚举最小边进行kruskal。#include #include using namespace std;#define maxn 120#define maxm 10000struct edge{ int u,v,w;}e[maxm];int p[maxn],n,m;int find(int... 阅读全文
posted @ 2014-07-12 14:06 贝尔摩德 阅读(149) 评论(0) 推荐(0) 编辑
摘要: #include #include #include #define maxn 1220double x[maxn],y[maxn],d;bool vis[maxn];int p[maxn];int n;double dist(int i,int j){ return fabs( (x[i]-... 阅读全文
posted @ 2014-07-12 14:05 贝尔摩德 阅读(126) 评论(0) 推荐(0) 编辑
摘要: 点的总数很小,直接枚举就好。#include #include #define N 20#define inf 1000000int mk[N],n,k,ans[N];double low[N],val[N];double map[N][N],MIN;double prim(){ int i,... 阅读全文
posted @ 2014-07-12 14:03 贝尔摩德 阅读(138) 评论(0) 推荐(0) 编辑
摘要: #include#include#include#include#includeusing namespace std;const int maxn = 105;const int INF = (1t){ slack[y]=t; } } ... 阅读全文
posted @ 2014-07-12 14:00 贝尔摩德 阅读(156) 评论(0) 推荐(0) 编辑
摘要: 就是本来就给出了一个匹配,然后让你求一个权值最大的匹配,并且和初始匹配变动最小。#include #include #include using namespace std;const int N=400;const int MAXE=20000000;const int inf=10&&d[u]+... 阅读全文
posted @ 2014-07-12 13:58 贝尔摩德 阅读(141) 评论(0) 推荐(0) 编辑
摘要: 题意就是问能否将给定的几个单词全部连接起来,两个单词能连接是当前一个单词的最后一个字母等于后一个单词的首字母。还有一些单词反向也没有关系。建图,每输入一个单词,只看他的首尾字母,连接一条首字母到尾字母的有向边,如果他可以反向,那么再反向建立一条边,即该边是无向边。然后就是一个混合欧拉了。还有一个注意... 阅读全文
posted @ 2014-07-12 10:46 贝尔摩德 阅读(278) 评论(0) 推荐(0) 编辑