![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
OI online
文章平均质量分 78
一芥书生
迷茫的人
展开
-
pku1038状态压缩dp
额,其实我是dp菜,这道题是看了N个大牛的题解写过的,速度也不是很快。题目大意: 一个n*m的矩阵,往里放2*3的多米诺骨牌,其中矩阵有些地方是坏的,这些地方不能放。简略题解: 很显然应该用状态压缩的dp,因为n 附程序:program pku_1038; var f:array[0..2,0..60000] of longint; sum,a:arr原创 2010-04-28 10:30:00 · 585 阅读 · 0 评论 -
pku2391 最大流,二分答案,弗洛伊德
跟pku2112差不多,神奇的二分答案,这个需要拆点。program pku_2391; const inf=10000000; var p,o,tc,pre,other,c:array[0..100000] of longint; last,late,d,num:array[0..1000] of longint; a:array[0..402,0..402] of原创 2010-05-18 09:05:00 · 389 阅读 · 0 评论 -
pku3680 网络流
额,最近几天没怎么写程序,关键数学初赛考萎了,以后要多做数学了。这道题我叫了N遍,最后发现是由于他多组数据,l没有初始化。。。。题目大意: 一个数轴上,有n条线段,每条的线段有a[i],b[i],w[i]表示起点终点和权值。让你选若干条线段让这些线段的和最大。数轴的某一段区间可以被重复选k次。简略题解: 首先膜拜cai0715,看了他的构图方法才做出来的。 先离散化,原创 2010-05-22 08:47:00 · 361 阅读 · 0 评论 -
pku1625 AC自动机,动态规划
我是dp菜。。而且这是第一次写AC自动机,以前AC自动机只是停留在理论阶段,虽然写过几次trie,但是这样完整的AC自动机还是第一次写。其实AC自动机就是一个树形kmp,fail指针都那么像(其实kmp里头我叫p数组,并且我现在还不会扩展kmp,只会朴素kmp和后缀数组,所以我是字符串菜,很多东西都不会呢)。题目大意: 给你n个字母,用这些字母组成长度为m的字符串,并且这些字符串中不能包原创 2010-05-24 20:11:00 · 667 阅读 · 0 评论 -
pku2594 最小路径覆盖
话说noip之后终于发现了最小路径覆盖原来是二分图匹配(其实noip前考过但是由于我太菜不知道),其实我感觉真正的进步是从noip后,可惜noip后没有以前那种感觉了,不知道为什么(具体情况等我哪天有心情了写篇长篇大论)。题目大意: n个点的有向无环图,让你求它的最小路径覆盖(点可以重复)。简略题解: 因为点可以重复,所以电和点的关系是可以传递的,所以就先传递闭包,也就是传说中原创 2010-05-24 14:55:00 · 489 阅读 · 0 评论 -
pku3084 最小割
恩,又是网络流,一个sap完事。。发现网络流这东西确实很厉害,很多东西很多模型都需要用到它。。题目大意: 一堆房子,有的房子之间有门,有的房子有侵入者,有的房子没有侵入者,有一个房间需要保护。I代表没有侵入者,NI代表有侵入者,一开始的N,M代表的n个房间和m房间需要保护。NI或者I后边跟一个k,然后后边k个数表示从第i个房间可以到达这些个房间不需要钥匙,而这k个房间到达第i个房间只原创 2010-05-22 19:45:00 · 401 阅读 · 0 评论 -
pku1204 AC自动机
话说又是AC自动机,我据说我掌握的还是很烂。。因为debug很长时间结果样例还是没过,然后找了份标程对着打然后样例过了然后wa掉。。最后通过我的debug终于过了。。题目大意: 有个矩阵和n个字符串,问这些字符串在矩阵中出现的位置。总共有八个方向,A代表正北,顺时针依次为B..H。简略题解: 关键在于弄清方向,这个很囧。。 建好AC自动机后按方向匹配就好。附代码:原创 2010-05-26 08:42:00 · 543 阅读 · 0 评论 -
pku3630 trie树
传说中的trie树,noip前认为非常bt的东西现在居然会用了。。。果然。。。题目大意: 给你n个字符串,问你是否有字符串是其他字符串的前缀。简略题解: 这个应该是trie比较基础的题目了吧。构建一棵trie树,每次插入的时候判断一下,如果这个字符串插完了,并且没有新加节点,那么这个字符串一定是其他的字符串的前缀。我们在标记一下所有字符串的结尾,如果某个字符串插入的时候碰到了另原创 2010-05-27 08:27:00 · 415 阅读 · 0 评论 -
pku1815 割边
这题wa了N次,就是改某个图不改某个图的问题。。题目大意: 一群人,1表示两个人能联系0表示两个人不能联系,一个起点s一个终点t,问最少删除多少个点能使s到t收不到信息,并且让你给出一组解,要求字典序最小。简略题解: 显然就是最大流。 把每个点拆成两个点i,i,从i向i连一条容量为1的边,如果i和j能联系,那么从i向j连一条容量为无穷的边。从s向s连一条容量为无穷原创 2010-05-29 14:35:00 · 569 阅读 · 0 评论 -
pku2001 trie
<br />最近几天没怎么做pku,主要因为这两天一直都考试。。给我烤糊了。。<br />各种考试总是失利,要是水平真不够我也就不说啥,关键是能拿分的结果因为细节问题丢分,整个题直接挂掉。。<br />看来还是需要做题的。<br />好吧,这个题我wa了好多次,因为细节问题。这要是考试我估计又挂了。。<br />题目大意:<br /> 从前有一堆单词,让你求每个单词的前缀,让这个前缀能没有歧义的表示这个单词。<br />简略题解:<br /> 就是构建一棵trie树,然后记录一个count[i]表示第i原创 2010-06-03 14:59:00 · 281 阅读 · 0 评论 -
pku1113 凸包
<br />wa了半天结果是快排要双关键字排序。。囧<br />题目大意:<br /> 从前有个国王,这个国王很贪婪,然后让修个围墙,这个围墙要求用料最少,而且距离城堡一定距离。。给你城堡的坐标。让你输出这个最小的长度。<br />简略题解:<br /> 其实就是凸包+一个以l为半径的圆周长。<br />附代码:<br />program pku_1113; var a,b,c:array[0..3000] of longint; n,r:longint; {------------原创 2010-06-04 14:50:00 · 424 阅读 · 0 评论 -
pku1195 二维树状数组
<br />ioi2001,没啥可说的 mobile phones,水过<br />program pku_1195; var c:array[0..1025,0..1025] of longint; a:array[0..1025] of longint; n:longint; {-----------------------} procedure change(x,y,d:longint); var t:longint; begin while x<=n原创 2010-06-03 20:07:00 · 408 阅读 · 0 评论 -
noi2004 曼哈顿
说实话这题我不会,找了份题解然后研究了很长时间还是不是很没明白,反正就小的那个量搜索,大的就dp,恩,然后就过了。题目大意: 有一些道路,南北和东西的ny1)B(x2,y2),就是从A到B必须走最短路,也就是两点的欧几里得距离。然后让你求解有没有一种方案,如果没有输出impossible,否则输出possible+最小费用+改变后的方向。简略题解: 由于m附代码:p原创 2010-05-17 20:13:00 · 628 阅读 · 0 评论 -
pku2486 treedp
我说过我是dp菜,这题纠结了好久。。题目大意: 给你一颗树和树上的节点的权值,求走m步能得到的最大权值,每条边能重复走。简略题解: 我用的是背包(因为只对这个比较熟悉),dfs路径时,最终的结果可能经过当前节点,也可能不经过。 可以这样设: f[i,j,0]表示i号节点为根走j步回到当前节点的最大权值 f[i,j,1]表示i号节点为根走j步不回到当前节点的最大原创 2010-05-14 21:37:00 · 345 阅读 · 0 评论 -
pku2112 最大流,弗洛伊德,二分答案
第一次写二分答案的最大流。其实二分答案是一个很神奇的东西,很多问题本来没法解决然后二分答案变成了判定性问题就可以很简单的解决了。膜拜cai0715,信偲牛,得永生!题目大意: n个挤奶机,m个奶牛,挤奶机和挤奶机之间,挤奶机和奶牛之间,奶牛和奶牛之间都有距离,求满足让所有奶牛都喝到牛奶的情况下,所走最大距离的最小值。简略题解: 其实一想就是最大流,但是这个最大流怎么写呢?我想了原创 2010-05-16 20:56:00 · 557 阅读 · 0 评论 -
apio2009 convention
话说这题非常恶心,我整整写了上午4节自习+三节晚自习题目大意: 给你一些线段,让你选出最多的不相交的线段,并且让这些线段的字典序最小。题解: 首先,如果是不要求字典序的话,应该很简单吧,按线段的结束时间从大到小排序, 然后贪心地求解。 好,这个思想很重要,我们先用这个方法来求出最多的线段数num,然后按字典序一个一个往里放,如果这条线段放进去不与已经放进去的线段重叠并且能够构成最优解,那么就原创 2010-04-28 10:57:00 · 1890 阅读 · 0 评论 -
pku3468 线段树lazy
线段树中有一个非常重要的东西叫做“lazy”也叫“yeptree”,(yep是2008年物理竞赛银牌保送sjtu联读班),因为yep和lazy在某种意义上是相似的?额,反正lazy是线段树中一个非常常用的东西。为什么管他叫lazy呢?就是每次在修改节点的sum值时,如果每次都下放到叶子节点,那么复杂度会变成nlogn,还不如直接暴力(树状数组还sqrt(n)呢,虽然我不会),而且对于某些修改一大段原创 2010-04-29 15:21:00 · 1166 阅读 · 0 评论 -
pku3648 2-sat
我曾经一直认为2-sat是一个非常恶心的东西,但是这次在pku上看到这题之后发现它跟连通分量有关系,最后搜了份题解发现是2-sat。额,反正是照着题解打的,然后结果。。。这道题居然神奇的rank1了,在pku上。。。(是pascal里头)题目大意: 话说有一堆夫妇,参加婚宴,两个圆桌,然后某些人会伦乱(男男,男女,女女均可,此题太邪恶了),一对夫妻不能在一个桌子上,让你求出一个可行的原创 2010-04-29 17:00:00 · 661 阅读 · 1 评论 -
pku2352 线段树
话说这题代码一小会就敲完了,但是说啥A不掉,一直wa,最后发现是边界为0我写了1,然后改了就对了。题目大意: 话说在一个平面直角坐标系有n个点,这n个点的等级的定义是它左下方向的点数,问从1~n-1每个等级各有多少个点。简略题解: 由于题目给的y第一x第二的升序,所以就用不着排序了,直接看x坐标,一个一个往里插,然后看比它小的有多少,用线段树维护。(其实可以用平衡树,树原创 2010-04-28 19:31:00 · 317 阅读 · 0 评论 -
pku2728 最优比率生成树
额,这个东西我是最近才听说的,然后想了半天没想出来,看了各种大牛的题解发现原来是二分答案然后用prim,真的很神奇。题目大意: 给你一堆点,每个点有x,y,d三个参数,分别是xy坐标和高度?额,反正就这意思,两个点距离为欧几里得距离,然后高度距离也是欧几里得距离。求sum点距离/sum高度距离最小。简略题解: 其实就是把除法乘过来然后转化成判定性问题,用二分答案的方法然后pri原创 2010-05-14 15:29:00 · 445 阅读 · 0 评论 -
pku3709 dp单调队列优化
我是dp菜的,尤其是对这种斜率优化的题目,从来都没写对过。膜拜apio金牌kib当场写对了那到题,我才20分朴素…………jinpaikib=jib。。。低调,这句话是教主说的,膜拜教主两铜。好吧,其实dp的优化写起来很简单,但是推导过程也很简单,主要是看你掌握的怎么样,我就属于掌握的不怎么样。题目大意: 给你一列数,这列数单调非减,然后让你把这列数分成若干部分,每个部分数的个原创 2010-05-14 15:00:00 · 954 阅读 · 1 评论 -
pku2828 平衡树
话说我对朴素的平衡树还是比较拿手的。。某次学了sbt之后就觉得这东西挺好用,恩,确实能解决不少问题。题目大意: 有一群人,要排队,额,确切的说是插队,给你一些信息,pos[i],val[i]代表这个人要插在第pos[i]个位置的后边,他的编号是val[i],最后让你输出这些人的站队顺序。简略题解: 就是维护一棵二叉树,满足左儿子在他前边,右儿子在他后边,最后先序遍历一遍就可以了原创 2010-05-14 20:05:00 · 483 阅读 · 0 评论 -
pku1821 dp的优化
好了我已经说过N次我是dp菜了,这道题交了N次连wa带re啊。。题目大意: 有k(1简略题解: 恩,我一开始只想到了n^2*k的算法,f[i,j]表示第i个围墙第j个人来刷的最小费用 f[i,j]:=max{f[j]+len*cost}但是对于n=16000显然TLE 然后就用一个队列来存储以前的结果,维护队列的单调性就可以了。附代码:program pku原创 2010-05-15 10:16:00 · 462 阅读 · 0 评论 -
pku1887 最长不上升子序列
恩,纯水。。高一的时候连平方都不知道,只知道nlogn,后来才知道平方的,额,果然是dp菜。题目大意: 给你一列数,求单调不上升子序列,以-1结尾。简略题解: 用单调队列维护这个序列,如果这个数比队尾数 至于这个算法为什么是对的,我想这个算法本身就是很好的证明吧(很多人问过,可是我太菜了。。)。附程序:program pku_1887; var a,c:arr原创 2010-05-15 10:53:00 · 361 阅读 · 0 评论 -
pku2226 最小点集覆盖,行列覆盖
最小点集覆盖居然是二分图匹配,我发现原来越简单的算法功能越多,比如floyd,应用更多了。。题目大意: n行m列的矩阵,*代表泥地,.代表草地。要求你用1*任意长的模板将水泥地全部覆盖,不能覆盖草地,问最少几块木板。简略题解: 我们把每一块连同的块都搞出来作为元素,行和列作为二分图的两个部分,有交叉的就连边,二分图匹配,就是结果。附程序:program pku_2226原创 2010-05-15 19:14:00 · 577 阅读 · 0 评论 -
pku2987 最小割,最大权闭合图
好吧, 我一开始认为我网络流还可以的,毕竟ctsc拿到题拿到了全场最高分(30分,集训队有10人左右拿到)。今天我发现我不论什么都很菜的,比如说上午的初赛吧。。额,,这个一会说,反正刚才这个题我就菜了,连割边都不会求的菜,终于知道割边原来用dfs。。题目大意: 给你一个图,上边有n个点,每个点有一些关系A,B表示A是B的上司,现在要你裁人,如果裁了一个人就要裁他的下属。好了,每个人都有一原创 2010-05-16 20:00:00 · 670 阅读 · 0 评论 -
pku2769 枚举,hash
<br />好久没更新了,因为在湖南,长沙一中,每天测试,讲题(主要是kib砖头sui和dmk)<br />我水了好几天。。。<br />题目大意:<br /> 一些数,让你求一个数,让这些数模这个数的余数不同<br />简略题解:<br /> 纯枚举,从1开始,理论复杂度是ans×n×time,但是能过且很快。。<br />竟然用windows的记事本编程,主要是用notepad++习惯了记事本的功能<br />附代码:<br />program pku_2769; var hash:array[原创 2010-06-17 20:30:00 · 559 阅读 · 0 评论