自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

scf0920

退役ACMer渣

  • 博客(64)
  • 收藏
  • 关注

原创 HDU 2120 Ice_cream's world I(并查集)

题目地址:HDU 2120这题虽然字数不多,但就是看不懂。。意思是求最多有多少个被墙围起来的区域。显然就是求环的个数。然后用并查集求环个数就可以了。代码如下:#include #include #include #include #include #include #include #include #include #include #include usin

2014-09-30 15:57:08 968

原创 HDU 1856 More is better(并查集+离散化)

题目地址:HDU 1856水题。由于标号范围太大,而数据数只有10w,所以要先进行离散化。然后就是裸的并查集了。代码如下:#include #include #include #include #include #include #include #include #include #include #include using namespace std;i

2014-09-30 14:34:28 875

原创 HDU 2448 Mining Station on the Sea(费用流)

题目地址:HDU 2448求n次最短路,将n艘船到各港口的最短路求出来,然后用最短路当费用,跑一次费用流。代码如下:#include #include #include #include #include #include #include #include #include #include #include using namespace std;cons

2014-09-30 10:13:24 1471

原创 HDU 5056 Boring count(窗口滑动法)

题目地址:HDU 5056我晕啊。。当时绝壁脑残了。。。当时想到的方法是完全正确的。。但是在脑算第二个样例的时候,居然一直把前三个abc当成了9种。。。于是后面的三个abc每个都要递增2,而不是我想的方法中的递增3。。。于是一直没写代码。。。言归正传。。这题的思路就是窗口滑动,两个指针,让指针内的始终保持每个字母的数量少于k个。然后递推过去。然后因为每次右指针往右移动一个的时候,就相当

2014-09-29 13:49:09 973

原创 ZOJ 3690 Choosing number(矩阵快速幂)

