02 2013 档案
摘要:题目链接经典的区间DP问题,求解矩阵乘法的次数。按记忆化搜索写的。 1 #include <cstdio> 2 #include <cstring> 3 #include <cmath> 4 #include <queue> 5 using namespace std; 6 #define N 100 7 int x[N+1],y[N+1]; 8 long long dp[101][101]; 9 long long dfs(int L,int R)10 {11 long long minz;12 int i;13 if(dp[L][R] >
阅读全文
摘要:题目链接省赛的D题。。。。一年前的题目了。。。思路早就问过侯神了,就是讨论各种情况。。。早就想写一下,一直拖着。。今天乱写了一下。。终于过了。。写的太繁琐了,而且出现BUG了过不了样例,又加了一个判断,过了样例就AC了。。。 1 #include <cstdio> 2 #include <cstring> 3 #include <cmath> 4 #include <queue> 5 using namespace std; 6 int o[51][51],n,m,z; 7 int a[4] = {0,0,1,-1}; 8 int b[4] =
阅读全文
摘要:题目链接关键在于建图,昨天做的的时候直接想错了。放了放,在路上和gyx讨论了一下,他说是不是拆点,我一想真是啊。。。然后想了想建图的细节。。。今天写了程序,居然把电脑给写挂了。。第一次啊,可见程序写的多不靠谱啊。。把一个点拆成两个点,这两个点之间的流量为1,费用为权值,这条边的起点和终点都可以连接下个位置的起点。为了控制流量,多加了k个点,这多出来的k个点,到终点的流量为1,来控制最终的流量。剩下的就是模版了,改了一下求最大。这样建图效率不是很高,想会不会超时。。。果真TLE了,不过数组开小了,开大之后,水过400+ms。。。 1 #include <cstdio> 2 #incl
阅读全文
摘要:题目链接这个题目,建图我是按源点->(有流量无费用)->人->(无穷的流量有费用)->仓库->(有流量无费用)->汇点建图没弄好wa了一次。剩下就是模版了。。 1 #include <cstdio> 2 #include <cstring> 3 #include <cmath> 4 #include <queue> 5 using namespace std; 6 #define INF 0x7fffffff 7 8 int pd[51][51]; 9 int im[51][51]; 10 int cc[51]
阅读全文
摘要:题目链接最小费用最大流算法 就好像是EK的变形。bfs的时候类似spfa找最短路,更新cost。因为我是从 EK 的代码基础上改的,然后没发现if(u == end) break;和这个不一样。。。一直WA,注意数组开大一点。先搜到的不一定是最优结果啊!!!最小费用 最大流 邻接表模版。 1 #include <cstdio> 2 #include <cstring> 3 #include <cmath> 4 #include <queue> 5 using namespace std; 6 #define INF 0x7fffffff 7 in
阅读全文
摘要:邻接矩阵转邻接表,费了些时间啊。突然发现dinic用的好像是迭代深搜的思想把。dinic写的有点问题,删了。EK邻接表版本 1 #include <cstdio> 2 #include <cstring> 3 #include <cmath> 4 #include <queue> 5 using namespace std; 6 #define INF 0x7fffffff 7 int low[201],path[201]; 8 struct node 9 {10 int u,v,w,next,re;11 }edge[201*201];12 in
阅读全文
摘要:题目链接根据连续的和建图,然后判断是否有负环。注意细节,加上超级源点后,有n+1个点。忘了初始化了,让我WA了N次啊。#include <iostream>#include <cstdio>#include <cmath>#include <cstring>#include <queue>#include <cstdlib>#include <ctime>#include <map>using namespace std;#define N 1001struct node{ int u,v,w,ne
阅读全文
摘要:题目链接题意:两种信息 ,p是代表确定信息sv在ev的北边多w,v是代表sv在ev北边至少1不确定。差分约束,还是不太懂啊,自己想了个扯淡的算法,非常复杂而且还不对。。。看了看题解做法,这个题目做法是化等式为不等式,然后构造超级源点,判断是否有负环存在。sv - ev = w 化为 sv - ev >= w &&sv - ev <= w然后建图,一遍spfa就行了。 1 #include <iostream> 2 #include <cstdio> 3 #include <cmath> 4 #include <cstring
阅读全文
摘要:题目链接差分约束,一般求最大差值的时候 求的是最短路,求最小差值的时候求的是最长路。题意:给出a,b,c,必须满足第b个人比第a个人至多c,b - a <= c,然后简单来说,就是求n-1的最大差值。开始套的模版WA了,然后发现DISCUSS说,queue会超时,很奇怪,然后我用栈写,依旧WA了,不科学啊。。找了份也用spfa写的代码,发现INF开的有点大了。。。导致WA了。。。 1 #include <iostream> 2 #include <cstdio> 3 #include <cmath> 4 #include <cstring>
阅读全文
摘要:题目链接第一个差分约束的题目。看了好多的博客,差分约束就是根据不等式建好图,然后求最短路或者最长路即可,很明显建图是关键。这个题的题意是,给很多的区间,每个区间上至少ci个数,问最这些数最少有多少个。这个题解讲的不错http://www.cnblogs.com/jiai/archive/2012/09/20/2696007.html建图的的时候,不等式的方向要全部相同。s[i+1]表示这个集合在[1-i]的个数s[bi+1] - s[ai] >= ci;//题目中给出s[i+1] - s[i] >=0;//隐藏条件s[i] - s[i+1] >= -1;求s[maxz] -
阅读全文
摘要:这个算是一个模版题,不过以前没见过。。。我冥思苦想,想爆搜,却知从何搜起,然后突然想到以前做过一个最小环的,关于某一个点的最小环两遍spfa,搞定。然后我啪啪开写,先自己把数据转化为点,然后离散一下。。。写了老长,还选择比较好写的floyd,样例过不了,意识到发现这样写不对啊。。。从网上找到了做法。。1:朴素的求最小环的方法做E遍Dijkstra,枚举每条边e(i,j),删去边e(i,j)之后,求i到j的最短路经,然后再加上该边求最小值便得到的了最小环,时间复杂度为O(E*(N^2))。2:改进的floyd算法,求出任意两点之间的最短路的同时,求出最小环。我用的是后者,因为图都建好了。。。不能
阅读全文
摘要:没思路,实在是没想出如何爆搜。查看题解,认真研究了nocow上的7个提示,然后发现我还是不会写,无奈之下,看别人代码,看了很多份,终于过了。。。用到了迭代搜索(dfsid),就是说确定搜索的层数,将问题转化为n个木头能否切成k块木板,因为贪心策略,k块木板肯定是最小的k块,这样的搜索以前好像没这样写过,二分再加上两个优化就可以过了。加的是 浪费量和标记搜索木头,详细请看nocow上题解把。。。这份代码wood和board都是从小到大排的,把board从大到小排,同样也可以过,而且更快一点,但是wood必须从小到大。。。第二个优化必须根据wood从小到大。 1 /* 2 ID: c...
阅读全文
摘要:题目链接注意不要用memset,手写初始化。直接map TLE,然后哈希字符串同样TLE了。。换了方法终于水过去了。 1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <cmath> 5 #include <algorithm> 6 #include <map> 7 #include <string> 8 #include <vector> 9 using namespace std; 10 int l
阅读全文
摘要:以前一次比赛中遇见过。一直以为价值为a和b的两种钱币,最大组不成的是a*b-a-b。。。后来发现前提是a和b两个是互质的。知道这个结论,这个题目就转化为背包了。如何证明,我没想出来,也有点怀疑正确性。不过代码数据都过了。 1 /* 2 ID: cuizhe 3 LANG: C++ 4 TASK: nuggets 5 */ 6 #include <cstdio> 7 #include <cstring> 8 #include <iostream> 9 #include <cmath>10 #include <algorithm>11 u
阅读全文
摘要:终于回到实验室了。。。埋头切题。。。寒假唯一场cf,前3个比赛时候做出来了,第四个,我理解错题意+不会字符串哈希+不会trie树 == 做不出来。。D. Good Substrings先贴一份 看别人写的字典树自己改编的字典树。。。太神奇了,字典树写的这么简洁。。。 1 #include <cstdio> 2 #include <cstring> 3 #include <string> 4 #include <iostream> 5 using namespace std; 6 char str[1501],o[27]; 7 int trie[1
阅读全文
摘要:凭着感觉写的,维数有点多,脑子就有点乱。。状态转移,还是挺好想的,开个标记数组记录j-1的最大唱片数。 1 /* 2 ID: cuizhe 3 LANG: C++ 4 TASK: rockers 5 */ 6 #include <cstdio> 7 #include <cstring> 8 #include <iostream> 9 #include <cmath>10 using namespace std;11 int dp[21][21],o[21];12 int p[21];13 int main()14 {15 int i,j,k,n,
阅读全文
摘要:模板题。精度让我错了一次。 1 /* 2 ID: cuizhe 3 LANG: C++ 4 TASK: fence9 5 */ 6 #include <cstdio> 7 #include <cstring> 8 #include <iostream> 9 #include <cmath>10 using namespace std;11 int gcd(int a,int b)12 {13 return b == 0?a:gcd(b,a%b);14 }15 int main()16 {17 int x,y,p;18 int a,s,...
阅读全文
摘要:数据结构基础。忘了,还得看以前写的。。 1 /* 2 ID: cuizhe 3 LANG: C++ 4 TASK: heritage 5 */ 6 #include<stdio.h> 7 #include<string.h> 8 void build(int n,char *s1,char *s2,char *s) 9 {10 int i;11 if(n <= 0) return ;12 for(i = 0; i < n; i ++)13 {14 if(s1[0] == s2[i])15 ...
阅读全文
摘要:这个题卡了3个月啊,看了题解依旧不会写。。。从中找了一个思路比较简单,而且好写的,把每个顶点,左右微调一下,然后找出穿过起点到微调后的点 最近的边,一定可以看见。这个算法正确性,我不太确定,确实可以把所有数据过掉。。调了好久,好久,各种变量名敲错啊,后边大部分全是抄的。。。第三章终于做完了。。。那3个很快就水过了。。 1 /* 2 ID: cuizhe 3 LANG: C++ 4 TASK: fence4 5 */ 6 #include <cstdio> 7 #include <cstring> 8 #include <iostream> ...
阅读全文
摘要:模板,主要是参照浙大的模板和黑书。做了POJ计划上计算几何初级上的题,成功的迈出了计算几何第一步!常用结构体和宏定义#define eps 1e-8#define PI 3.141592653#define _sign(x) ((x) > eps?1:((x) < -eps ? 2 :0))//sign(x)是用来控制精度的浙大和黑书上关于这个函数写法不一样。正返回1负返回2,接近正负eps返回0#define zero(x) (((x) > 0 ? (x):(-x)) < eps)//接近0返回0,其他返回绝对值struct Point{ double x,y;};s
阅读全文
摘要:本来弄了个独立博客,想用那个的,不习惯,还是用博客园吧。那个留着吓弄吧。 在家了4天,玩了3天半,那半天学会凸包,临走回家,拿了两本书,C++ primer和黑书,还有浙大的模板,天天玩,这是要跪的节奏啊。 学凸包,黑书上讲的特好。。。 凸包,原来以为听高端的。其实,也不难的。看着黑书,和浙大模板,把POJ计划上凸包两个题,秒掉应该是没有问题的。我看那个版本的浙大模板有点问题,没有考虑所有的点都共线的情况。 期间一场CF,让我给睡过去了,scf在家做了,我好惭愧。。。回家了就是想睡觉额。。。 POJ 2187Beauty Contest 凸包之后,求最远点距离平方,1...
阅读全文