04 2014 档案
bzoj2245
摘要:这道题还是比较简单的费用流,由于w是递增的 实际上,这题数据还可以强一点,比如说分段函数不保证费用递增, 就要加一点技巧了(要保证函数的顺序) 1 const inf=100000007; 2 type node=record 3 next,point,flow,cost:longint; 4 en 阅读全文
posted @ 2014-04-29 23:29 acphile 阅读(167) 评论(0) 推荐(0)
bzoj2324后续思考
摘要:昨天写bzoj2324的解题报告的时候突然隐隐约约发现了我程序的一点问题 睡了一觉之后找到了反例 如下: 4 4 2 0 1 2 1 2 1 2 3 2 2 4 2 对于这个测试数据,显然最短路径和为 1个人呆在0点,1个人从走0—1—2—3—2—4 最短路径和为0+9=9 但实际我跑出的结果为10 阅读全文
posted @ 2014-04-21 15:55 acphile 阅读(102) 评论(0) 推荐(0)
bzoj2324
摘要:出题人真 口袋迷 很容易发现这是一道费用流的题目 很显然这个问题有两个难点: 保证走到某个点时之前序号的点都被走过 保证每个点都走 对于1,我们换个说法,一个人走到该点时经过的点的序号都小于该点 >3 只要满足了2和3,就一定满足1 现在来看3,也就是说两个点之间的最短路i,j,必须由k(k<j) 阅读全文
posted @ 2014-04-20 13:52 acphile 阅读(173) 评论(0) 推荐(0)
jsoi2014前两轮回眸
摘要:今天从常州回来了,第二轮考得惨不忍睹 大概来总结一下前两轮; 第一轮是4个小时,3道题,一道网络流,一道环形DP,一道线段树 最后一道题ahoi的原题(传送bzoj1798),非常水的线段树,是个很好的得分点 可是我作死般的有地方忘取mod,只得了10分 这次的D1 T3的knight和D2 T1的 阅读全文
posted @ 2014-04-19 20:04 acphile 阅读(260) 评论(0) 推荐(0)
bzoj1293
摘要:简易贪心+heap 注意要用链表 1 type link=^node; 2 node=record 3 loc:longint; 4 next:link; 5 end; 6 point=record 7 loc,num:longint; 8 end; 9 var w,b:array[0..70] o 阅读全文
posted @ 2014-04-16 23:13 acphile 阅读(150) 评论(0) 推荐(0)
bzoj1189
摘要:初看这题好像跟我mincost第一题很像,多了点门其实最短路/bfs与处理一下就可以了 但是门只能容纳一个人 所以,也就是说,费用是变的,怎么做? 仔细想想,费用流好像不能处理费用改变的 扔掉费用流,首先决策具有单调性,二分! 当我们确定了时间之后,我们怎么快速的判断可行呢? 由于门每分钟只能容纳一 阅读全文
posted @ 2014-04-16 23:08 acphile 阅读(319) 评论(0) 推荐(0)
bzoj1934 bzoj2768
摘要:最小割的经典模型,体现出最小割的基本定义,把两个集合划分的最小代价 把一开始同意的人连源点,不同意的连汇点,有关系的人之间连边,流量都为1 不难发现,割两点(人)间的边就相当于朋友之间发生冲突 割到连源汇点的边就相当于与原来意愿不同 所以解决问题的方案等于图中的一个割 则最少冲突数=最小割=最大流 阅读全文
posted @ 2014-04-14 15:51 acphile 阅读(138) 评论(0) 推荐(0)
bzoj1854
摘要:神奇了 朴素的做法不难想,二分图最大匹配(汗,我其实还是想了一会,太弱了) 左边点集为能打的属性值,右边把武器作为一个点 武器和两个属性连边, 然后和superhero那题差不多,顺次找匹配,找不到了就退 然后分析一下规模,感觉能卡过去,于是就真卡过去了(……) 其实,因为n很大,每次找匹配要fil 阅读全文
posted @ 2014-04-13 19:54 acphile 阅读(281) 评论(0) 推荐(0)
bzoj1070
摘要:平均时间最短即总时间最短 首先不难想到,将每个工作人员拆成n个点 然后,我就卡住了, 的确,正向建图确实很难,因为我们不好表示在修第i个车之前,前面用了多少时间 于是我们应该逆向想一想,将这辆车作为某个工作人员倒数第k个修的车会对之后的时间做怎样的影响 显然,每个工作人员修车是相对独立的 也就是说, 阅读全文
posted @ 2014-04-12 23:16 acphile 阅读(121) 评论(0) 推荐(0)
poj1149
摘要:非常好的网络流 每个顾客分别用一个结点来表示。 对于每个猪圈的第一个顾客,从源点向他连一条边,容量就是该猪圈里的猪的初始数量 对于每个猪圈,假设有n个顾客打开过它,则对所有整数i∈[1, n),从该猪圈的第i个顾客向第i + 1个顾客连一条边,容量为无穷。 从各个顾客到汇点各有一条边,容量是各个顾客 阅读全文
posted @ 2014-04-12 18:19 acphile 阅读(145) 评论(0) 推荐(0)
poj2373
摘要:其实这道题不是很难,不难想到f[i]表示覆盖到[0,i]的最少喷头数 很明显是一个dp+单调队列的问题 但是细节问题比较多,首先是不能覆盖到[0,l]外面,所以长度为奇数不能被完全覆盖 还有一些区间[bi,ei]只能被一个喷头覆盖,这意味着[0,s],bi<s<ei也是不能被完全覆盖的 标记一下就好 阅读全文
posted @ 2014-04-09 23:01 acphile 阅读(337) 评论(0) 推荐(0)
bzoj1001
摘要:平面图求最小割; 其实看bzoj1001一开始着实把我怔住了 AC的人暴多,可自己完全没思路 后来看了某大牛的ppt,才会做 一个月前做这题的吧,今天来简单回忆一下; 首先是欧拉公式 如果一个连通的平面图有n个点,m条边和f个面,那么f=m-n+2 我们把原图的每个面看成新图的一个点,对于原图中的每 阅读全文
posted @ 2014-04-09 22:54 acphile 阅读(338) 评论(0) 推荐(0)
bzoj1029
摘要:贪心,比较明显了(很像USACO的风格);按时间限制排序(升序)顺次处理,如果当前时间能够修复就修复否则就在之前修复的任务中找一个耗时最多(大于当前任务)的,改成修当前任务;显然这样最优吧,毫无疑问要维护大根堆(耗时);codevar heap,a,w:array[0..150010] of lo... 阅读全文
posted @ 2014-04-08 22:07 acphile 阅读(141) 评论(0) 推荐(0)
bzoj列表2
摘要:之前发过一次了,这里的题较水,没什么好讲的 bzoj1088 直接穷举前两位即可,话说程序员的扫雷是白玩的? bzoj1083 裸的最小生成树(最小生成树=最小瓶颈树),SCOI大丈夫(话说网上二分是什么心态?); bzoj1191 裸的二分图,顺次找匹配就行了,根据匈牙利算法的性质,找不到增广路直 阅读全文
posted @ 2014-04-08 22:02 acphile 阅读(113) 评论(0) 推荐(0)
poj3275
摘要:比较笨啊,一直在想,到底问几次绝对能知道所有的关系呢? 后来看了题解才知道,问一次最少确定一对关系………… 这就好办le,n头牛有C(2,n)个关系 现在给出m条边,以确定的关系有多少呢?直接dfs啊…… ……O(nm) 1 type link=^node; 2 node=record 3 po:l 阅读全文
posted @ 2014-04-08 21:55 acphile 阅读(172) 评论(0) 推荐(0)
3月下旬剩余poj题解
摘要:poj1700 数学推导+简单dppoj2390 水题不说什么了poj3260 先对找的钱做完全背包,在对能付的钱做多重背包,注意这道题能付的钱数的上界poj2516 裸的最小费用最大流了没什么好说,注意每件物品分开来做 阅读全文
posted @ 2014-04-08 21:52 acphile 阅读(86) 评论(0) 推荐(0)
后缀数组整理
摘要:总感觉自己运用后缀数组能力不够啊,先整理一下之前我做过的后缀数组的题目吧 先上基本模板(倍增) 1 readln(s); 2 n:=length(s); 3 fillchar(sum,sizeof(sum),0); 4 for i:=1 to n do 5 begin 6 y[i]:=ord(s[i 阅读全文
posted @ 2014-04-06 15:04 acphile 阅读(175) 评论(0) 推荐(0)
poj2761
摘要:表面上看是主席树之类的区间k大 实际上,除了主席树,还可以测各种结构 因为题目中说,任意区间不会完全包含 于是,我们把区间按左端点排序,依次添加,用平衡树求当前的k大 每个狗最多被添加一次,删除一次 所以复杂度为O(nlogn) 被来写的是splay,结果一直WA到死 结果改成treap,第一次写就 阅读全文
posted @ 2014-04-04 18:15 acphile 阅读(149) 评论(0) 推荐(0)
poj1180
摘要:斜率优化dp 据说这题朴素的O(n2)dp也可以A 没试过 朴素的dp不难想:f[i]=min(f[j]+sumtime[i]*sumcost[j+1,i]+c*sumcost[j+1,n]) 稍微解释一下,当选择j+1~i为同一批任务的时候 j+1~n的任务都要额外花费开机的时间 复杂度是O(n2 阅读全文
posted @ 2014-04-02 19:07 acphile 阅读(183) 评论(0) 推荐(0)
poj3254
摘要:还是那句老话:dp关键在状态; 求有多少种排布方式,是任意两头牛不相邻(有些地方不能放); 不用心,一开始还纠结了半天 和之前USACO上某题方法是一样的,每一行放或不放只有两种情况 把它当作一个二进制数,转化为十进制作为状态则 到第i行第j种状态的方案数为 f[i,j]=sigma f[i-1,k 阅读全文
posted @ 2014-04-01 21:45 acphile 阅读(113) 评论(0) 推荐(0)
poj3321
摘要:树映射到树状数组上 非常好的题目,给了我很多启发 题目要求动态求一个棵子树的节点个数 不禁联想到了前缀和,只要我们能用一个合适的优先级表示每个顶点,那么就好做了 我们可以考虑将子树表示成区间的形式 这个子树的根节点显然是区间的右端点,那么左端点一定是子树中编号最小的那个 这样问题就转化为区间求和,单 阅读全文
posted @ 2014-04-01 21:38 acphile 阅读(174) 评论(0) 推荐(0)
漫长的补结题报告之路 poj3622
摘要:题意(引用):题意:有很多种草,有两个属性:价格和新鲜度;有很多牛,它们都会各自需求一种草,要求是其价格最低为ai,新鲜度最低为bi,且这些牛不希望自己的草和别人的一样。问要满足所有需求的最小花费是多少? 一开始想的都是各种匹配,结果正解是贪心…… 应该来说想不到好方法时,不是二分答案就是贪心了吧? 阅读全文
posted @ 2014-04-01 21:25 acphile 阅读(238) 评论(0) 推荐(0)