CodeForces 707D Persistent Bookcase ——(巧妙的dfs)
摘要:一个n*m的矩阵,有四种操作: 1.(i,j)处变1; 2.(i,j)处变0; 3.第i行的所有位置1,0反转; 4.回到第k次操作以后的状态; 问每次操作以后整个矩阵里面有多少个1。 其实不好处理的操作只有第四个,但是这题的思路很巧妙,123三种操作全部建立顺边,第四种操作将k和这次操作的序号建边
阅读全文
HDU 5806 NanoApe Loves Sequence Ⅱ ——(尺取法)
摘要:题意:给出一个序列,问能找出多少个连续的子序列,使得这个子序列中第k大的数字不小于m。 分析:这个子序列中只要大于等于m的个数大于等于k个即可。那么,我们可以用尺取法写,代码不难写,但是有些小细节需要注意(见代码注释)。我觉得,《挑战程序设计》里的尺取法的内容需要好好的再回顾一下= =。 代码如下:
阅读全文
HDU 5791 Two ——(LCS变形)
摘要:感觉就是最长公共子序列的一个变形(虽然我也没做过LCS啦= =)。 转移方程见代码吧。这里有一个要说的地方,如果a[i] == a[j]的时候,为什么不需要像不等于的时候那样减去一个dp[i-1][j-1]呢?其实是要减去的,然后我们注意+1是什么呢?这两个位置是相同的,那么这一对组合是1,然后包含
阅读全文
HDU 5810 Balls and Boxes ——(数学,概率,方差)
摘要:官方题解看不太懂,参考了一些人的博客以后自己证明如下: 其中D(X)和E(X)的公式如下(参考自百度百科): 其中 p = 1 / m 。(这是每一个单独事件发生的概率期望,在这里单独事件指的是一个球放到m个盒子里面,放到每个盒子里面的概率都是一样的,所以期望都是1 / m了) 推出了公式以后,代码
阅读全文
HDU 5794 A Simple Chess ——(Lucas + 容斥)
摘要:网上找了很多人的博客,都看不太懂,还是大力学长的方法好。 要说明的一点是,因为是比较大的数字的组合数再加上mod比较小,因此用Lucas定理求组合数。 代码如下(有注释):
阅读全文
HDU 5793 A Boring Question ——(找规律,快速幂 + 求逆元)
摘要:参考博客:http://www.cnblogs.com/Sunshine-tcf/p/5737627.html。 说实话,官方博客的推导公式看不懂。。。只能按照别人一样打表找规律了。。。但是打表以后其实也不是很好看出规律的。。。而且这个表都写了半天233。。。(真是太弱了= =)为了打表,我们应当先
阅读全文
HDU 5813 Elegant Construction ——(拓扑排序,构造)
摘要:可以直接见这个博客:http://blog.csdn.net/black_miracle/article/details/52164974。 对其中的几点作一些解释: 1.这个方法我们对队列中取出的元素,把仍有出度的点连接到这个点时,这个点是不会连接到多余的点的,因为:一个点出队列的时候其他没入队的
阅读全文
HDU 5818 Joint Stacks ——(栈的操作模拟,优先队列)
摘要:题意:有两个栈A和B,有3种操作:push,pop,merge。前两种都是栈的操作,最后一种表示的是如果“merge A B”,那么把B中的元素全部放到A中,且满足先入后出的栈原则。 分析:显然,我们给每一个节点配备一个时间戳即可。我一开始的思路是直接开两个优先队列进行直接模拟,merge操作就是把
阅读全文
HDU 5831 Rikka with Parenthesis II ——(括号匹配问题)
摘要:用一个temp变量,每次出现左括号,+1,右括号,-1;用ans来记录出现的最小的值,很显然最终temp不等于0或者ans比-2小都是不可以的。-2是可以的,因为:“))((”可以把最左边的和最右边的交换即可,其他-2的情形同理。另外要注意的坑点是Hint里面所说的:“But do nothing
阅读全文
HDU 5858 Hard problem ——(计算几何)
摘要:其实这题最多是个小学奥数题- -,,看到别人博客各显神通,也有用微积分做的(我也试了一下,结果到最后不会积。。。)。 思路如下(这两张图是网上找来的): 然后就很简单了,算三角形面积可以用海伦公式,也可以用1/2*a*b*sin(<a,b>)。代码如下:
阅读全文
HDU 5867 Water problem ——(模拟,水题)
摘要:我发这题只是想说明:有时候确实需要用水题来找找自信的~ 代码如下:
阅读全文
HDU 5795 A Simple Nim ——(Nim博弈 + 打表)
摘要:题意:在nim游戏的规则上再增加了一条,即可以将任意一堆分为三堆都不为0的子堆也视为一次操作。 分析:打表找sg值的规律即可。 感想:又学会了一种新的方法,以后看到sg值找不出规律的,就打表即可~ 打表代码如下: AC代码如下:
阅读全文
POJ 3694 Network ——(桥 + LCA)
摘要:题意:给n个点和m条边,再给出q条边,问每次加一条边以后剩下多少桥。 分析:这题是结合了LCA和dfn的妙用。_dfn数组和dfn的意义不一样,并非访问的时间戳,_dfn表示的是被访问的顺序,而且是多线程访问下的顺序,举个例子,同一个点分岔开来的点,距离这个点相同距离的点,他们的_dfn的值是相同的
阅读全文