05 2013 档案
摘要:上一题的模板应用,好久没做图论,结果建图一塌糊涂。。。题意,给出一个矩阵,求从左上角到右下角走k次使路上所得的权值最大,其中经过一个权值后,该点权值清零。思路:建图,每一个格子为一个点,同时衍生另外一个点,用来存清零后的路线,则每个点有两条路,一条是容量为1,权值为给出的值,一条为容量为k,权值为0...
阅读全文
摘要:最小费用最大流模板,这是摘抄别人的模板、、、罪恶啊,等省赛后好好搞网络流自己敲。题意给出一个无向图,求1到n点最短环路,要求每个点只能经过一次;思路:即找出图中无交集的两条最短路,建图,源点与1,汇点与n相连,同时附容量为2,其他边则附容量为1。代码:#include #include #inclu...
阅读全文
摘要:单调队列,最近状态不好啊。。省赛了,要加油。。单调队列,这题先将数组转换为前N项和的形式,然后遍历一遍,求a[k-i]即k到i的最大值,其中,控制i的范围。。。然后单调队列从一开始判断,保持队头为最小值,然后加上判断语句,若i-s【top】>k 队头退队即可。代码:#include#include#...
阅读全文
摘要:之前青岛市的一个比赛有题线段树,结果自己实在太二,用线段树去敲没想到自己哪儿错了。。。结果今天回来一做一道求最值的水题就发现自己的错误了。。。。导致那场比赛呗虐啊。。。。#include#includeusing namespace std;const int inf =1b?a:b;}int mi...
阅读全文
摘要:map 的使用 注意first 为key值 second 是value值然后就是在杭电上头文件对于map的map::iterator i;的操作。使用#include会编译错误。。则不会对于hdu1263,由于map存储是按KEY值的字母顺序排序,所以这里免去了排序的步骤。STL很强大!hdu100...
阅读全文
摘要:这题主要用来练习一下划分树和线段树;线段树也可以做,但是划分树+二分思路更清晰。划分树用来求logn时间的区间中第k大值,其中如果有相同大的值也不会覆盖,如区间内有2个5,则一个5为第n大,另一个5为第n+1大;还是3种方法代码都敲出来吧,其中线段树和树状数组的思路是相同的,就是先对查询和原数组进行...
阅读全文
摘要:题意:有一个长板子,多次操作,有两种操作,第一种是给从a到b那段染一种颜色c,另一种是询问a到b有多少种不同的颜色。这题更加让我理解线段树的结构了,特别是lazy思想的运用。事实上lazy思想就是个懒人的标记,若对于这个结点lazy标记为true,就代表不需要继续查找缩小的区间了。主要是在更新结点的...
阅读全文
摘要:线段树很有用噢!多练练,lazy思想是什么呢,下一题学一下。题意:对一个数组进行更改,和查询区间之和.#include#includeusing namespace std;struct segtree{ int l; int r; int mid; int max; ...
阅读全文
摘要:题意,给出n*m矩阵,求从r到a的最小步长,其中遇到x两步,' . '为通路' #'为墙。这题可以直接BFS,我这里第一次用优先队列做,使用STL有风险,一般做小规模模拟题可以,但是STL事实上其操作更繁琐,只是用起来方便而已。优先队列:priority_queue 这里用一个结构体来作为容器,在其...
阅读全文
摘要:简单的树状数组题,从题意可知,由于N太大,直接模拟操作复杂度太高,则利用树状数组的logn算法。树状数组我只做过一题,然后拿之前的模板来做二维的,没啥难的。结果abs()里面用了intCE了一次,没注意用了cinTLE了一次,简直傻逼- -。。。#include#include#include#in...
阅读全文
摘要:题意:求给出的数组中元素求和能被m整除的最大元素个数.一开始想BFS搜索,数据太大,无果。太急去敲了,应该早就料到数据太大,但是有一个思路之后却总想去试试。。好了,DP状态转移方程dp【i】【(v+a【i】)%m】=max(dp【i】【(v+a【i】)%m】,dp【i-1】【v】+1) //dp[i...
阅读全文
摘要:#include#include#include#define MAXN 815#define INF 1e8#define min(a,b) (ab?a:b)using namespace std;struct edge{ int u,v,w,next;}E[200000];int head[MA...
阅读全文
摘要:比赛中常用的素数,这里总结一下各方面,先贴一个搞笑的打印素数貌似是线性级别的高效。。/*遇到素数需要打表时,先估算素数的个数:num = n / lnx;num为大概数字,越大误差越小(只是估计,用于估算素数表数组大小)这个打表法效率貌似很高,网上说几乎达到了线性时间(不知道是真是假=。=)*/#i...
阅读全文
摘要:下面是几个比较大的在线提交系统(Online Judge)里面有大量历年的竞赛题目,注册一个ID,然后用自己熟悉的语言(一般有Pascal/C/C++/Java)写好源代码提交即可,会实时返 回信息告诉你是否正确。采用黑箱测试,系统里有一套标准的输入输出数据(对外保密,而且通常数据很多很怪),你的程...
阅读全文
摘要:题意,给出一个五环图,求出切割某条边后使两个子树差值最小的最小差值。这是一次和山东其他学校的练习赛中的一道题,当时想了很久各种超时,其实明明自己算了复杂度会超时但还无脑的去敲。。。太逗了。想了各种优化,但其实还是自己主要思路没想好和复杂度控制的问题。最后问了肖太爷的思路,参考了他的代码,原本自己思路...
阅读全文
摘要:跟上题一样,因为一开始那份模板用的少,总怀疑那份sap模板出错了,今天换了一个模板做另外一题很像的题。(先前的模板不能处理过大的数)事实证明我过程中处理错了,好吧,先放着,校赛完在来找错了。////////////////////////////////////////////最后在错误在建图的过程...
阅读全文
摘要:好吧算增加了一个模板吧。。过两天要校赛了,没过的题先放着,这两天把做过的整理整理。构图思路:将点拆分成2组,一组代表牛,一组代表遮蔽点,然后构建源点和汇点;用floyd求出点与点之间的最大距离,根据最大距离开始二分,使距离小于mid的点在最大流中开路,若得出最大流等于牛的个数,mid减少,否则增大。...
阅读全文