自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(36)
  • 收藏
  • 关注

原创 POJ 3696 The Luckiest Number 欧拉函数

/* 《数论及应用》P164*/#pragma warning(disable:4786)#pragma comment(linker, "/STACK:102400000,102400000")#include#include#include#include#include#include#include#include#include#include#inc

2016-08-28 17:22:01 365

原创 POJ3358 Period of an Infinite Binary Expansion

/* 《数论及应用》P168*/#pragma warning(disable:4786)#pragma comment(linker, "/STACK:102400000,102400000")#include#include#include#include#include#include#include#include#include#include#inc

2016-08-28 10:59:43 469

原创 POJ 1284 primitive roots

/* 题目描述:给出奇质数p,问p的原根有多少个? 思路:根据原根的性质,质数p的原根数量为phi(p - 1)*/#pragma warning(disable:4786)#pragma comment(linker, "/STACK:102400000,102400000")#include#include#include#include#include#i

2016-08-28 09:45:00 388

原创 LightOJ 1079 Just another Robbery 概率dp

/* 题目描述:有n件物品,盗走第i件物品可以得到财产m[i],但同时有p[i]的概率被抓住,现要求从这n件物品中取走若干件, 使得得到的财产量最多,又要保证被抓住的概率小于P 思路:dp[i][j]表示到第i件物品时得到财产j时被抓住的概率最小值,则有 dp[i][j] = min(dp[i - 1][j] , dp[i - 1][j

2016-08-27 21:21:42 489

原创 hdu3746Cyclic Nacklace 扩展KMP

/* 题目描述:对于一个字符串s,如果将s的左右相连成一个圈后,这个圈是由相同的多个字符片段构成,那么这个串称为 “迷人串”,问在s的一端最少加上多少个字符,可以使s成为“迷人串”。 思路:借助扩展KMP中的next数组(代码中为f数组),len表示s的长度,f[i]表示s[i......(len-1)]与s[0......(len-1)]匹

2016-08-27 17:24:31 423

原创 LightOJ 1038 Race to 1 again 期望+概率dp

/* 题目描述:给定正整数n,每次任意选择n的一个因子并除掉,问平均一共要除多少次能把n变成1 思路:设dp[x]表示把x变为1的期望,f[x]表示x的因子个数,根据全期望公式和期望的线性公式可得 dp[x] = Σ(1/f[x])*(1 + dp[x / y])(y是x的因子且y不是1) + (1/f[x])*(1 + dp[x]

2016-08-27 10:15:16 493

原创 刘汝佳蓝书后缀数组模板解释及补全

相信很多初学后缀数组的ACMer在学习蓝书中的后缀数组部分遇到了一些障碍,可能像我一样看明白了P219 ——220的讲解和算法,百度了基数排序的方法,然后被卡在P221的代码上了,本文目的即分享我对这段代码的理解。      首先明确其中每个变量的含义,n为字符串s的长度,m为字符串中可能包含的最大字符值+1(故一开始应置为'z' + 1),sa数组存的是P220四幅图中每一幅结束时最下面的最

2016-08-25 23:37:40 3272 6

原创 Uva11762 Race to 1 数学期望

/* 题目描述:给定一个整数n,每次随机选择一个小于n的素数y,如果n能整除y就耗费一单位时间将n变为n/y,否则耗费 一单位时间,n不发生变化,问平均花费多少时间能把n变为1 思路:设dp[x]表示将x变为1的时间数学期望,p(x)表示小于等于x的素数个数,则有 dp[x] = Σ 1/p(x)

2016-08-21 12:12:16 361

原创 POJ3243 Clever Y 高次同余方程

/* 题目描述:求解X^Y = K (mod Z)的最小正整数解 思路:babystep—giantstep算法*/#pragma warning(disable:4786)#pragma comment(linker, "/STACK:102400000,102400000")#include#include#include#include#include#i

2016-08-20 17:23:56 296

原创 LightOJ 1030 Discovering Gold 概率dp

