解题报告
文章平均质量分 75
Skyprophet
这个作者很懒,什么都没留下…
展开
-
C++心得&疑问~
<br />最近学C++已经有点感觉了,但是总体还是没有P那么习惯~<br />正常的程序可以写~但是还没有开始学STL库~<br />那个东西确实很强大,但是需要背的东西也比较多~<br />还有总算是把一些函数过程和他们需要调的头文件对上号了~<br />当然问题还有一大堆~<br />希望路过的C++大神可以帮我下:<br />1、P里面的repeat怎么通过C++实现~<br />2、如果在整个过程中要先后读两个文件甚至要同时读两个文件怎么做到<br />3、如何实现过程或函数中将某些参数的值带回主原创 2011-03-01 10:02:00 · 1143 阅读 · 3 评论 -
[PKU 2104]K-th Number(归并树)
【题目大意】:看之前的那个题解~~【题目分析】:经历了ranklist倒数的悲剧事件后~~我决定学学这个归并树……那么什么是归并树呢~我习惯管这个东西叫线段树套数组……开个线段树,里面就是这个区间排完序后的数列……当然,我们不能每个节点都开,所以我们搞一个数组data[i,j],表示第i层第j个数是什么。这个层就是线段树节点所在深度~~然后呢,自然就是二分,然后原创 2010-04-20 13:43:00 · 1358 阅读 · 3 评论 -
[NOI 2008]志愿者招募(费用流)
【题目描述】:一共有n天,每天需要a[i]个人,一共有m类志愿者,每类有无限个,可以从s[i]服务到t[i],需要花费c[i]的费用。问要满足要求,最小的费用。【题目分析】:这题有一个经典的也很奇妙的构图法:利用不等式构图~这个我不懂,想看的话请到byvoid神牛的blog里面搜~~我的想法很朴素,流的话就表示人。用容量来限制需要的人数。这样我有n+3个点,一个源点(0号),一个汇原创 2010-04-20 20:04:00 · 2005 阅读 · 1 评论 -
[NOI 2008]假面舞会(综合图论)
【题目大意】:一共有n个人,每个人都带着面具,然后一共有k类面具,并且知道k>=3。只有带第i-1类面具的人能看到带第i类面具的人,带第k类面具的人能看到带第1类面具的人。告诉你m个信息,谁能看到谁。问你k的最大值和最小值。【题目分析】:作为练习考的NOI 2008 day1,据说是最简单的一个题……花了我三个小时想、写还有调……绝对IMBA~~这个题变态就变态在如果一个人能看到两原创 2010-04-20 19:50:00 · 1252 阅读 · 0 评论 -
[PKU 2104]K-th Number(树套树版)
【题目描述】:就比ZJU_2112少了个操作,没有change操作。【题目分析】:这题有比树套树更好的方法,就是归并树,我会在之后的题解中说说。这题方法跟ZJU_2112一样,二分答案就好。这题有可能是负数,所以注意二分的情况(如果直接二分答案的话就要枚举0到inf*2)。然后检查mid-inf。因为如果二分到了负数会死在里面。当然因为没有change,就可以排个序,直接枚举数原创 2010-04-18 19:15:00 · 903 阅读 · 1 评论 -
[PKU 3237]Tree(树链剖分)
【题目大意】:跟QTREE一样,就是多了一个NEGATE操作,表示将A,B路径上的边权取负。【题目分析】:不要小看了这个取反,折腾了我将近一周……问题在于取反了之后要怎么考虑新加进来的(就是改的边)。解决方案不消说在线段树,他不是单纯的染色,所以我们为了让它保证正确性,就要牺牲下速度。现在考虑我如果保证在进行完一个操作后,状态为反的区间为0个,要怎么办呢。我们记录一个fla原创 2010-04-17 23:53:00 · 821 阅读 · 0 评论 -
[ZJU 2112]Dynamic Rankings(树套树)
Status:21667052010-04-17 22:53:50Accepted 2112FPC377023856Skyprophet【题目大意】:给你一个数列,让你动态的进行操作使之可以实现以下操作:1、修改一个位置上数的值2、询问区间(i,j)上第k小的值是多少?【题目分析】:这个题就是树套树经典中的经典了。原创 2010-04-17 22:54:00 · 2093 阅读 · 1 评论 -
[SPOJ 375]Query On a Tree(树链剖分)
【题目大意】:给你一个有权无根树,使之可以实现动态的修改一些边的权值,以及询问节点x,y的路径上权值最大边的权值。【题目分析】:3小时~255行……累死我了……我做过的几个悲剧题目之一……我写的还算比较快,应该说(我用了3个小时写完并调试的……)但是确实很费脑,虽然比较好理解,但是确实很悲剧…………树链剖分是个很nb的东西,主要思想就是将树拆开,拆成链,然后再在链上进行原创 2010-04-10 22:56:00 · 2717 阅读 · 1 评论 -
[USACO 5.1.3]Musical Themes(后缀数组)
【题目描述】: 我们用N(1 许多作曲家围绕一个重复出现的“主题”来构建乐曲。在我们的乐曲表示法中,“主题”是整个音符序列的一个子串,它需要满足如下条件:⒈长度至少为5个音符⒉在乐曲中重复出现(可能经过转调,见下)⒊重复出现的同一主题不能有公共部分。“转调”的意思是主题序列中每个音符都被加上或减去了同一个整数值。 给定一段乐曲,计算其中最长主题的长度(即音符数)。【原创 2010-03-13 18:27:00 · 1197 阅读 · 2 评论 -
[ZJU 3301]Make Pair(贪心)
首先好久不写blog了,这是我2010第一个解题报告,也希望大家以后多多支持……而且今天是元宵节,也算年没过完,也给大家拜个晚年~~ 下面言归正传…… 【题目描述】:偶数个人,让你配对,使得每对差距之和最小。【题目分析】:没啥好说的,排序后贪心~~这题最烦人的地方在于那个seekeof和eof的区别~如果不用seekeof的话,他会将最后一行也当作也一组输入原创 2010-02-28 17:39:00 · 608 阅读 · 1 评论 -
[PKU 1830]关灯问题(高斯消元)
【题目大意】:有n个灯,给你一个初始状态、一个目标状态,然后告诉你灯之间的联系情况(一个灯状态改变会使它相邻的灯的状态改变,这种改变不传递),每个灯的状态只许改变一次,问你有多少种方案。【题目分析】:简单的看一看,就发现这是一个方程组。每个灯最后的状态实际上是影响它的灯改变状态情况之和mod 2。我们知道对于只有0和1的运算来说,xor运算等价于加法mod 2,所以这就转化成了一个xo原创 2010-04-22 13:49:00 · 1208 阅读 · 1 评论 -
[PKU 1144]Network(割点)
【题目大意】:给你一个图,求割点的个数~ 【题目分析】:这题够裸了吧……刷水题果然很有快感啊……其实要是不会割点算法还是要想想的~那就简单总结下吧~割点的特点就是如果去掉这个点图就不连通了。这个就有一个非常经典的东西,就是WC王宏说成“塔尖”(Tarjan)的算法。(P.s.他刚说的时候我们几个都楞了,反应过来我们都冷了……)Tarjan算法是一堆算法(我只能这么说,因为好原创 2010-04-24 18:13:00 · 974 阅读 · 0 评论 -
[SPOJ 726]Promotion(平衡树)
这几天恶心代码敲得太多了,太恶心了,不写了,决定开始刷刷水题~~P.s.推荐Cai0715解题表格(澳淄cai0715神牛~~)下面言归正传【题目大意】:一共有n天,每一天有一些数,你要把这些数加入一个队列当中,然后每天结束后从中选出最大的和最小的数,相减累加到ans中,将这两个数从平衡树中删除~输出ans~~【题目分析】:真没啥好分析的,1A掉~就是个平衡树是吧……方原创 2010-04-24 17:11:00 · 1073 阅读 · 0 评论 -
开始搞C++~
<br /> 最近开始搞C++,开始贴新代码喽~~<br />/*TASK:rideLANG:C++*/#include<iostream>#include<fstream>#include<string>using namespace std;int main(){ freopen("ride.in", "r", stdin); freopen("ride.out", "w", stdout); string s1, s2;原创 2011-02-25 21:52:00 · 725 阅读 · 0 评论 -
近期刷USACO金组简化版解题报告
近期刷USACO的金组试题,以下推荐几道并给出大体思路,仅供参考: PKU 3169:比较基础的一个差分约束。很值得看看,Bellman-Ford算法的应用很巧妙,用SPFA解决也可以。 PKU 2455:比较经典的二分网络流。一类图上路径转化为网络流的方法。 PKU 2228:DP,需要滚动,仔细考虑有环的处理情况 PKU 3167:非常好的一道KMP的题目,要仔原创 2010-05-27 13:35:00 · 1200 阅读 · 0 评论 -
[PKU 2125]Destroying the Graph(二分图最小权覆盖集)
【题目大意】:给你一个有向图,现在要你删除所有的边。可以删除每个点的所有出边或是入边,都有他们相应的费用,求最小费用和方案。【题目分析】:首先呢,这个东西的想法就是要参照最小路径覆盖,将点拆成出点和入点,中间连边。这样我们发现实际上我们再加个源和汇,连接出入点的容量为成本的话,这个东西的简单割就是一个方案。而我们要最小的,那就是最小割~~真是个悲剧的构图法……这个模型的名字叫做二分原创 2010-04-30 13:30:00 · 834 阅读 · 0 评论 -
[NOI 2006]最大获利(最大权闭合图)
【题目大意】:要你建一些基地塔,现在一直建基地塔的成本和m个用户群,每个用户群都有需要两个基地塔,然后还告诉你如果能满足这个用户群的需求就会得到的利润,问你最大的获利。【题目分析】:当年很多神牛在这题上都卡了崩~原因呢,主要有两个,一个是没想出来这个悲剧的最大权闭合图的算法,第二就是最大流算法不好~~第二个问题现在看来没什么问题,有了巨无解的SAP后让这个数据量成了小case~~原创 2010-04-30 13:05:00 · 1435 阅读 · 1 评论 -
[PKU 3715]Blue and Red(最小点覆盖集)
【题目大意】:军事演习 分为红蓝方但是有的兵是好友 不能被分在不同方问最少删掉多少人 满足条件输出 删掉人的序号(字典序最小)【题目分析】:一个天津的童鞋问我的~看了看……最开始悲剧了一下~写写发现还可以,1A之~比较裸的一个最小点覆盖集,konig定理证明就自己翻书吧~M67那里也有……现在比较集中的问题在于字典序的问题。经典的方法就是试删。因为原来就是一个二分图,所原创 2010-05-01 21:14:00 · 773 阅读 · 1 评论 -
[PKU 3155]Hard Life(最大密度子图)
【题目描述】:求一个无边权点权的无向图的最大密度子图~【题目分析】:这题Amber论文上有一个很另类的构图……我基本明白,但是也还是有点蒙,所以这里就不写了,有兴趣的可以自己看看。我的方法很常规,首先必须要二分密度,然后重新构图。我们发现这个0/1规划的分子分母有依赖关系,所以变得比较悲剧。但是先看看发现取每个边的条件就是必须取到两个端点,结果这个悲剧的东西就变成了和最大获利一样的原创 2010-04-30 13:17:00 · 1372 阅读 · 0 评论 -
[SPOJ 839]Optimal Marking(最小割)
【题目大意】:给你一个无向图,现已知一些点的编号,让你给另一些点编号,使得边权值和最小。边权的计算方法就是将两个端点的编号xor一下。【题目分析】:乍一看,觉得这个东西确实很悲剧~~xor这个东西实在是一个不太好的操作。但是仔细想想的话,xor这种二进制位操作位与位之间是互不影响的。所以我们只要保证异或出来的东西每一位都尽量小就可以了。这就是这个题出xor的原因了,别的东西搞不出来原创 2010-04-30 13:04:00 · 1117 阅读 · 0 评论 -
[ZJU 2676]Network Wars(分数规划+最小割)
【题目大意】:求无向图边权平均值最小的割集~【题目分析】:一看到平均值就应该敏锐的觉察到与分数规划有关,这个问题也不例外。这还是一个0/1分数规划问题,因为每个边只能取或是不取(废话……)然后东西就和上一篇的东西一样,还是把边权改下,然后求最小割。这里有几个小技巧需要注意:1、改完了的负权边直接进割集,因为这样一定更小~~(P.s.分数规划这点就是悲剧,就是二分完了答案原创 2010-04-28 12:11:00 · 1101 阅读 · 0 评论 -
[PKU 2976]Dropping tests(分数规划)
【题目大意】:你考了n次试,现在给你次从新做人的机会,你可以扔掉k次考试的成绩,你想让你的平均分最大,求最大平均分……【题目分析】:裸的不能再裸的分数规划了…………先转化公式,先把题目中的那个碍眼的100干掉,然后我们发现对于它来说,我们就有这样的式子,k=a(x)/b(x);因为b这个东西就是0或是1,所以规划的时候重新配权就是1;转化a(x)-k*b(x),然后就是一个原创 2010-04-28 11:57:00 · 940 阅读 · 0 评论 -
[vijos 1663][vijos 1664]资源勘探(动态统计+树状数组)
【题目大意】:详见:http://www.vijos.cn/Problem_show.asp?id=16631664与之不同的地方在于最后求的是所有的b[i,j]异或得到的值。 【题目分析】:这个题我不得不说我残的很严重~首先感谢Matt神牛的指导………………下面说一说这道WS的题的解法。 首先我们要明确这样一个问题,一种资源在什么位置上才能算是稀有资源呢~原创 2009-10-25 01:26:00 · 750 阅读 · 0 评论 -
[vijos 1194]Domino(矩阵乘法)
【题目大意】:n*m的棋盘,让你用1*2的骨牌完全覆盖,问有多少种方案。(m 【题目分析】:最开始我就往状压dp上想,但是发现这个n太大,不仅空间承受不了,时间也是不允许的。想了很久,没有思路,所以决定去看看题解。果然这个题有很神的算法。 标准算法:矩阵乘法。我们将问题抽象化一下,在整个棋盘上,只有相邻两行有关联。这种想法类似状压dp。这样一些状态之间就有转原创 2009-10-08 13:52:00 · 1004 阅读 · 0 评论 -
[SGU 107]987654321 problem (数论)
【题目大意】:求出有多少个N位数的平方的最后9位为987654321。【题目分析】:N我们发现这样一个事实,能影响平方后9位的只有原数的后9位。原因在于做乘法的时候,最后的9位是由得数累加的最后9层的和决定的。所以我们只要找到N经过写一个小小的枚举程序,我们发现n而当n>9时,解的个数根据乘法原理应该是8*9*10^(n-10)即72*10^(n-10)。所以代原创 2009-10-05 22:23:00 · 1153 阅读 · 1 评论 -
【PKU 1149】PIGS(构图+网络流)
【题目描述】:说有一个人有好几猪圈的猪,给你猪圈中猪的个数。这个人自己没有猪圈的钥匙。现在他知道有一些顾客要来买猪,他们会带来一些猪圈的钥匙。这样他就可以打开猪圈并卖给顾客猪,在这过程中他可以调换这几圈猪中的猪。问你他最多可以卖出多少猪…… 【题目分析】:这个题本来不太好想到网络流,但是如果告诉你这个是网络流的题,你也会找出一个最原始的网络流模型。但是我们发现这个图极其巨大,原创 2009-06-17 13:32:00 · 848 阅读 · 0 评论 -
[POI][Ruvtex 31]潜水员问题(动态规划)
【题目描述】:http://www.ruvtex.cn/cogs/problem/pdetail.php?pid=31P.s.个人比较喜欢Byvoid神牛的这个Oj。字很大,而且清楚。使用文件,界面简洁~~ 【题目分析】:最开始果然被唬住了。实际上就是有两个约束条件的背包。可能情况有一点不一样的就是,他判断的不是一个点,而是大于一个点的一个范围。跟背包一样,就是更新原创 2009-08-17 17:21:00 · 966 阅读 · 0 评论 -
【PKU 3281】Dining(构图+网络流)
【题目大意】:就是有n个牛,有f种食物和d种饮料,每个牛喜欢一个或多个食物和饮料,但是所有的食物和饮料每种都只有一个,问最多可以满足多少头牛的需要。 【题目分析】:其实这个是很简单的,很明显的网络流模型,构图方法是把一头牛拆成两个点,两边分别是食物和饮料,然后把食物和左面的那一排牛连接在一起,右面的那一排牛和饮料连接在一起,两头牛拆开的点之间再连一条边。加上超级源点和所有食物相连,原创 2009-06-14 10:49:00 · 994 阅读 · 2 评论 -
[NOI 2007]社交网络(Floyd)
题目见:http://www.ruvtex.cn/cogs/problem/pdetail.php?pid=15 这个题让我对floyd有了一个更好的认识。 floyd实际上是一个动态规划的过程。对于这个利用松弛进行的动态规划,我们能从中得到很多其他的信息。首先,如果说一个两个点之间的松弛点式确定的,那么我们就可以确定两点间的一条最短路径。还可以进行floyd找最小环的工作。原创 2009-08-14 16:57:00 · 837 阅读 · 0 评论 -
[NOI 1999]棋盘分割(动态规划)
题目就自己看就行了。NOI 1999 day2第一题。没想到day2的题目也可以这么水。这个题就是一个动态规划,运用记忆化搜索。dp[x1,y1,x2,y2,k]表示将x1,y1,x2,y2为左上和右下角的矩形分成K份,其中方差没除N的部分的最小值是多少。方程应该很好想。【代码】program chess;var sum,a:array[0..8,0..8] of l原创 2009-08-14 10:07:00 · 801 阅读 · 0 评论 -
[SGU 131]Hardwood floor(状压DP)
[题目大意]问m*n的地板,用1*2的矩形和L形(2*2去掉一个角)覆盖满,一共有多少种方案?[分析]这个题和PKU 2411很象。只是多了一个L形。所以只是DFS不一样。这个DFS不是很好写。正确的方法应该是记录上一列的决策对这一列的影响。如果下一行还可以放,那么就是1,否则就是0。P.S.最近特别喜欢在Ubuntu下写代码,特别爽~[代码(1A)]program原创 2009-08-05 08:40:00 · 1396 阅读 · 0 评论 -
[SGU 223]Little Kings(状压DP)
调了两天,发现是个极其2B的错误…………[题目大意]在N*N的棋盘上放K(这个万恶的K)个王,是他们相互之间不攻击,问有多少种方法。[题目分析]这个就是一个很经典的状压DP棋盘模型。就是说,我们想让他们不相互攻击,我们可以先用DFS求出保证在一行的情况下不相互攻击的情况,记录在一个数组里,用一个数来表示,他的二进制就表示了一个状态。然后f[i,j,k]的含义就是前i行放了K个棋原创 2009-08-04 15:21:00 · 969 阅读 · 0 评论 -
[PKU 2411]Mondriaan's Dream(状压DP)
[题目大意]有一个m*n的正方形网格,让你用1*2的骨牌覆盖满这个网格,并且不允许重叠,求方案个数。[题目分析]再经典不过的一道状压DP覆盖模型的题目了。这个题很容易想出这样一个方程:f[i,j]表示前i-1行盖满,第i行使用j这种状态的方案个数。F[I,J]:=Sum{F[I-1,K]} (K状态能导出J状态)现在最麻烦的地方变成了,如何确定一个状态I可以由哪几个状态推出原创 2009-08-04 16:13:00 · 806 阅读 · 0 评论 -
[SGU 286]Ancient decoration(二分图匹配)
从今天开始,我要在这里开始写王正宇大牛每天给我留的题的解题报告。[题目描述]说有一个很奇怪的国家,这个国家修路,然后这个路是双行线,然后最NB的地方在于每个点的度都是一个偶数K,说现在这个国家要搞节日活动,要decorate一些路。要decorate的这些路有这样一个特点,就是这些路所构成的子图必须包含原图所有点,并且每个点的度都为2。[题目分析]最开始我想了一个方法,但是发现我二原创 2009-08-01 20:35:00 · 1273 阅读 · 0 评论 -
【PKU 3321】Apple Tree(树状数组)
【题目描述】:就是说有一棵二叉树,每个节点上面有一个权值,这个权值只可能是0或者是1。首先给你这棵树,然后进行M次操作:C X 表示将编号为x的节点的权值改变(就是1-->0,0-->1)Q X表示查询以X为根的子树上权值的和。(N【题目分析】:这个题数据量一看就是奇大的那一种,肯定必须要用Nlogn或是N的强悍算法~然后我们发现这个题可以这样想:对于DFS的时间戳来说,我原创 2009-06-19 16:12:00 · 1040 阅读 · 0 评论 -
[PKU 2155]Matrix(二维树状数组)
【题目大意】: 对一个n×n的boolean矩阵A,有大约50000次操作,操作有两种,一种是将这个矩阵的某个子矩阵全部取反;一种是询问这个矩阵第i行第j列元素的值。【题目分析】:首先先赞许一下,这个题是非常好的一道题。各位大牛的做法都不相同,有很多大牛都用的是二维线段树。我看到这个题的第一反应也是这个,但是后来发现可以用二维树状数组做。这个就要比线段树好写多了。思想是什么呢~对于一个原创 2009-06-20 23:05:00 · 1466 阅读 · 2 评论 -
[MIPT 105]MRQ Promblem(线段树)
【题目大意】:给你一组数,然后M个询问(x,y),询问第x+1到第y个当中的最小值【分析】:裸的线段树,也可以用传说中的ST算法~如果你不嫌麻烦也可以转化成LCA……P.S. 效率方面,明显是静态的占优,所以写东西最好用数组……【代码1(静态线段树)】:program RMQ_MIPT;type node=record left,right:l原创 2009-06-26 13:54:00 · 731 阅读 · 0 评论 -
[SGU 104]Little Shop of Flowers(DP)
【题目大意】:说有n束花要插在m个花瓶里面(m>n),花必须按照顺序插入花瓶。每束花放在每个花瓶中都有一个美学值。问得到的美学值的最大值是多少,同时输出方案。【题目分析】:DP的方法很好想f[i,j]表示将前i束花插在前j个花瓶里得到的最大美学值。转移为:f[i,j]:=max(f[i-1,j-1]+a[i,j],f[i,j-1]);转移的同时,用put[i,j]记录决原创 2009-10-05 20:32:00 · 955 阅读 · 0 评论 -
[SGU 108]Self-numbers II(筛法活用优化+滚动数组)
【题目大意】:定义一个数为self-number x,当且仅当找不到一个n使得x=d(n)。定义d(n)为n+(n的各位数之和)。给出一个n,求小于n的self-number个数,并且给出k个询问,每个询问为这个范围内第Sk个self-number。【题目分析】:首先要想一想这个题的特性。self-number是一串非self-number派生的根源,所以我们想到了素数的筛法。但是原创 2009-10-06 00:21:00 · 1183 阅读 · 0 评论 -
[SGU 103]Traffic Lights(最短路问题变形)
【题目大意】:说有一个道路网络,有N个路口,每个路口一个灯——交替地变成蓝色和紫色。当且仅当一条路连接的两个路口的灯的颜色是一样的时候才能通行,问S到T的最短路~【题目分析】:这个题好恶心,想了好长时间,一直觉得这个东西应该是个动态规划。但是后来看了WindyWinter神牛的题解,觉得豁然开朗,原来这个题就跟正常的最短路一样。直接套用Dijkstra就可以了,但是我们这回还要算上中间原创 2009-09-30 16:58:00 · 1033 阅读 · 0 评论