- 博客(188)
- 收藏
- 关注
转载 LA 3942 Remember the Word 字典树+dp
#include <cstdio>#include <cstring>using namespace std;#define mod 20071027int dic[401000][28],val[401000];char str[301000];int dp[301000];int s,sz;char T[110];...
2014-12-10 23:20:00 181
转载 hdu 1423 Greatest Common Increasing Subsequence 最长公共上升子序列
#include <cstdio>#include <cstring>#include <algorithm>using namespace std;int a[550],b[550],dp[550][550];int main(){ int n,m,i,j,temp; int cas; ...
2014-11-27 19:00:00 184
转载 noi 2008 志愿者招募 费用流
https://www.byvoid.com/blog/noi-2008-employee/因为每个志愿者的服务日期都是连续的,设 xi 为第 i 种志愿者的数量,所以列出线性规划式子之后,两两相减,每个 xi 都会只在两个式子中出现,一个为正一个为负,与费用流的线性规划式一致,所以可以转化为费用流。转载于:https://www.cnblogs.com/vermouth/p/4...
2014-11-17 22:51:00 188
转载 Codeforces Round #263 (Div. 1)
B.Appleman and Tree题目大意。一棵树上的点有的是黑的有的是白的,然后他想断开一些边使得剩下的连通分量里每个连通分量有且仅有一个黑点,求方案数。dp[u][0]表示以u为根的子树且u所在的连通分量没有黑点的方案数。dp[u][1]表示以u为根的子树且u所在的连通分量有一个黑点的方案数。更新节点u时,对于他的子树v,可以断开或不断开这条边<u,v>...
2014-10-06 11:54:00 141
转载 hdu 4888 Redraw Beautiful Drawings
题目是一个矩阵,每行每列的数字的和都有一个上限,问是否存在可行方案,并且可行方案是否唯一。第一问比较简单,行列建图,s到每个行节点容量为该行上限,每个列节点连接到t,容量为该列的上限,求最大流,如果满流则有可行方案。第二问就是判断最大流是否唯一,就是在原图中找一个环(经过一条边后不能马上走反向边),环上的边cap-flow都大于0。如果有这个环,那么不唯一,否则唯一。因为流量为k的两...
2014-10-02 15:10:00 90
转载 hdu 4974 A simple water problem
有n个人,进行了若干场比赛,每场比赛每个人可以得0分或1分,给出每个人的得分,求至少进行了多少场比赛。就是两两配对,如果最大的比总数的一半还大,那么答案就是最大的数,否则就是总数的一半。#include <cstdio>#include <cstring>#include <algorithm>using namespace s...
2014-10-02 14:58:00 103
转载 Codeforces Round #269 (Div. 2)
a.就是先找出四个一样的,然后看剩下两个的关系。#include <cstdio>#include <cstring>using namespace std;int main(){ int a[10]; int vis[20]; int i; memset(vis,0,sizeof(vis));...
2014-09-28 09:01:00 64
转载 poj 3683 Priest John's Busiest Day 2-sat
#include<cstdio>#include<algorithm>#include<vector>#include<cstring>#include<stack>using namespace std;const int maxn = 2000 + 30;vector<int&g...
2014-09-26 15:26:00 104
转载 hdu 2874 Connections between cities hdu 2586 How far away ? LCA
两道lca模板题,用的是倍增法,nlogn预处理,logn查询。#include <cstdio>#include <cstring>#include <vector>#include <algorithm>using namespace std;#define maxn 10100struct Edge...
2014-09-25 17:07:00 106
转载 hdu 5011 Game 博弈
n堆石子,两个人轮流取,每次可以在一堆石子中取至少一个石子,并可以选择将剩下的石子分成任意的两堆,最后取走的获胜,问谁会获胜。比裸nim多了一个条件就是可以将剩下的石子分开,原来是1的位拆分后变成一个1和一个0,原来是0的拆分后变成1和1或者0和0,都不改变nim的必胜或必败状态,所以直接异或。#include <cstdio>#include <cst...
2014-09-23 16:38:00 80
转载 codeforces 467C George and Job dp
题目大意:n个数排成一列,在这n个数中取k段连续的长度为m的序列并最大化。dp[i][j]表示前 i 个数中取 j 段的最大值。#include <cstdio>#include <cstring>#include <algorithm>using namespace std;typedef long long ll;l...
2014-09-23 16:24:00 100
转载 poj 1704 Georgia and Bob 博弈
排成一条直线的格子上有n个棋子,两个人每个人每次可以选择一枚棋子向左移动任意步数,但是不可以越过棋子,无法进行操作的一方失败,问谁会失败。先考虑偶数个棋子时的情况,将棋子从左到右两两配对,转化成n/2堆石子,每堆石子的个数为中间的空格数,这样每次向左移动可以看做在一堆石子中取了任意个,转换成了nim博弈,两两配对的石子中的左面的石子如果向左移动,那么相当于石子的数目会增加,但不会改变...
2014-09-23 16:19:00 90
转载 poj 2484 A Funny Game
题目大意:n个硬币排成一个圈,两个人依次取硬币,每次可以取一个或两个,取两个时必须是连续的两个,硬币取走后会留下空位,即不连续了。取走最后一枚硬币的获胜。第一个人取走硬币之后,第二个人可以通过取一个或两个构成对称的两组,只要第一个人能取,那么第二个人也能取。#include <cstdio>#include <cstring>#include ...
2014-09-23 16:13:00 100
转载 hdu 5008 Boring String Problem 后缀数组
给出一个字符串,对于每次的k,求所有子串(去除重复后的)中排名为k的L和R,其中如果有多组解,输出L最小的。后缀数组处理过后,sum[i]表示 sa[1] 到 sa[i] 一共有多少个非重复字串,在sum数组中二分求出k的lower_bound=pos,那么第一次出现这个子串的后缀就是sa[pos],但是有可能有多组解,所以还要往下找所有height[i]>=目标字符串长度 的...
2014-09-17 17:08:00 107
转载 hdu 4970 Killing Monsters
长度为n的直线上有几个防御塔,每个防御塔都有攻击范围为[L,R],然后给出几个怪物的血量和出现位置,问能从出现位置走到末尾的有几个。对于每次输入的防御塔的L,R和他的攻击力d,a[L]+=d,a[R+1]-=d。然后从1到n累加一遍计算出每个位置的实际伤害。最后从末尾累加到开始计算后缀和。#include <cstdio>#include <cstrin...
2014-09-17 17:01:00 79
转载 hdu 4966 GGS-DDU 最小树形图
来自九野~给定n个技能,m个限制下面是每个技能满级的级数开始每个技能都是0级。m个限制(c,l1) (d,l2) cost若c技能已经>=l1级,那么把点亮d技能 从0级一路点到l2级的花费是cost。。他说的好有道理,我竟无言以对_(:зゝ∠)_最小树形图,用0做根,触发每个技能的0级花费是0若已经点亮技能的x级,则点亮该技能的x-1级花费就...
2014-09-17 16:56:00 114
转载 hdu 1011 Starship Troopers 树dp
题目大意是有n个房间组成一棵树,你有m个士兵,从1号房间开始让士兵向相邻的房间出发,每个房间里有一个代价,代价是值/20个士兵,同时有一个价值,问你花费这m个士兵可以得到的最大价值是多少定义dp[i][j]表示根结点为i时,用掉j个士兵获得的最大possible。dp[i][j] = max(dp[i][j], dp[i][j-k] + dp[son[i]][k]);...
2014-09-05 11:55:00 91
转载 hdu 1506 Largest Rectangle in a Histogram 单调栈
#include <cstdio>#include <cstring>#include <algorithm>using namespace std;int a[100100],q[100100],l[100100],r[100100];int main(){ int i,n,cnt; while(...
2014-08-28 21:26:00 98
转载 Hackerrank--Ashton and String (后缀数组)
#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#define maxn 100100int wa[maxn],wb[maxn],wv[maxn],ws[maxn];int r[maxn],sa[maxn];cha...
2014-08-23 15:56:00 111
转载 poj 3186 Treats for the Cows dp
#include <cstdio>#include <algorithm>using namespace std;#define maxn 2100int dp[maxn][maxn];int val[maxn];int n;int main(){ while(scanf("%d",&n)!=EOF)...
2014-08-17 10:04:00 104
转载 hdu 4607 Park Visit 树的直径
对于一棵树,求遍历k个节点的最少步数。先求出直径,若未超过直径,则就是k-1,否则就是 直径 + 2 * (k - 直径 - 1)。#include <cstdio>#include <cstring>#include <algorithm>#include <queue>using namespace st...
2014-08-13 21:33:00 132
转载 hdu 1520 Anniversary party
如果选了节点u,则不能选他的父节点和子节点,每个点有一个权值,求最大权值。#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#define maxn 6100#define maxm 15000struct Node{...
2014-08-13 21:28:00 105
转载 hdu 4863 Centroid of a Tree 树dp
代码来自baka。。#include<iostream>#include<cstdio>#include<cstring>#include<string>#include<algorithm>#include<map>#include<queue>#include<...
2014-08-13 20:53:00 109
转载 hdu 4862 Jump 上下界费用流
对于每个点拆点成为两个点a,b,连接a到b的上界为1,下界为1的边,保证用过一次且仅一次。然后若点u可到达点v,则连接即可。建成了一个上下界网络,将下界拆出去,求最大费用最大流就好。#include <stdio.h>#include <iostream>#include <string.h>using namespace st...
2014-08-13 20:30:00 77
转载 hdu 1723 Distribute Message 递推
#include <cstdio>#include <cstring>using namespace std;int dp[50];int main(){ int n,m; while(1) { scanf("%d%d",&n,&m); if(n==0&...
2014-08-13 20:23:00 106
转载 hdu 1114 Piggy-Bank dp
#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#define inf 10000000int dp[11000];int n;int val[550],wei[550];int main(){ int...
2014-07-16 10:32:00 93
转载 hdu 4309 Seikimatsu Occult Tonneru 枚举+最大流
http://blog.csdn.net/julyana_lin/article/details/8070949题意: n个点,每个点有初始的值 ,三种 通道,1、隧道:可以用来躲避,有固定的容量,也可以用来传递。2、普通的道路,可以无限的通过。3、桥(最多有12座):不花费的话能通过一人,修之后可以无限通过。问最少花费最大可以隐藏人数。解: 网络流 + 枚举官方...
2014-07-15 20:26:00 84
转载 hdu 4406 GPA 费用流
http://www.cnblogs.com/jianglangcaijin/archive/2012/10/06/2713375.html题意:有m科课程需要学习,每个课程有一个基础分数,每学习该课程一个时间单位,该课程的分数就增加1分。现在有n天的学习时间,每天有K个单位时间,并且每天可以学习的课程是固定的,给出学分绩点的计算方式,求可以达到的最高的学分绩点,要求所有课程都要及格...
2014-07-15 20:23:00 76
转载 poj 3254 Corn Fields 状压dp
#include <cstdio>#include <cstring>using namespace std;#define mod 100000000int M,N,top=0;int cur[20],dp[20][600];int state[600],num[110];bool ok(int x){ if(...
2014-07-15 15:04:00 88
转载 poj 3267 The Cow Lexicon dp
题目大意,给出一些单词和一个句子,问这个句子最少去掉多少个字母后完全由给定的单词组成。dp[i]表示句子的前i位最少去掉多少个字母才能满足条件。则状态转移如下。最后一个字母有删掉和保留两种选择,假如删掉,那么dp[i] = dp[i-1] + 1。如果不删的话,枚举每个结尾为str[i]的单词看是否能塞进str的前i位里,取最优值。代码贴的网上的= =#inc...
2014-07-15 14:54:00 127
转载 poj 3616 Milking Time dp
题目大意是一个奶牛可以在一些时间区间产奶,每个区间的产奶量已知,每次产完奶都要休息一下,问最大产奶量。dp方程类似最长上升子序列的n2算法,dp[i]表示以第i个区间结尾最多能产生多少奶。则dp[i] = max(dp[j] + e[i].z)。#include <cstdio>#include <cstring>#include &l...
2014-07-15 14:48:00 95
转载 hdu 3313 Key Vertex
一个有向图,给定起点和终点,问他的割点数,割点是指去掉这个点能使得s和t不通。s和t也是割点。先找一条从s到t的任意路径,假如没有路的话,那么割点数为n,如果找到了一条路径的话,将这条路径上的点标记出来,首先明确一点,割点肯定不会再路径外的点上,因为去掉外面的点后,还是有刚刚那条路径的。所以现在就要看路径上的每个点是不是割点。只要把路径上的点去掉,然后从s进行bfs,路径上的点不能走...
2014-07-14 11:21:00 106
转载 poj 1088 滑雪 dp
dp[i][j]表示从i,j开始的最长路径,记忆化搜索一下。#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#define maxn 120int dp[maxn][maxn],map[maxn][maxn];int...
2014-07-12 20:19:00 101
转载 poj 1157 LITTLE SHOP OF FLOWERS
题意为F束花插入V个瓶子里面,花要按编号递增顺序插,不同花插入不同的花瓶有不同的美观程度,要求最大的美观程度。一种f[i][j]表示第i束花插入第[j]个瓶子里面所获得的最大的美观程度。则状态转移函数可以表示为f[i][j]=max(f[i-1][k]+a[i][j])其中i-1<=k<j;则输出为f[F][F]-f[F][V]之间的最大值。第二种解法的状态函数为...
2014-07-12 20:17:00 95
转载 hdu 4807 Lunch Time
转载自 http://blog.csdn.net/qq564690377/article/details/17100011题意:在一个有向图当中,现在每一条边带有一个容量,现在有K个人在起点,需要到终点去吃饭,询问这K个人最后一个人到达食堂的最小时间是多少。想法:联想到普通的网络流,那么我们网络流可以很轻松的求出两个点之间的最大容量是多少,但是现在的问题就是刚开始在起步的时候那么...
2014-07-12 15:57:00 58
转载 hdu 2485 Destroying the bus stations 迭代加深搜索
求最少去掉几个公交站使得从s到t的最短路径大于k。迭代加深搜索。#include <cstdio>#include <cstring>#include <queue>using namespace std;#define maxn 60#define maxm 50000int n,m,K,cnt,up;int ...
2014-07-12 14:17:00 89
转载 hdu 2487 Ugly Windows 模拟
#include <cstdio>#include <iostream>#include <cstring>#include <vector>using namespace std;char map[110][110];int n,m;#define inf 100000struct node{ ...
2014-07-12 14:14:00 98
转载 hdu 2492 Ping pong 线段树
给定一个序列,求出一共有多少个三元组(ai,aj,ak),使得i<j<k,ai<aj<ak。固定中间值,查找前面比他大的有多少,比他小的有多少,查找后面比他大的有多少,比他小的有多少。#include <stdio.h>#include <string.h>#define maxn 100200#define N 2...
2014-07-12 14:13:00 148
转载 hdu 1059 Dividing 多重背包
就是看能不能装满给定容量的背包。#include <stdio.h>#include <string.h>int dp[200000],a[15];int main(){ int cas=0,c; int i,j,k; while(1) { int sum=0; c...
2014-07-12 14:10:00 94
转载 hdu 3315 My Brute 费用流,费用最小且代价最小
很常见的想法了= =#include <stdio.h>#include <iostream>#include <string.h>using namespace std;const int N=400;const int MAXE=200000;const int inf=1<<30;int head[...
2014-07-12 14:09:00 86
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人