/* 题目描述:给出一个长度为n的洞穴,洞穴中每一处有一个价值为x[i]的宝藏,起初时位置在1处,现在用掷色子的方法决定 向前走几步,如果向前走掷出的步数后超过n,那么就重新再掷一次,现在问走到n时获得宝藏值的数学期望是 多少。 思路:设dp[i]表示从i位置走到n时获得的宝藏值的数学期望

2016-08-20 11:36:43 287

原创 lightOJ 1027 A Dangerous Maze 概率&期望

作为一个概率期望题的初学者,总结有关期望的两点供自己以后检验:1、期望的线性性质与全期望公式      全期望公式对应计数原理当中的加法原理,把每一种情况的期望乘以概率相加;线性公式对应计数原理当中的乘法原理,把每一步的期望相乘e.g.从甲到乙的时间期望为E1,从乙到丙的时间期望为E2 , 那么从甲到丙的时间期望为E1 + E2;2、对于没法直接通过上述两公式算出来的期望(比如本题

2016-08-19 22:53:12 360

原创 hdu2087 剪花布条 KMP

/* 题目描述:给出字符串T和字符串P ,问字符串T中可以“剪裁”出多少个字符串P,比如aaaaaa中可以“剪裁” 下的aa的数量是3 方法:本题考查了对于KMP算法中失配数组的理解,如果想要完全从上一个匹配的字段中“摆脱”出来,使其  与下一个的字段没有重叠的部分,只需要使最后一个匹配点失配后转移到

2016-08-19 16:18:20 297

原创 hdu1711 number sequence KMP

/* 题意描述:给出数列a和数列b,问数列a中是否存在与数列b匹配的子列 方法:KMP算法的应用*/#pragma warning(disable:4786)#pragma comment(linker, "/STACK:102400000,102400000")#include#include#include#include#include#inclu

2016-08-19 12:49:47 291

原创 hdu3597Hello Kiki 一元模线性方程组

/* 题目描述:有一堆硬币,每堆mi个的数剩ai个(1<= i <=6)问这堆硬币最少多少个 方法:设硬币有X个 X = mi * yi + ai , 所以有X = ai ( mod mi ),解一元模线性方程组*/#pragma warning(disable:4786)#pragma comment(linker, "/STACK:102400000,10240

2016-08-18 18:41:57 376

原创 hdu1573 X问题 一元模线性方程组

/* 题目描述:给出含m(1<= m <= 10)个形如x=bi (mod ai)的模线性方程组,问该方程组小于等于(1 <= n <= 1e9) 的解有多少个? 方法:正常解一元模线性方程组,自上向下合并,直至仅剩一个方程x = r (mod lcm(a1 ,a2 ,...,am)),若r > n 无解; 否则令r+lcm

2016-08-18 11:43:46 458

原创 POJ2115 C Looooops 一元模线性方程

/* 题目描述:给出程序段for(int i = A ; i!= B ; i+= C) statement ,给出A,B,C,k,已知该程序段的运算中出现 的数都是mod k之后的,问该程序段将被执行多少次结束,不会结束的话输出FOREVER 方法:由题意列出方程有A + Cx = B (mod k),变形Cx =

2016-08-18 10:55:36 322

原创 POJ2769 Reduced ID Numbers

/* 题目描述:给出n(1<= n <= ,300)个正整数,每个正整数的范围是[0 , 1e6 - 1],最小的满足对这n个数取模互不相 等的m是多少? 方法:从1开始枚举m,直到出现满足条件的m为止,在实现的时候注意memset的写法*/#pragma warning(disable:4786

2016-08-17 22:28:52 245

原创 pku 2891Strange Way to Express Integers 一元模线性方程组解释+题解

一元模线性方程组指的是如下形式的方程组:                            x = r1 (mod a1)    x = r2(mod a2)    .......   x = r n(mod an)       对于这类问题的处理方法,是每次合并两个方程,先合并前两个,再将这个方程和第三个合并,......,这样最后就只剩下一个模线性方程,那么要怎么合并呢

2016-08-17 22:10:15 427

原创 hdu1247 hat's words 字典树

