07 2014 档案
摘要:#include #include #include using namespace std;#define inf 10000000int dp[11000];int n;int val[550],wei[550];int main(){ int cas,n; scanf("%d",&...
阅读全文
摘要:http://blog.csdn.net/julyana_lin/article/details/8070949题意: n个点,每个点有初始的值 ,三种 通道,1、隧道:可以用来躲避,有固定的容量,也可以用来传递。2、普通的道路,可以无限的通过。3、桥(最多有12座):不花费的话能通过一人,修之后可...
阅读全文
摘要:http://www.cnblogs.com/jianglangcaijin/archive/2012/10/06/2713375.html题意:有m科课程需要学习,每个课程有一个基础分数,每学习该课程一个时间单位,该课程的分数就增加1分。现在有n天的学习时间,每天有K个单位时间,并且每天可以学习的...
阅读全文
摘要:#include #include 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(x&x<<1)...
阅读全文
摘要:题目大意,给出一些单词和一个句子,问这个句子最少去掉多少个字母后完全由给定的单词组成。dp[i]表示句子的前i位最少去掉多少个字母才能满足条件。则状态转移如下。最后一个字母有删掉和保留两种选择,假如删掉,那么dp[i] = dp[i-1] + 1。如果不删的话,枚举每个结尾为str[i]的单词看是否...
阅读全文
摘要:题目大意是一个奶牛可以在一些时间区间产奶,每个区间的产奶量已知,每次产完奶都要休息一下,问最大产奶量。dp方程类似最长上升子序列的n2算法,dp[i]表示以第i个区间结尾最多能产生多少奶。则dp[i] = max(dp[j] + e[i].z)。#include #include #include ...
阅读全文
摘要:一个有向图,给定起点和终点,问他的割点数,割点是指去掉这个点能使得s和t不通。s和t也是割点。先找一条从s到t的任意路径,假如没有路的话,那么割点数为n,如果找到了一条路径的话,将这条路径上的点标记出来,首先明确一点,割点肯定不会再路径外的点上,因为去掉外面的点后,还是有刚刚那条路径的。所以现在就要...
阅读全文
摘要: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,...
阅读全文
摘要:题意为F束花插入V个瓶子里面,花要按编号递增顺序插,不同花插入不同的花瓶有不同的美观程度,要求最大的美观程度。一种f[i][j]表示第i束花插入第[j]个瓶子里面所获得的最大的美观程度。则状态转移函数可以表示为f[i][j]=max(f[i-1][k]+a[i][j])其中i-1#include #...
阅读全文
摘要:转载自 http://blog.csdn.net/qq564690377/article/details/17100011题意:在一个有向图当中,现在每一条边带有一个容量,现在有K个人在起点,需要到终点去吃饭,询问这K个人最后一个人到达食堂的最小时间是多少。想法:联想到普通的网络流,那么我们网络流可...
阅读全文
摘要:求最少去掉几个公交站使得从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...
阅读全文
摘要:#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(){ ...
阅读全文
摘要:给定一个序列,求出一共有多少个三元组(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(...
阅读全文
摘要:就是看能不能装满给定容量的背包。#include #include int dp[200000],a[15];int main(){ int cas=0,c; int i,j,k; while(1) { int sum=0; cas++; ...
阅读全文
摘要:很常见的想法了= =#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 ...
阅读全文
摘要:枚举最小边进行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...
阅读全文
摘要:#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]-...
阅读全文
摘要:点的总数很小,直接枚举就好。#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,...
阅读全文
摘要:#include#include#include#include#includeusing namespace std;const int maxn = 105;const int INF = (1t){ slack[y]=t; } } ...
阅读全文
摘要:就是本来就给出了一个匹配,然后让你求一个权值最大的匹配,并且和初始匹配变动最小。#include #include #include using namespace std;const int N=400;const int MAXE=20000000;const int inf=10&&d[u]+...
阅读全文
摘要:题意就是问能否将给定的几个单词全部连接起来,两个单词能连接是当前一个单词的最后一个字母等于后一个单词的首字母。还有一些单词反向也没有关系。建图,每输入一个单词,只看他的首尾字母,连接一条首字母到尾字母的有向边,如果他可以反向,那么再反向建立一条边,即该边是无向边。然后就是一个混合欧拉了。还有一个注意...
阅读全文
摘要:a题#include#includechar c[101][101];int main(){ long n,m,i,j; scanf("%ld%ld",&n,&m); gets(c[0]); for(i=1;i#include #include #include using ...
阅读全文
摘要:n个城市通过m条无向边连接,回答q个询问,每个询问形式为s,t,要找到一条s到t的路使得这条路上的最大危险系数最小。还是最小瓶颈路,可是要快速回答每次询问,先求出最小生成树,转化为有根树,即找到s到t的路径上的最大边,在这一过程中倍增查找。预处理的复杂度为nlogn,每次查询为logn。#inclu...
阅读全文
摘要:题目大意就是有n个发电机,每个发电机有l到r个档位可供选择,每个档位的输出功率是已知的,另外还有一些限制条件,形式为xu ≤ xv + d,表示发电机u的档位要小于v的档位加d,d是一个已知的整数。求n个发电机的最大功率。假设没有最后那个限制条件,那么对于每个发电机i拆点成l-1,l。。。到r相邻两...
阅读全文
摘要:题意就是给出一个f值,然后假如两个点u,v间的所有路径上的最大边中的最小值大于f,那么这个点对是合法的,对于每个询问f,输出有多少个合法点对。最大边最小就是最小瓶颈路,即最小生成树上的路径。一个简单的想法就是求出最小生成树后,n次dfs求出任意两点间的最大边,然后对于每个询问再查找一遍,可是时间复杂...
阅读全文
摘要:题意给出所有人之间的关系,单向的,问能不能将这群人分成两组,使得每组内部的任意两人都互相认识。先把单向边都换成无向边,即如果a,b互相认识那么不变,如果只是单向边的话那么则认为他们两个不认识,然后假设能分成满足题意的两个集合,那么新图的补图中这两个集合内部是没有边的,所以只要判断补图是不是二分图即可...
阅读全文
摘要:这两题思路一样。先说下题意。第一道就是一张图,q个操作,每次将一个边x,y增大到z,求出此时的最小生成树的值w,输出这q个w的平均值。第二道是一张完全图,但是有一条未知边不能选,求最小生成树最大可能是多少。对于第一道题,先求出最小生成树,对于每个操作x,y,z,假设x,y不是树边,那么w不变,如果是...
阅读全文
摘要:水题#include #include using namespace std;int main(){ int n; int c,sum1; double sum2; char str[10]; while(scanf("%d",&n)!=EOF) { ...
阅读全文
摘要:分类讨论,看分成两堆两边的个数。 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 7 __int64 a[3][3][3]; 8 __int64 f[4],n,k,tep; 9 10 int main...
阅读全文

浙公网安备 33010602011771号