
ACM
文章平均质量分 65
朝雨暮雪
这个作者很懒,什么都没留下…
展开
-
HDOJ-5500Reorder the Books(规律)
本来一道水题,结果自己SB了,看到了n赛后才回过神来......原来O(n)就可以!!!BC题解:By davidlee1999WTK把这题的模型简化一下,有一个1→n1\rightarrow n1→n的排列形成的数列,我们要用最少的操作次数把这个数列排序,每次操作都是把一个数放到整个数列的最前面。首先我们可以注意到每个数最多只会被操作一次。因为假如有一个数被往前拿了两次,原创 2015-10-12 20:52:45 · 839 阅读 · 0 评论 -
TJU-3980Painting Tree(贪心)
贪心:有多少叶子节点,就有多少条路径。每个父亲节点与各个儿子节点相连的路径中,只有最小的那个会被选中。#include #include #include #include using namespace std;const long long MAXM=0X3F3F3F3F;const int N=10000;long long l[N+5];long long min原创 2015-07-12 13:23:12 · 357 阅读 · 0 评论 -
TJU-3852 Haitang1(其他)
这道题的本质是:给出点在立方体内的分布,询问一个在给定中心、中心到内边界距离为a、中心到外边界距离为b的空心立方体内的点的个数。一开始想到多维树状数组之类的。。。。然后发现想多了。。。。预处理以下最后一维的前缀和就好(维护高维也行,但这道题时间充裕,就没必要搞复杂了)注意处理边界情况。#include #include #include #include #include u原创 2015-07-14 21:05:54 · 672 阅读 · 0 评论 -
TJU-3851Variable Names(贪心)
做一下预处理,left[i]表示从第i位到0位不是合法的“字母”的个数,right[i]表示从第i位到最后一位不是数字的字符个数。枚举字符最后一位是哪位,left[i]+right[i+1]就是要修改的字符数目。取最小值即可。#include #include #include #include #include using namespace std;const in原创 2015-07-14 21:21:30 · 341 阅读 · 0 评论 -
TJU-3977-Probability I(概率DP)
首先是关于概率DP的入门文章:http://www.cnblogs.com/kuangbin/archive/2012/10/02/2710606.html设i点原地停留、前进一步、前进两步的概率为p[i][0],p[i][1],p[i][2]关于是否可以到达n点的判断,开一个bool数组vis,首先全部置0,vis[1]=1,扫描一次,如果p[i][1]不为0则vis[i+1原创 2015-07-12 14:38:46 · 590 阅读 · 0 评论 -
TJU-3979. Cards(模拟)
虽然没有什么技术含量,但这类题需要非常细心,而自己在这方面弱爆了......这个程序倒是有点实用性,万一以后哪天写个扑克程序,还可以用用啊#include #include #include #define Awin {printf("XingYao wins!\n"); return ;}#define Bwin {printf("XiangYu wins!\n"); r原创 2015-07-12 20:01:00 · 320 阅读 · 0 评论 -
TJU-3848 Game(矩阵乘法快速幂)
一看是递推的关系,明显是矩阵乘法快速幂了。这里举个例子,假设有3个选手,有n场比赛,得分记为Si如果有以下关系:S1=S1+2S3;S2=S2+1S1+1S3;S3=S3+5S2;则可以用以下的矩阵乘法表示 1 1 0原创 2015-07-14 20:51:21 · 388 阅读 · 0 评论 -
TJU-3845 Cut Stick(贪心)
不难发现,小木棍要截成裴波那切数列:1,1,2,3,5,8......如果有剩余的长度,只能合并到最后一截里面了。原创 2015-07-14 21:11:12 · 379 阅读 · 0 评论 -
TJU-3860 Basex(模拟)
题目:http://acm.tju.edu.cn/toj/showp3860.html先是RE,再是WA。。。。。。坑之处:1、RE的原因,题目里只说了模是被空格隔开的,没说是几个空格,我当一个空格处理的。2、WA的原因:人家没说给的数一定是n位。要自己在前面补0.这么一道题调了半天,丢人啊#include #include #include using原创 2015-07-17 14:41:52 · 377 阅读 · 0 评论 -
POJ-1222 EXTENDED LIGHTS OUT(高斯消元)
题意:给你一个5*6的矩阵,每个点上都有一个灯,按下f[i][j]的按钮,f[i][j]位置的灯的状态会改变,它上下左右的灯的状态也会改变(开变关,关变开)。现在给出这个矩阵的初始状态,输出按下哪些按钮,使所有的灯都关闭。做法:利用高斯消元解异或方程组。用x[i][j]表示第i行第j列的灯是否被按下x[i][j] ^ x[i+1][j] ^ x[i-1][j]原创 2015-08-10 14:19:53 · 1481 阅读 · 0 评论 -
POJ-1830 开关问题(高斯消元)
代码的大部分都是和poj1222一样的,求出自由变元个数就好了。1222题解:http://blog.youkuaiyun.com/moringrain/article/details/47397787这道题需要学习的地方是如何处理初始状态和目标状态。初始状态-->目标状态 等同于 全0状态-->初始状态 xor 目标状态另外给系数赋值的时候注意行列的顺序,一开始搞错了调了半天原创 2015-08-10 16:27:17 · 476 阅读 · 0 评论 -
备赛备忘录
1:xor线性基,求异或结果k大值 HDOJ3949 TUJ4129原创 2015-07-20 23:47:55 · 467 阅读 · 0 评论 -
HDOJ4828 Grids(数论)
一开始想成DP了,后来暴力打表找规律发现原来是卡特兰数列。于是乎就变成了卡特兰数取模问题。递推公式h[n]=h[n-1]*(4n-2)/(n+1)公式中有除法,所以取模的时候要用到乘法逆元。比较方便的一点是,10^9+7是质数,必定和分母(n+1)互质,所以直接用扩展欧几里得去求逆元就好了。关于逆元的应用:http://blog.youkuaiyun.com/moringrain/ar原创 2015-08-07 16:27:09 · 685 阅读 · 0 评论 -
HDOJ-1788 Chinese remainder theorem again(数论)
就是求模线性方程组#include #include #include #include #include using namespace std;typedef long long LL;// X % m[i] = a[i]int m[100], a[100];//计算 ax+by=gcd(a,b),返回gcd值,求出xy LL Ex_gcd(LL a, LL b原创 2015-08-07 23:10:57 · 477 阅读 · 0 评论 -
HDOJ-4344 Mark the Rope(数论)
概括一下题意:将一个合数n的因数(不包括1和n)看做一个集合,求一个最大的子集使集合内所有元素都互质,并求出在上述条件下集合元素最大的和是多少。解法:既然要保证子集内的元素互质,就要保证任意两个元素没有质因子。要元素数目做多,则每个元素包含的质因子数目最少,即为1。做法也就出来了,对n进行拆分质因数,表示成 n=(a1^p1)*(a2^p2)*(a3^p3)*......*(ak^pk),原创 2015-08-08 16:05:31 · 474 阅读 · 0 评论 -
POJ-3682King Arthur's Birthday Celebration(概率DP)
题意:国王要庆祝他的第k个生日,庆祝的时长如下:每天抛一枚硬币,正面朝上的概率为p,当第k次出现正面后,不再庆祝(最后一次出现正面当天还是要庆祝的)。第i天的费用为2*i+1,求时间的期望和费用的期望。一种解法:用逆推的方法来求期望。设E[i]为已经出现了i次正面后到庆典结束的时间期望,F[I]为出现i次正面后到庆典结束所需费用的期望。则有:E[i]=p(E[i+1]+1)+(1-原创 2015-07-14 00:21:13 · 555 阅读 · 0 评论 -
HDOJ-3583LOOPS(概率DP)
题意:一个R*C的迷宫,女主一开始在(1,1),迷宫的出口在(R,C),每个单位有个出口,经过这个出口有可能回到原地、走到(i,j+1)或(i+1,j)。女主每走一次消耗两点法力,现在给出每个出口回到原地、走到(i,j+1)、走到(i+1,j)的概率,求女主走出迷宫(到达(R,C))消耗法力的期望。DP公式:f[i][j]=p[i][j].situ(f[i][j]+1)+p[i][j]原创 2015-07-14 02:27:05 · 408 阅读 · 0 评论 -
HDOJ-1287 破译密码(数学)
异或性质:C=A XOR B--> C XOR B=A枚举异或的字母,如果是合法的,那么所有解密出来的字母都在[A,Z]之间。自己被优先级坑了一回if((text[i]^key) 'Z')(text[i]^key)一开始没加括号......基础啊,既然没有背过优先级,为了保险,不把握的地方就加上括号吧。#include #include #include us原创 2015-07-27 16:43:05 · 437 阅读 · 0 评论 -
TJU-3847 SanXII(图论)
自己的想法:如果一条边的两点属于一个国家,那么建边,否则不予理会。建图完毕后跑一遍floyd(其实有判断连通性的和FLOYD类似的算法,忘记怎么写了,就用floyd代替了)然后遍历每个国家检验是否每个城市都联通。#include #include #include #include #include using namespace std;const int MAXC=原创 2015-07-14 21:16:59 · 413 阅读 · 0 评论 -
HDOJ-4089 Activation(概率DP)
题意:n个人在服务器上排队激活仙剑5游戏,番茄排在第m位。服务器给每个人激活时,可能会发生一下4种情况:事件1:激活失败,队伍保持不变,概率为p1;事件2:连接失败:队首的人回到队尾,概率为p2;事件3:激活成功:队首的人出队,其他人前移,概率为p3;事件4:服务器故障:事件发生后所有未激活的人不能激活,概率为p4;规定事件A:番茄排到小于等于第K个位置时候,出现服务器故障原创 2015-07-18 09:42:27 · 360 阅读 · 0 评论 -
HDOJ 4342History repeat itself(数学)
第一问:求第n大的非平方数是多少。设第n大的非平方数是x,则x前面有sqrt(x)个平方数,于是n+(int)sqrt(x)=x另t=sqrt(x)>0,得到方程 t^2-t-n=0根据求根公式t=(1+sqrt(1+4×n))/2对t向上取整再减去1,就算x前面有多少平方数了,根据最前面的式子,x=n+t第二问:发现可以分为两部分,第一部分是1*3+2*5+3*7+4原创 2015-09-22 16:05:29 · 533 阅读 · 0 评论 -
HDOJ-5495 LCS(other)
BC题解:题目中给出的是两个排列, 于是我们我们可以先把排列分成若干个环, 显然环与环之间是独立的. 事实上对于一个长度为l(l>1)l (l > 1)l(l>1)的环, 我们总可以得到一个长度为l−1l-1l−1的LCS, 于是这个题的答案就很明显了, 就是nnn减去长度大于111的环的数目.#include #include #include #include usin原创 2015-10-09 21:03:55 · 370 阅读 · 0 评论 -
HDOJ-2824The Euler function(筛选法求欧拉函数)
欧拉函数的定义 f(n)=[1,n]中与n互质的数的个数筛选法求欧拉函数原理,利用了欧拉的一下性质:(1) if (b%a==0 && (b/a)%a==0) then f(b)=f(b/a)*a;(2) if (b%a==0 && (b/a)%a!=0) then f(b)=f(b/a)*(a-1);主要思想和筛选法求素数是一样的,枚举约数,然后对倍数进行计算。#i原创 2015-09-22 11:01:57 · 657 阅读 · 0 评论 -
HDOJ-5446 Clarke and problem(DP)
设d(i,j)d(i, j)d(i,j)表示前iii个数,模ppp为jjj的方案数,则容易得到d(0,0)=1,d(i,j)=d(i−1,j)+∑j=0p−1d(i−1,(j−a[i]) mod p)d(0, 0)=1, d(i, j)=d(i-1, j)+\sum_{j=0}^{p-1} d(i-1, (j-a[i]) \ mod \ p)d(0,0)=1,d(i,j)=d(i−1,j)+∑原创 2015-09-22 10:12:04 · 514 阅读 · 0 评论 -
HDOJ-4498 Function Curve(自适应Simpson积分)
主要考点是数学计算和自适应Simpson积分题意:给你n系数,函数值,求在x=[0,100]这段区间内曲线的长度。需要准备一些数学知识,高数/数分/工科数分/微积分 中曾经学过,曲线的长度=可以确定,这是一个分段函数,想要计算积分值,就要确定每一段函数的表达式。要确定每一段函数的表达式,首先要确定每一段的转折点。把y=100也算作一个函数,然后把抛物线的方程转为一下,变成:原创 2015-09-18 19:46:06 · 689 阅读 · 0 评论 -
hdoj-1724 Ellipse(自适应Simpson积分)
浙大月赛的时候卡在了一道积分题目上,被积函数无法求出原函数。连接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3898问了学长方法,学习了刘汝佳的白书《算法竞赛入门经典训练指南》p169附近介绍的方法。自适应Simpson积分也是在被积函数上取微元然后积分,普通的积分取点越多,精度越高,但是时间也越长,在原创 2015-09-17 20:59:29 · 998 阅读 · 0 评论 -
HDOJ-1521排列组合(指数型母函数)
以前曾经写过普通的母函数,但是指数型母函数还没有写过。就在这里整理一下吧。指数型母函数主要处理排列方案问题。比如hdoj1521这道题就是典型的指数型母函数问题:有n种物品,并且知道每种物品的数量。要求从中选出m件物品的排列数。例如有两种物品A,B,并且数量都是1,从中选2件物品,则排列有"AB","BA"两种。下面是从百度文库里找的一篇ppt(如有侵权请告知)原创 2015-09-16 11:41:13 · 674 阅读 · 0 评论 -
HDOJ-3037(组合数学)
题意:将不超过m颗的相同的豆子放在n棵不同的树上,每棵树可以为空,求方案数mod p1 题解:可以理解为有m颗豆子,在n棵树上放k颗,然后再加一棵树,放m-k颗,于是变成了m颗相同的豆子放在n+1棵不同树上的方案数。也就是求a[1]+a[2]+a[3]+......+a[n+1]=m,(a[i]>=0)的方案数,但是这种情况并不好计算,我们可以让每一份都加上1,令b[i]=a[i]原创 2015-09-15 16:04:14 · 415 阅读 · 0 评论 -
HDOJ-5446/2015 ACM/ICPC Asia Regional Changchun Online 1010(数论)
题意:求组合数C(n,m)mod(p1*p2*p3......*pk), pi均为质数,1思路:以前曾经做过一次n,m范围是10^6的(http://blog.youkuaiyun.com/moringrain/article/details/46793743),做法是对n!,m!,(n-m)!分解质因数。但是由于这道题n,m的范围是在是太大了,所以此路不通。但是可以观察出这道题的取模很有意思,把模分原创 2015-09-15 10:58:42 · 458 阅读 · 0 评论 -
HDOJ1411 校庆神秘建筑/2015HDU Summer Trainning(3) - Team 1008 (几何)
HDOJ1411:按照一定顺序给出四面体的六条边长,求四面体体积。公式题目:计算的时候注意把边和角对应好,sqrt里面注意浮点误差,不要对负数开方。#include #include #include #include using namespace std;double a,b,c,d,e,f;double CalAng(double a,double b,doub原创 2015-09-10 13:52:50 · 475 阅读 · 0 评论 -
HDOJ-3240 Counting Binary Trees(数论)
典型的卡特兰数问题,答案就是卡特兰数列前n项和。关于卡特兰数列:http://www.cppblog.com/MiYu/archive/2010/08/07/122573.html这里比较棘手的问题就是取模问题,要用到乘法逆元,但比起HDOJ4828这道题来(http://blog.youkuaiyun.com/moringrain/article/details/47341247)原创 2015-08-07 16:54:25 · 586 阅读 · 0 评论 -
HDOJ-5392 Infoplane in Tina Town(置换群循环节长度)
求置换群的循环节长度。除了取模部分,题意和poj2369一样简而言之,给出一个1—n的排列p[i], p[i]表示把数列中a[]中的第p[i]位转移到第i位例如n=5时,p[]=4,1 5,2,3,a[]=1,2,3,4,5进行第一次便后后得到a[]=4,1,5,2,3再进行一次变换后得到a[]=2,4,3,1,5再进行一次变换后得到a[]=1,2,5,4,3再原创 2015-08-17 16:24:44 · 624 阅读 · 0 评论 -
HDOJ-5391 Zball in Tina Town(数学)
题意就是求(n-1)%n,n很大,O(n)的暴力求法是行不通的。观察可以发现,如果n是合数,那么1*2*3*4*......*n-1中包含了n的所有质因子,比如n=9,3和6中各含有一个3.但是有一个特例,4,只有这个合数不满足此规律。如果是质数呢?题解是“威尔逊定理”: 在初等数论中,威尔逊定理给出了判定一个自然数是否为素数的充分必要条件。即:当且仅当p为素原创 2015-08-16 14:27:02 · 610 阅读 · 0 评论 -
HDOJ-1787 GCD Again(欧拉函数)
ans=n-1-Eular(n)Eular(n)表示欧拉函数,[1,n]区间内与n互质的整数的个数通式:Eular(x)=x(1-1/p1)(1-1/p2)(1-1/p3)(1-1/p4)…..(1-1/pn),其中p1, p2……pn为x的所有质因数,x是不为0的整数。Eular(1)=1(唯一和1互质的数(小于等于1)就是1本身)顺便提一下,有一个有意思的公式:一个数的原创 2015-08-15 15:40:07 · 648 阅读 · 0 评论 -
HDOJ-2669 Romantic(数论)
裸的扩展欧几里得算法,但要注意题目中要求a为非负数,扩展欧几里得算出来的a可能是负的,需要对a,b进行一下调整,否则会WA。#include #include #include using namespace std;typedef long long LL;LL Ex_gcd(LL a, LL b, LL &x, LL &y){ LL d; if (a == 0 && b原创 2015-08-02 16:09:18 · 545 阅读 · 0 评论 -
乘法逆元的作用
转载自以下博客,源出处不明,如有侵权请告知博主,我会立即删除:http://blog.youkuaiyun.com/tsaid/article/details/7365936若对于数字A,C 存在X,使A * X = 1 (mod C) ,那么称X为 A 对C的乘法逆元。逆元的作用?让我们来看下面的例子:12 / 4 mod 7 = ? 很显然结果是3我们现在对于数对 (4,转载 2015-08-02 19:28:48 · 3408 阅读 · 4 评论 -
HDOJ-5371 Hotaru's problem(Manacher)
2015 Multi-University Training Contest 7 1003题当时想到了用Manacher和二分,但是没想到用set去维护,可惜。题解:先用求回文串的Manacher算法,求出以第i个点和第i+1个点为中心的回文串长度,记录到数组c中比如10 9 8 8 9 10 10 9 8我们通过运行Manacher求出第i个点和第i+1个点为中心的回文串长度0原创 2015-08-12 15:35:24 · 300 阅读 · 0 评论 -
HDOJ-3549 Flow Problem(网络流)
最大流,sap算法.#include #include #include #include using namespace std;const int MAXN=2005;const int MAXE=2005;const int INF=0X3F3F3F3F;struct Edge{ int to,next,cap,flow; }edge[MAXE];int原创 2015-07-06 15:00:09 · 326 阅读 · 0 评论 -
HDOJ-1576(数论)
看着像扩展欧几里得,努力往上面凑吧。令M=9973,X=A/B, Y=A/M因为n=A%M=A-(A/M)*M=BX-MY现在有BX-MY=n了,B和M是已知的,X,Y未知的,距离扩展欧几里得还差一点。由于gcd(B,M)=1(题干里说了,要利用上),利用扩展欧几里得我们可以算出BX‘+MY’=1中X'和Y'的值、(关于系数正负号的问题,还有待学习......)X=N*X'原创 2015-07-27 16:19:24 · 793 阅读 · 0 评论 -
HDOJ-3572 Task Schedule(网络流)
题意:有 N(N做法:建图如下:设超级源点1,到每个任务点之间的容量为Pi,每个任务点到第Si至Ei天都建一条边,容量为1。每一天到超级汇点建边,容量为m。跑一遍最大流,如果超级源点与超级汇点之间的最大流等于P之和,则可以按时完成任务。(可以这么理解:把每个任务分配到每一个在区间内的天,但是每一天做多能接收m个任务)代码:#include #include原创 2015-07-06 16:41:06 · 379 阅读 · 0 评论