题目地址:ZOJ 3690假设F(n)表示前n个人第n个人选择的数大于k的个数,G(n)表示的是前n个人第n个人选择的数小于等于k的个数   那么F(n) = F(n-1)*(m-k)+G(n-1)*(m-k) , G(n) = F(n-1)*k+G(n-1)*(k-1) , 那么最后的结果就是F(n)+G(n);   那么我们可以构造出矩阵   | m-k m-k|   | F(

2014-09-27 21:49:03 998

原创 HDU 5045 Contest(费用流)

题目地址:HDU 5045终于在比赛中用网络流A了一道题。。。刷了那么多网络流,终于用到一次了。。虽然题目很简单,但是还是要纪念一下下。。。我这题的思路就是求m/n次费用流,每n个算作同一轮,对这同一轮的求最大费用流。建图就很简单了,最简单的二分图模型。代码如下:#include #include #include #include #include #include

2014-09-27 19:44:08 1283

原创 HDU 2254 奥运(矩阵)

题目地址:HDU 2254必须得吐槽一下。。这题的数据是又弱又坑。。样例不过都能AC。。还有。。居然还有重边。。WA了一晚上。。吐槽完毕,言归正传。。根据离散数学里面的可达矩阵的性质,我们知道一个有向图的邻接矩阵的前n次幂的和即为可达矩阵,那么要求[t1-t2]之内的路径的条数,因为题目说了t1 = 0的时候为0。那么假设邻接矩阵为A,那么要求的就是A^(t1-1)+A^(t1)+..

2014-09-25 20:44:52 1105

原创 HDU 4686 Arc of Dream(矩阵快速幂)

题目地址:HDU 4686我去。。因为忘记把函数里的k定义成64位的,导致TLE了一晚上。。。晕。。这题没什么技巧,就是根据公式构造就行。代码如下:#include #include #include #include #include #include #include #include #include #include #include using n

2014-09-24 23:12:43 864

原创 HDU 3117 Fibonacci Numbers(矩阵快速幂+公式)

题目地址:HDU 3117对于后四位可以用矩阵快速幂快速求出来,但前四位就没办法了。要知道斐波那契数列是有通项公式的,所以只能通过通项公式来求前四位,但公式不能求后四位,因为公式使用浮点数求的,精度显然不够,求前四位要用到对数。通项公式为:f(n)=1/sqrt(5)(((1+sqrt(5))/2)^n+((1-sqrt(5))/2)^n)假设F[n]可以表示成 t * 10^

2014-09-24 19:03:34 1279

原创 HDU 4565 So Easy!(矩阵快速幂)

题目地址:HDU 4565这题曾经在上海邀请赛前做过,但是当时一点思路都没有,现在拿起这道题来简直是小菜一碟啊。而且这题跟hdu2256也很像。详情请看:HDU 2256构造矩阵:a,b1,a代码如下:#include #include #include #include #include #include #include #include #includ

2014-09-24 17:21:15 981

原创 HDU 2276 Kiki & Little Kiki 2(矩阵快速幂)

题目地址:HDU 2276这题的矩阵构造方式不太好想。看的题解才会的。原来是用fn=(fn-1+fn)%2的方法。于是就构造出了一个矩阵:1,0,0,11,1,0,00,1,1,00,0,1,1然后矩阵快速幂来求。但是取余运算是很费时间的,每次都%2会超时,于是这时就可以转化为位运算。代码如下:#include #include #include #i

2014-09-24 15:57:02 968

原创 HDU 3306 Another kind of Fibonacci(矩阵快速幂)

题目地址:HDU 3306

2014-09-23 21:36:32 777

原创 FZU 1683 纪念SlingShot(矩阵快速幂)

题目地址:FZU 1683这题一开始用的二分矩阵,于是就一直TLE。后来找题解才发现,可以不用二分矩阵,因为这个题最终求的是一个值,所以可以把那个值加入到构造的矩阵中:这样就不用二分矩阵了。而是可以直接求。但是这样还是会超时,那怎么办呢。由于本题的模数是固定的,所以矩阵的幂也是固定的。那么就可以对一些2^x幂预处理出来。代码如下:#include #include #i

2014-09-23 19:08:35 1254

原创 POJ 2796 Feel Good(单调栈)

题目地址:POJ 2796单调栈的第一题就是这道。。把我弄的晕头转向。现在终于明白了,对单调栈又加深了理解。原来单调栈不只是可以维护数。代码如下:#include #include #include #include #include #include #include #include #include #include #include #include u

2014-09-23 11:15:35 952

原创 POJ 3250 Bad Hair Day(单调栈)

题目地址:POJ 3250初学单调栈。多校和网络赛已经碰到两次了。单调栈的原理简单的不能再简单了。。就是让栈里的元素从栈顶到栈底呈单调性。比如说递增单调栈。每次放进一个数的时候,如果栈顶的数小于要放的数,就把栈顶的数pop出来使得栈里保持单调性。对于这道题来说,就从右往左开始遍历,建一个递增单调栈。那么每次pop出来的就是当前的牛可以看到的牛数。然后累加即可。代码如下:

2014-09-22 23:07:32 1035

原创 codeforces #267 C George and Job(DP)

题目地址:http://codeforces.com/contest/467/problem/C太弱了。。这题当时都没做出来。。思路是有的,但是自己出的几组数组总是过不去。。今天又重新写了一遍,才发现当时一个地方脑残了。。每次选的最大值应该是与更新后的位置的前一个比而不是当前所在的位置。二维DP。代码如下:#include #include #include #include

2014-09-19 16:47:22 1061

原创 HDU 2842 Chinese Rings(矩阵快速幂+递推)

题目地址:HDU 2842这个游戏是一个九连环的游戏。假设当前要卸下前n个环。由于要满足前n-2个都卸下,所以要先把前n-2个卸下,需要f(n-2)次。然后把第n个卸下需要1次,然后这时候要卸下第n-1个,然后此时前n-2个都已经被卸下了。这时候把前n-2个都卸下与都装上所需的次数是一样的,因为卸下与装上的规则是一样的。所以又需要f(n-2)次,这时候前n-1个都在上面,卸下前n-1个需要

2014-09-18 21:42:58 1021

原创 codeforces #185 A Plant(矩阵快速幂+递推)

题目地址:http://codeforces.com/problemset/problem/185/A通过这个题终于找回了点找递推公式的信心。。TAT。。首先,第n个图形的上方,左下方,右下方的三个大三角形是跟第n-1个是一模一样的,所以是3*f(n-1)。然后只剩下中间一个倒着的大三角形了,这时可以注意到,其实也跟第n-1个一模一样,只不过上下颠倒过来了,那这里的正着的三角形数就相当

2014-09-18 20:53:28 1110

原创 HDU 2256 Problem of Precision(矩阵快速幂)

题目地址:HDU 2256思路:(sqrt(2)+sqrt(3))^2*n=(5+2*sqrt(6))^n;这时要注意到(5+2*sqrt(6))^n总可以表示成an+bn*sqrt(6);an+bn*(sqrt(6))=(5+2*sqrt(6))*(a(n-1)+b(n-1)*sqrt(6))                        =(5*a(n-1)+12*b(n-

2014-09-18 19:51:10 1394

原创 HDU 1588 Gauss Fibonacci(矩阵快速幂)

题目地址:HDU 1588用于构造斐波那契的矩阵为1,11,0设这个矩阵为A。sum=f(b)+f(k+b)+f(2*k+b)+f(3*k+b)+........+f((n-1)*k+b)sum=A^b+A^(k+b)+A^(2*k+b)+A^(3*k+b)+........+A^((n-1)*k+b)sum=A^b+A^b*(A^k+A^2*k+A^3*k+.....

2014-09-18 17:25:37 1204

原创 HDU 2604 Queuing(矩阵快速幂)

题目地址:HDU 2604这题只要推出公式来,构造矩阵就很容易了,问题是推不出公式来。。TAT。。从递推的思路考虑,用f(n)表示n个人满足条件的结果,如果最后一个是m则前n-1人可以任意排列,有f(n-1)种;如果是f,则考虑后两位mf和ff,没有一定满足或者一定不满足的状态,所以继续考虑一位,考虑后三位mmf, fmf, mff, fff,其中fmf和fff不符合条件,如果是mmf,则

2014-09-18 15:46:51 893

原创 HDU 1757 A Simple Math Problem(矩阵快速幂)

题目地址:HDU 1757终于会构造矩阵了。其实也不难,只怪自己笨。。= =! f(x) = a0 * f(x-1) + a1 * f(x-2) + a2 * f(x-3) + …… + a9 * f(x-10)构造的矩阵是:(我代码中构造的矩阵跟这个正好是上下颠倒过来了)|0 1 0 ......... 0|    |f0|   |f1 ||0 0 1 0 ...... 0|

2014-09-17 23:16:17 902

原创 POJ 3233 Matrix Power Series(矩阵快速幂+二分)

题目地址:POJ 3233题目大意:给定矩阵A,求A + A^2 + A^3 + … + A^k的结果(两个矩阵相加就是对应位置分别相加)。输出的数据mod m。k    这道题两次二分,相当经典。首先我们知道,A^i可以二分求出。然后我们需要对整个题目的数据规模k进行二分。比如,当k=6时,有:    A + A^2 + A^3 + A^4 + A^5 + A^6 =(A + A^2

2014-09-17 17:06:41 2623

原创 POJ 3070 Fibonacci(矩阵快速幂)

题目地址:POJ 3070用这个题学会了用矩阵快速幂来快速求斐波那契数。根据上个公式可知,第1行第2列和第2行第1列的数都是第n个斐波那契数。所以构造矩阵,求快速幂即可。代码如下:#include #include #include #include #include #include #include #include #include #include

2014-09-17 14:42:50 1089

原创 HDU 1575 Tr A(矩阵快速幂)

题目地址:HDU 1575矩阵快速幂裸题。初学矩阵快速幂。以前学过快速幂,今天一看矩阵快速幂,原来其原理是一样的,这就好办多了。都是利用二分的思想不断的乘。只不过把数字变成了矩阵而已。代码如下:#include #include #include #include #include #include #include #include #include #incl

2014-09-17 11:18:41 1188

原创 HDU 3032 Nim or not Nim?(sg函数博弈)

题目地址:HDU 3032这题是很好用来练习sg函数打表的一题。下面是sg函数值打表代码:#include #include #include #include #include #include #include #include #include #include #include using namespace std;#define LL long l

2014-09-16 21:25:16 1208

原创 HDU 2897 邂逅明下(SG博弈论)

题目地址:HDU 2897本来这题可以用NP状态转换,但是数据太大,所以可以通过打表sg函数值,来找出规律。感觉sg函数打表就是利用的NP状态转换的那两条规则。通过打表可以发现,从1开始,连续p个0,然后接着连续q个正整数,然后再连续p个0,接着连续q个正整数,就这样循环下去。所以规律就很明显了。代码如下:#include #include #include #include

2014-09-16 19:35:34 1445

原创 HDU 1564 Play a game(博弈)

题目地址:

2014-09-16 15:57:18 940

原创 HDU 1730 Northcott Game(nim博弈)

题目地址:HDU 1730由于

2014-09-16 14:19:02 698

原创 HDU 1517 A Multiplication Game(博弈论)

题目地址:HDU 1517NP状态转换。可以把题目的向上乘变成向下除。这样1是终结状态,设1的时候为必败点。根据所有能一步到达必败点的点是必胜点,所以[x,x*9]必胜点;根据只能到达必胜点的点是必败点,所以[x*9+1,x*9*2]是必败点.然后求解。代码如下:#include #include #include #include #include #inclu

2014-09-16 14:07:56 978

原创 HDU 2516 取石子游戏(斐波那契博弈)

题目地址:HDU 2516当且只当n是一个斐波那契数的时候是必败态。可以写出几组数据找规律就可以发现这个规律。证明如下:就像“Wythoff博弈”需要“Beatty定理”来帮忙一样,这里需要借助“Zeckendorf定理”(齐肯多夫定理):任何正整数可以表示为若干个不连续的Fibonacci数之和。先看看FIB数列的必败证明:1、当i=2时,先手只能取1颗,显然

2014-09-16 11:56:28 1293

原创 POJ 1067 取石子游戏(威佐夫博奕)

题目地址:POJ 1067威佐夫博弈模型。判断奇异局势。根据面对非奇异局势,先拿者必胜;反之,则后拿者取胜。判断奇异局势只用一个公式来判断就行。假设b>a,若a==(int)(b-a)*(1+sqrt(5))/2,则说明是此时是奇异局势。具体证明请看百度百科。。本渣实在是看不了。。先证明了8个定理,然后用这8个定理推出来了这个公式,而且后两个定理还是比较高级的数学定理,给跪了。

2014-09-16 10:47:26 1144

原创 POJ 1704 Georgia and Bob(nim博弈论)

题目地址:POJ 1704这个题实在巧妙。。居然这样就可以转化成了经典的nim模型。这题可以从左往右两两配对,如果是奇数个的话,就让最左边的与0配对。然后每当对方移动某一对的前一个,你总可以移动该对的后一个来移动回来。所以这是没有影响的。有影响的只是每一对中间的空格数。这就转化成了((n+1)/2)堆石子的游戏,每一堆的石子个数是每一对点之间的空格数。然后用异或求解。代码如下:#i

2014-09-15 21:45:55 1163

原创 POJ 2348 Euclid's Game(博弈)

题目地址:POJ 2348每一步只有如下三种情况:(假设a>=b)1:a%b==0    这时候自然是必败态。2:a3:a>2*b  这时候是必胜态。为什么呢?因为此时总可以转移到一个必败态。由于第2情况的时候两种状态是交替的,而这时候由总可以转换成(a,a%b)和(a,a%b+b),而(a,a%b+b)与(a,a%b)又属于第2种情况的相邻的,所以必有一个是必败态。根据只要能达到

2014-09-15 21:06:41 990

原创 HDU 1847 Good Luck in CET-4 Everybody!(巴什博弈论)

题目地址:HDU 1847这题可以用NP状态转换。首先0的时候就代表无法出牌了,所以是必败态。然后根据每一个可以一步到达必败态的是必胜态,不可以一步到达必败态的是必败态。可以推出状态转移方程,然后用DP求解。即从已知状态向未知状态转移,就是从小的向大的转移,假如它的下一步没有必败态,则它是必败态,若下一步有一个必败态,那它就是必胜态。代码如下:#include #include

2014-09-15 20:06:43 1099

原创 POJ 2484 A Funny Game(博弈)

题目地址:POJ 2484很简单的智力题。。。当n>4时候,后手方完全可以根据剩下的奇偶情况使得剩下了偶数个并且对称,然后每当先手出一次,后手就可以模仿着先手在对称的地方出一次,这样的话,后方是必胜的。代码如下:#include #include #include #include #include #include #include #include #include

2014-09-15 19:31:42 939

原创 HDU 1850 Being a Good Boy in Spring Festival(nim博弈)

题目地址:HDU 1850这个博弈论异或这个地方感觉真绕,仔细想了一下,终于把它给理清楚了。总结一下之前不太理解的:1:在当前操作中,只要可以达到某个必败态,那这个点一定是必胜态的,因为要想获胜,肯定会选择必败态的操作。2:只有当所有值的异或值为0的时候,才是必败态,所以说对于N堆的nim游戏来说,第一步的操作对于每一堆来说只能有至多一种可以形成必败态。因为另外(n-1)堆的异或值是唯

2014-09-15 15:41:53 996

原创 HDU 2147 kiki's game(巴什博弈论)

题目地址:HDU 2147又是一道NP状态转换的巴什博弈。这题根据NP状态转移最好画个表格,规律就很直观了。博弈么,从左下角往前推:P→到达该点后,下一个人必败。N→到达该点后,下一个人必胜。显然,最左下角的点是P。然后根据经过一步操作可到达必败状态的都是必胜状态,下一步操作都是必胜状态,那么这步操作时必败状态的原则一步步的去画表格就可以了。  

2014-09-14 21:16:02 1403

原创 HDU 1849 Rabbit and Grass(nim博弈)

题目地址:HDU 1849初次接触nim博弈,感觉好神奇的说。。。居然可以跟异或运算扯上关系。。。。给人类的智商跪了。。。作为地球人我感到很自豪。。具体证明什么的看这篇博客被。传送门代码如下:#include #include #include #include #include #include #include #include #include #inc

2014-09-14 20:33:51 941

原创 HDU 2149 Public Sale(巴什博弈论)

题目地址:HDU 2149简单的博弈论,跟上道题差不多。只不过再把出价的值输出一下就可以了。#include #include #include #include #include #include #include #include #include #include #include using namespace std;int a[2000];int m

2014-09-14 19:58:10 1000

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除