/* 题目描述:给出n(n<5,000)个单词,其中被称为hatword的单词满足这个词恰好由给出的词中的两个单词 首位相接而成,现要求输出给出单词中的hatword 方法:应用字典树解决问题,先将单词全部插入完成建树,然后利用dfs进行查询,具体查询方式见注释*/#pragma warning(disable:4786

2016-08-15 10:48:02 253

原创 hdu2082 找单词 母函数

找单词Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 6212    Accepted Submission(s): 4366Problem Description假设有x1个字母A, x2个字母B,....

2016-08-14 17:44:37 290

原创 nefu119组合素数

/* 题目描述:给出正整数n和素数p(1<n, p<1e9),问C(2*n , n)能整除p多少次 方法:C(2*n , n) = (2*n)!/(n! * n!),因此答案就是2*n分解后p的指数减去2倍n分解后p的指数 根据定理,n!分解后p的指数为 k = [n / p] + [n / p^2] + [n / p^3] +... + 0*

2016-08-13 23:27:02 376

原创 nefu118 n!末尾0的个数

#pragma warning(disable:4786)#pragma comment(linker, "/STACK:102400000,102400000")#include#include#include#include#include#include#include#include#include#include#include#include#define

2016-08-13 22:37:24 336

原创 POJ2689 Prime distance 素数

/* 题目描述:给出长度小于1e6的区间[L , R] (1 <= L < R <=2^31),要求输出区间内距离最远的两个素数和距离最近的 的两个素数,如果区间内不足两个素数按照题目要求输出 方法:由定理可知,“n为合数则n一定有不超过√n的素因子”,因此,可以预处理1e5以内的所有素数,在利用这些素数

2016-08-13 22:01:26 266

原创 nefu177 素数个数的位数 素数定理

/* 题目描述:给出n(1 < n < 1e9),假设10^n内素数的个数为x,问x一共有多少位。 方法:利用素数定理,π(x)~ x / lnx ,将10^n 代入得到 x ~(10 ^n)/ nln10 , 又有位数公式, x的位数为log10(x) + 1 , 将x代入化简得到结果。*/#pragma warning(disable

2016-08-13 10:07:48 338

原创 Uva548 Tree 二叉树遍历

/* 题目描述:见紫书155页 方法:这道题的一个收获就是若给出一棵树的中序遍历和后序遍历的结果,可以还原该树。 具体还原方法是后序遍历的最后一个节点是该树的根节点,再中序遍历的结果中找到根节点,然后找到根节点 的左右子树,分别建立左子树和右子树,在建立左子树时需要先找到左子树的根节点, 然后建立左子树的左右

2016-08-12 22:25:55 262

原创 Uva122 Trees on the level 二叉树的数组实现

作为一个还没有系统学习数据结构知识的大一学生,简单谈一下通过这道题对二叉树产生的认识。      二叉树的一个节点中起码包含三个基础信息:节点权值、左子节点的地址(或编号)、右子节点的地址(或编号)。二叉树有三种实现方法:1.第一类数组实现     在这种实现当中,对于编号为k的节点,其左子节点的编号为2*k,右子节点的编号为2*k + 1,另外确定根节点的编号为1.     毫无

2016-08-12 18:11:59 1222

原创 Uva12657 Boxes in a line

/* 这道题是刘汝佳紫书144页的题目,题意不再赘述,主要记录一下这道题的收获。 由于插入的位置时左时右,因此单向链表不能处理这类问题,需要使用双向链表。 反转操作不一定真的要反转,应该根据情况灵活应对。 另外就是链表的不可忽视的一个特点,那就是链表中节点的编号不是该节点在链表中位置的编号,节点编号与节点 当中的内容是一开始就对应好不变的。比如现在

2016-08-11 19:22:20 291

原创 Uva11988 Broken Keyboard 链表

#pragma warning(disable:4786)#pragma comment(linker, "/STACK:102400000,102400000")#include#include#include#include#include#include#include#include#include#include#include#define LL long l

2016-08-11 10:33:28 274

原创 nefu115 斐波那契的整除 斐波纳契+打表

/* 题目描述: 斐波纳契数列的第n(1<n<1e9)项能否被3整除 , 能否被4整除 , 能否被12整除 方法:打表可发现斐波纳契数列的循环的特点: 对于第n项来说,如果n是4的倍数,则f[n]能整除3 ; 如果n是6的倍数,则f[n]能整除4 ; 如果n是4和6的公倍数, 则f[n]能整除12*/#pragm

