- 博客(16)
- 收藏
- 关注
原创 hdu 1532 最大流模板
最大流初学者的练习题 PS:BFS好像要超时,推荐写深搜Code:(只有宽搜):#include<iostream>#include<cstdio>#include<cmath>#include<cstring>#include<algorithm>#include<cstdlib>#include<queue>#define fo(i,a,b) for(int i=a;i<=
2017-05-30 21:47:27 254
原创 vijos 1046 最小环
这题想出来了就很简单,其实就是对弗洛伊德算法的一个变形.所以理解算法很重要啊!!! Floyd中的:dis[i][j] 实际上是压缩了一维状态 dis[k][i][j] 中间最大点为k时的值 同理对于这题我们在不方便求环的情况下同样可以选择设:环中的最大点为K ans=dis[i][j]+G[i][k]+G[j][k];Code:#include<iostream>#in
2017-05-27 12:05:07 519
原创 Uva 580 排列组合
我发现数学还是很有用的( ⊙ o ⊙ )想了一节课才推出式子,数学竞赛的一会就想出来了orz.要看排列组合的书了. 推导过程有时间在写估计不会了 Code:#include<iostream>#include<cstdio>#include<cmath>#include<cstring>#include<algorithm>#include<cstdlib>#include<vect
2017-05-24 12:11:44 348
原创 UVa 1395 kruscal变形
#include<iostream>#include<cstdio>#include<cmath>#include<cstring>#include<algorithm>#include<vector>using namespace std;const int N=1e2+10,INF=1000000000;int n,m,pa[N];struct edge { int
2017-05-23 21:06:58 303
原创 UVa 10791 唯一分解定理
可以比较两种代码:#include<iostream>#include<cstdio>#include<cmath>#include<cstring>#include<algorithm>#include<cstdlib>#include<vector>#define fo(i,a,b) for(int i=a;i<=b;i++)#define fod(i,a,b) for(int
2017-05-23 15:47:36 371
原创 UVa 10375 唯一分解定理
#include<iostream>#include<cstdio>#include<cmath>#include<cstring>#include<algorithm>#include<cstdlib>#include<vector>#define fo(i,a,b) for(int i=a;i<=b;i++)#define fod(i,a,b) for(int i=a;i>=b;
2017-05-23 14:12:45 427
原创 UVa 12169(基础模运算)
#include<iostream>#include<cstdio>#include<cmath>#include<cstring>#include<algorithm>#include<cstdlib>#include<vector>#define fo(i,a,b) for(int i=a;i<=b;i++)#define fod(i,a,b) for(int i=a;i>=b;
2017-05-23 12:57:32 318
原创 UVa 11582
#include<iostream>#include<cstdio>#include<cmath>#include<cstring>#include<algorithm>#include<cstdlib>#include<vector>#define fo(i,a,b) for(int i=a;i<=b;i++)#define fod(i,a,b) for(int i=a;i>=b;
2017-05-22 18:06:29 599
原创 基础数学
gcd–最大公约数与lcm–最小公倍数 void gcd(int a,int b) { return b==0?a:gcd(b,a%b); } 这个式子基于这样一个事实: gcd(a,b)=gcd(b,b%a); 证明: 设:a,b(a>b),d为a,b的一个公约数,a=sd,b=td,b=aq+r; 所以: a%b=r ;a\b=q
2017-05-22 17:02:04 341
原创 UVa 10934 (主要是思路)
描述:你有一栋n层的大楼和k个球,询问至少需要多少次确定球的硬度 分析:对于球的硬度,即是在高度为i时,球没碎掉,而在高度为i+1时,球碎掉了,此时便可以确定球的硬度为i. 主要是对于题目的理解:最坏情况是在最后一层但你不知道 约束在于球的个数有限制 完了分类:能否破掉进行转移Code:#include<iostream>#include<cstdio>#include<cm
2017-05-22 11:40:55 588
原创 uva 1252
#include<iostream>#include<cstdio>#include<cmath>#include<cstring>#include<algorithm>#include<cstdlib>#include<vector>#define fo(i,a,b) for(int i=a;i<=b;i++)#define fod(i,a,b) for(int i=a;i>=b;
2017-05-10 12:18:45 384
原创 UVa 10817 状压+记忆化搜索
描述: m个教师,n个求职者,s门课程.每门课程至少需要2个老师教,问符合要求的最小值 分析: 首先定义状态:对于每一个老师只有教或者不叫两种决策,而方程想要转移,很容易看出需要知道此时老师教授的情况.故:定义:f[i][s1][s2] i表示依考虑到前i个老师 s1为一个老师教的集合 s2为两个老师教的集合 f[i][s1][s2]=min(f[i+1][s1`][s2`],f
2017-05-09 19:35:34 291
原创 hdu 2196
算是对这篇的补充吧,讲解也在这~~摸我 再提一下:找出树的直径,然后分别从两个端点更新dis,最后取maxCode:#include<iostream>#include<cstdio>#include<cmath>#include<cstring>#include<algorithm>#include<cstdlib>#include<vector>#define fo(i,a
2017-05-08 21:40:08 409
原创 UVA 12186 树上dp入门
这题实在没有什么好说的,除了需要知道儿子这个信息,什么都不需要.状态设计也很简单 直接上代码:Code:#include<iostream>#include<cstdio>#include<cmath>#include<cstring>#include<algorithm>#include<cstdlib>#include<vector>#define fo(i,a,b) fo
2017-05-08 20:59:27 309
原创 树上dp的基本东西
这是紫书P280~P282的读书笔记树的最大独立集 概念:在一个无根树中选出一些互不相邻的点,使这个集合最大 定义:d[i]为以i为根的子树中最大独立集的值,s[i]表示i的儿子,gs[i]表示孙子 方程:对于i点只有两种状态选或者不选,可以看成一个01背包问题,转移只有两种: d[i]=max(1+sum(d[j1]),sum(d[j2]));j1∈gs[i],j2∈s[i
2017-05-08 16:54:55 1383 1
原创 UVA 11584 划分回文串
4月事情有点多,没怎么写,这个月要抓紧了.思路: 用动态规划判断会问串:d[i][j] 代表从位置j开始的长度为i的是否为回文串; 容易得到 if(ck[i-2][j+1]&&c[j]==c[j+i-1]) ck[i][j]=1; 注意要先算所有同一长度的 所以 for(int i=3;i<=n;++i) for(int j=1;j<=n-i+1
2017-05-03 16:26:49 363
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人