2016-08-10 08:44:16 340

原创 Uva 11427 Expect the Expected 概率dp 求数学期望

/* 题目描述:有一个人跟人打牌 , 每局赢的概率是p ,他一晚上最多跟人玩n局,但如果他当前的胜率超过了n,那么 他就会心满意足地去睡觉,如果他的胜率不能超过p , 那么他就会一直跟人打下去直到玩足了n把,一旦玩足 n局胜率还没有超过p,他就会垂头丧气地去睡觉并且今后再也不打牌了,问这个人平均玩牌能玩几晚上 方法:

2016-08-08 18:18:28 392

原创 Uva11722 joining with friend 概率 几何计算

/* 题目描述:已知甲在s1到s2时间内各时刻到达车站的概率相等,乙在t1到t2时间内各时刻到达车站的概率相等, 火车将在车站停留w时间,问在火车停靠时间内甲乙见面的概率是多少 方法:典型的几何概型,高中时必修三最常考的,画出x= s1 , x = s2 , y = t1 ,y = t2所围成的区域,

2016-08-05 16:47:54 452

原创 Uva11021 tribbles 概率dp

/* 题目描述:有k只麻球,每只麻球只能活一天,该麻球在存活期间繁衍i只麻球的概率为P[i](0<=i < n),现问这k只麻球在m 天内死光的概率是多少?(m天内,不是问正好m天死光) 方法:概率dp,dp[i]表示一只麻球及其后代在i天内死光了的概率,那么y dp[i] = P[0] + P[1] * (dp[

2016-08-04 09:52:01 239

原创 hdu3177Crixalis's Equipment 差值排序

/* 题目描述:有容量为V的空间,n件物品,每种物品有a[i],b[i]两个量,当空间的剩余容量大于等于b[i]时,可以将i物品放进该空间,放进去 之后空间的容量变为V - a[i],现问是否能根据一定顺序将所有的物品放入该空间? 方法:问题可以转化成怎么放置可以使n件物品需要的空间(不是占用的空间,n件物品全部放入后占用的空间是一定的)最小

2016-08-03 22:37:28 260

原创 hdu3394Railway 双连通分量

/* 题目描述:给出一张无向图,分别求出图中满足如下两种条件的边的数量: 1、该边不在任何简单环当中; 2、该边在多个简单环当中; 方法:不在任何简单环当中的,就是图中的桥,可以求出来; 通过简单环联想到点双连通分量,找到某个双连通分量,若该双连通分量包含的边数超过该点双连

2016-08-03 20:00:44 479

原创 对刘汝佳蓝书点双连通分量(BCC)模板的理解

/* 经过简单的使用,对刘汝佳的这个板做几个简单的说明: 1、算法结束后每个bcc[i]里存入一个双连通分量的点的标号,其中割点也被存进去,也就是说割点可以属于多个双连通分量 2、根据刘汝佳所说的点—双连通的要求,“任意两条边都在一个简单环中”,但是从代码中看到只要找到个点就要开始组一个连通分量了, 那么问题就来了,如果割点的两侧都不是环呢? 比如对一棵树来说,任一点都

2016-08-03 17:59:19 1060 1

原创 hdu4411 Arrest 最小费用流

/*    题目描述:有n+1个城市,从0到n标号,并给出m条这n + 1个城市之间的双向边,1——n每个城市都有一个匪徒,0城市有k名警察,现要求警察                    捕捉所有匪徒后并回到0城市的最短路径,其中k名警察可以全部出动,也可以出动一部分。另外有一个限制:若警察捕捉i城市的匪徒                    之后,则i-1的匪徒就会逃走,任务失

2016-08-01 14:54:42 364

空空如也

空空如也

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

TA关注的人

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