自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(40)
  • 资源 (3)
  • 收藏
  • 关注

转载 ACRush 楼天成回忆录

利用假期空闲之时,将这几年 GCJ , ACM , TopCoder 参加的一些重要比赛作个回顾。首先是 GCJ2006 的回忆。Google Code Jam 2006一波三折:Google Code Jam 2006 是我第一次到美国参加现场的程序设计比赛。 Google Code Jam 2006 的比赛地点设在了纽约,这次纽约之行之前的签证出了不小的问题,这里非常感

2013-09-11 19:17:30 1749

原创 hdu 4746 Mophues

莫比乌斯反演。先初始化出所有数有多少个质因子和mobius。然后处理mob_sum[ i ][ j ],表示当公因子的因子个数小于等于 j 个的mobius前 i 项和。然后分块求和即可。         分块处理部分见(不会莫比乌斯反演的同学也可以去这里学一下)http://wenku.baidu.com/view/fbe263d384254b35eefd34eb.html。#inc

2013-09-30 20:02:44 2230

原创 HDU 3660 Alice and Bob's Trip

树形dp,这道题如果选G++的话,只输入都会超时。我是C++ 1900ms + 飘过的。。。但是输入优化后就快了很多了,1100ms左右。dfs按层次求最值就行了,差不多也算是博弈吧,到bob取的时候要选尽量大的分支(满足条件L和R之间的情况下),反之要alice选尽量小的分支。然后一遍dfs就可以了,时间复杂度为O(n)。

2013-09-30 17:50:27 1372

原创 hdu 4455 Substrings

dp。dp[ i ]表示长度为 i 的答案。则我们可以发现有dp[ i ] 和 dp[ i - 1 ],我们看各自的第一种满足的情况有{a1,a2,a3.......ai}, {a1,a2,a3.......a[i - 1]}则可以发现dp[ i ],和dp[i - 1]是存在递推关系的。#include#include#include#include#include#defin

2013-09-27 19:57:41 995

原创 hdu 1695 GCD

容斥原理 + 欧拉函数 或 莫比乌斯反演。莫比乌斯反演要比容斥原理快的多。。先说一下容斥原理的思路吧。其实容斥原理方法挺暴力的,本来一直想一次容斥就把结果算出来的,未果。。然后没办法了想到,对于每一个c b),然后相加就行了。注意case组数有3000之多,所以要先把每个数质因子初始化出来,不然会超时!

2013-09-26 22:43:21 1059

原创 hdu 4565 So Easy!

数学。看了Siriuslzx大牛的解释才理解的:http://www.cnblogs.com/lzxskjo/archive/2013/05/27/3100828.html。          对于式子(a + sqrt(b))^ n 二项式分解可得 (a + sqrt ( b ))^ n  = x + y * sqrt( b ) 。且有   (a - sqrt ( b ))^ n  = x

2013-09-26 14:25:22 849

原创 hdu 4571 Travel in time

Floyd + Spfa + dp。先用Floyd预处理出所有点对之间的最短路,然后考虑到始点和终点是必须经过的,并且可以不游玩,于是就不能用原来的始点和终点,我们考虑新加入原点和终点,并且原点花费时间和满意值都为0(这样保证不会对结果做出影响),终点花费时间为0,满意值大于满意值的最大值(保证如果可以到达原来终点一定可以到达新终点)。接下来就是从新建图了,新原点到旧原点的路程为0,新原点到别的点

2013-09-26 12:54:23 1266

原创 Spfa模板

#include#include#includeusing namespace std;const int MAXN=100002,MAXM=2000005,INF=0x7fffffff,Qsize=MAXN;int N,M,S,T;struct Edge //使用数组模拟邻接表存储边信息{ int u,v,c;}E[MAXM];int fir[MAXN],next[M

2013-09-25 20:24:12 1013

原创 hdu 4424 Conquer a New Region

贪心+并查集。题目要求所有点到最一点经过的最小边之和最大。则有,对于两个集合A,B,也就是原树两颗子树,加上一条边使他们连通,有两种连接方案:1、使用A集合中的点作为center,则B集合中的点到center必经过新加入的边。1、使用B集合的点作为center,同理。这样的话我们就想到使新加入的边作为当前所有边的最小边,这样的话就容易计算和比较多了,于是问题就迎刃而解了:先加大边,然后并查集求值。

2013-09-25 11:07:20 995

原创 hdu 4427 Math Magic

一个长了一张数学脸的dp!!dp[ i ][ s ][ t ] 表示第 i 个数,sum为 s ,lcm下标为 t 时的个数。显然,一个数的因子的lcm还是这个数的因子,所以我们的第三维用因子下标代替lcm,可以有效的减少枚举量。

2013-09-24 22:14:58 1213

原创 hdu 4734 F(x)

数位dp,数位dp类的题目,一定要想清楚再写代码。如果没想清楚的话最好不要写。。。不然越写越乱。         dp[ i ][ j ][ k ] 表示为 小于 (j + 1) *  1e i  的所有 x 所组成f (x)等于k 的x的个数。则有状态转移方程:         dp[ i ][0 ][ k ] = dp[ i - 1 ][ 9 ][ k ];         d

2013-09-23 20:55:24 993

原创 hdu 4756 Install Air Conditioning

Prim + 树形dp,南京网络赛的题目。这道题和12年福州现场赛的一道题很类似(hdu 4126 Genghis Khan the Conqueror),替换最小生成树上每一条边(与 0 点相连的边除外),然后分别求次小生成树,求生成树中的最大值。可以先prim求出最小生成树,再用dp求把边u - v 边删去,两颗子树的最短距离,分别替换求值就可以了。#include#incl

2013-09-23 15:38:38 1709

原创 hdu 4126 Genghis Khan the Conqueror

prim + 树形dp,首先用prim预处理,建出最小生成树,然后,如果更新的不是最小生成树上的边,那么新图中的最小生成树即为原来的最小生成树。如果更新的为最小生成树上的边,则我们需要考虑两个方面:       1、将原来最小生成树的边,换成新边的新生成树的长度。       2、把原来的边删除,原图上从新生成最小生成树。第一个问题比较容易解决,直接用原生成树,算就可以。仔细想一下第二

2013-09-23 13:29:40 1859

原创 hdu 4753 Fishhead’s Little Game

状态压缩dp解博弈问题(记忆化搜索)。比赛的时候最后才开始做这道题,而且当时不知道为什么一直犯一些很2B的问题,导致没能ac,晚上看了看原先的代码,改了一下就MLE了。。。我原先是开的dp[1 << 24] 的记忆化数组,果断超内存了,然后仔细看了一下题目,发现题目中的n >= 12,也就是说用到的状态不超过2^12个,于是把满足情况的状态hash到2^12以内的数组就可以了。

2013-09-22 00:48:29 1521

原创 HDU 4122 Alice's mooncake shop

单调队列,裸的!!坑死了,说好的“All the orders are sorted by the time in increasing order. 呢,我就当成严格上升的序列了,于是就各种错。测试数据是有重复元素的!!!//#pragma comment(linker, "/STACK:1024000000,1024000000")#include#include#include

2013-09-20 19:08:41 1067

原创 HDU 4118 Holiday's Accommodation

树形dp,好不容易中秋节做一场比赛,在hust上C上这道题怎么交怎么爆栈。。。无语了,上hdu一交就过了!!!        题目让求的是最远距离的和,两点间距离是最短路。画一下图,然后我们可以发现,因为是树形结构,所以对于边(u,v),只有边左边的点都通过这条边连边右边的点,才能使得总距离最远,于是就可以看出这是一道简单的树形dp了。这条边用的次数就是两边连的边数。。。#pragma

2013-09-19 15:29:43 1172

原创 ZOJ 3541 The Last Puzzle

区间dp。杭电上这题果然过不了,不知道那些A了的是怎么A的。。对于区间[ l , r ]一定是从最左边或者从最右边开始按的,因为假如从中间任意位置 k 开始按的话,一定要按最左边的那个,也一定要按最右边的那个,这样的话一定会经过 k ,这样的话,对于 k 来说这样一定不是最优解。于是问题就转化为了区间dp了。可以用dp[ l ][ r ][0] 表示从左边开始按,把区间走完需要多长时间(要满足

2013-09-18 19:53:49 1168

原创 HDU 4089 Activation

概率dp,这种一个点作为起点,求到多点的概率或期望的都可以倒过来想。。。即让起点变为那多个点,终点(即答案)即为原来起点的值。

2013-09-17 17:44:22 890

原创 HDU 4059 The Boss on Mars(容斥原理)

容斥原理,先把 n 质分解,利用x^4 的前n项和公式,然后把与 n 不互质的数的和求出来然后减一下就可以了。#include#include#include#include#include#include#define LL long long#define CLR(a, b) memset(a, b, sizeof(a))using namespace std;c

2013-09-16 19:18:20 1080

原创 hdu 4745 Two Rabbits

区间dp,关键是想模型。题目其实可以转化为求环上的最长非连续回文串,可以用区间dp做。。可以先把串copy成两个,然后再做线性的最长回文串,虽然比直接环上做时间慢一些,但是比较容易写。。dp[j][k]表示 j 到 k 表示的最长回文串,注意,这个回文串表示的只有一半,需要加的时候加 2 来保证每个人都把走完一个环。。。然后最后在考虑一下两个兔子在同一块石头的情况。。#include#i

2013-09-16 11:07:53 1438

原创 hdu 4739 Zhuge Liang's Mines

今天的网络赛题目,用状态压缩的思想预处理,可以证明出20个点大概不能组成超过100个正方形。于是先预处理所有的正方形,然后0-1背包就可以了。、//#pragma comment(linker, "/STACK:1024000000,1024000000")#include#include#include#include#include#include#include#in

2013-09-15 22:27:01 1224

原创 HDU 4035 Maze

非常nice的一个概率dp,此题要求的是走出去的步数的期望,首先我们要把问题转化为从任意点出发,到 1 点需要步数期望。于是问题就转化为到 1 点的步数的期望了。然后我们就可以得到每一个点的期望公式:E[i] = ki*E[1] + (1-ki-ei)/m*( E[father[i]]+1 + ∑( E[child[i]]+1 ) ) = ki*E[1] + (1-ki-ei)/m*E[fat

2013-09-13 22:41:24 1020

原创 hdu 1693 Eat the Trees

入门插头dp,终于知道什么叫插头dp了。。。看了一下,陈丹琦的论文,然后又去sha崽哪儿逛了一圈。。。不过虽然是最简单的插头dp,要是自己写的话难度还是很大啊。。。看了一下大牛们的代码才写出来的。。。#include#include#include#include#include#define LL long long#define CLR(a, b) memset(a, b,

2013-09-11 20:32:39 1278

原创 HDU 4070 Phage War

贪心,t 大的放到前面。。。因为感染所有cell需要的phage的总数是一定的,所以产生phage需要的时间是一定的,只需要考虑用来感染的时间,这样考虑的话,把 t 小的放后面的话,可以发现总时间的最少的。#include#include#include#include#include#define LL long long#define CLR(a, b) memset(a,

2013-09-11 17:32:45 1232

原创 HDU 4061 A Card Game

看了大牛的解释才懂的,数学思维这么强。。。弱菜表示搞不了。。       大牛的链接:http://www.cnblogs.com/xin-hua/p/3292431.html#include#include#include#include#include#define LL long long#define CLR(a, b) memset(a, b, sizeof(a))

2013-09-11 17:25:30 890

原创 hdu 4274 Spy's Work

树形dp,这道题主要是把题目的模型转换一下,给每个节点设置一个上下界,然后dfs分别判断每个节点上下界时候有冲突即可。每个节点下届等于子节点下届之和加1。#include#include#include#include#include#include#include#define SL strlen#define PB push_back#define LL long lo

2013-09-10 21:24:07 962

原创 HDU 4277 USACO ORZ

暴力枚举,然后用set判重,只是时间复杂度有点儿高。。。#include#include#include#include#include#include#includeset>#define SL strlen#define PB push_back#define LL long long#define INF 0X3f3f3f3f#define CLR(a, b)

2013-09-10 19:08:38 1145

原创 HDU 4281 Judges' response

状态压缩dp,经典MTSP问题,第一问比较容易求,先求出满足情况的状态放在了mov里面,然后模拟0-1背包的过程求出最少用多少judge。第二问就比较复杂了,第二问要求我们算出最短的时间,即最短总路程。这样的话就比较难求了。。。第二问看了一下网上大神的代码才懂的。。。汗。。。第二问,dt[i][j],表示当状态为i(注意:i & 1 == 1)时, 最后一个走过的节点是j时最短路径, best[i]

2013-09-10 11:06:17 1169

原创 HDU 4284 Travel

据说是TSP经典问题。。。可以用状态压缩做。但是看到数据量,就厚着脸皮上搜索了。。。先floyd预处理每对点间的最小消费,然后只考虑要去的城市就可以了,这样的话城市数最多16个。。。当时就暴搜了。。。但是注意城市1如果也需要工作的话不一定是第一个工作的城市。。。#include#include#include#include#include#include#define INF

2013-09-09 18:46:30 1033

原创 HDU 4283 You Are the One

区间dp,如果一个人入栈的话,那到这个人出栈的那一段上台的人肯定是原本位置和当前位置之间的那些人,所以这一个区间可以考虑为一种情况,所以就把问题弄成把一个大区间分解,找出满足题意的最小值了,于是就成为了区间dp问题了dp[l][r]表示只有这个区间的值时可以得到的最小值,考虑区间(l,r) 则一种情况是把区间继续往下分,于是dp[l,r] = min(dp[l,r], dp[l][i] + dp[

2013-09-09 18:40:16 891

原创 hdu 4714 Tree2cycle

乱搞题,要求用最少的操作把一颗树转化成一个环。其实就是把树分成最少的链,然后连接起来即可,仔细观察树的话会发现,一般一个点的度如果大于1的话,该点必然要断开一些连接,因为最终每个点的度都是2, 然后就是看点上断开那些连接了,其实,如果一个节点的除去父亲节点如果度大于1的话,断开与父亲节点的那条边必然是一种正解。。。于是问题就解决了,只需一遍dfs即可。在杭电交注意加上挂。。。不然会爆栈。。。#

2013-09-09 11:17:46 1487

原创 HDU 4291 A Short problem

通过矩阵快速幂找循环节,注意要每一层都要找一次循环节。。。发个题解仅供大家对拍。。。#include#include#include#includeusing namespace std;#define MAXN 2#define LL long longLL MOD;struct Matrix{ LL data[MAXN][MAXN]; void init(

2013-09-06 18:13:14 1060

原创 HDU 4293 Groups

模型挺好的dp题,其实这道题就是建一个模型然后就很容易想到递推过程了,我们可以把每个人的描述,存到数组a中,a[l][r]表示左边有l个,到第r个这个人所在一层停止。。。然后就可以写出转移状态方程了。注意如果dp[i]>dp[j] && i #include#include#include#include#include#define LL long long#define CLR

2013-09-06 17:49:59 981

原创 HDU 4433 locker

很暴力的一个dp,dp[i][j][k] 表示的是第i位时,前i-1位都匹配后,当由前面的状态推出第i位+j,i+1位+k时最少用多少步。注意up和down要分开算。。#include#include#include#include#include#define LL long long#define CLR(a, b) memset(a, b, sizeof(a))using

2013-09-06 11:18:27 1129

原创 HDU 4405 Aeroplane chess

求期望,倒着推比较容易算,避免了求最后一步到达地超过n时期望的计算。。。然后注意如果两点之间有传送门的话,期望的一样的。整个过程大概是马尔可夫过程。。。#include#include#include#include#include#include#define LL long long#define CLR(a, b) memset(a, b, sizeof(a))#def

2013-09-05 17:57:20 1114

原创 HDU 4407 Sum (容斥原理)

这题难点就是看出来用容斥原理做,可以先分析时间复杂度大致确定用我已知的数据结构做不了。。。我们会发现刚开始数据是1-n,如果不做任何修改的话,只查询的话的确可以用容斥原理做,就是把p质分解,然后没有p质因数的元素就是与p互质的元素,于是就很容易用容斥原理做了。但是有了修改操作,我们发现一旦做出了修改就没办法用上述方法做了。但是仔细考虑发现修改次数最多不会超过1000,于是我们可以先用容斥原理算出未

2013-09-05 17:52:00 1328

原创 hdu 4418 Time travel

高斯消元法求解概率dp,自己做的时候看出来是需要用到高斯消元了,但是实在是想不到怎么创建方程,后来搜了一下,发现大家建方程的方法都是一样的,只是没有人解释为什么这么建方程,菜鸟表示不能理解~~~只好先抄下来慢慢理解了。。。目测是用马尔可夫过程证明得到的。。。#include#include#include#include#include#include#define LL long long#define CLR

2013-09-05 09:38:05 1466

原创 hdu 4473 Exam

思维定式了,看到题目就一直想两个数怎么怎么地,还硬生生的搞出了一个规律,但是,看起来就会超时超的不成样子,只好网上搜了一下。。。        原题可转化为a*b*c #include#include#include#include#include#define LL long longusing namespace std;int main(){ //freope

2013-09-03 20:39:34 1072

原创 hdu 4472 Count (2012 ACM-ICPC 成都现场赛)

递推,考虑到一n可以由i * j + 1组合出来,即第二层有j个含有i个元素的子树。。。然后就可以了。。#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#d

2013-09-01 17:12:52 1508 1

原创 hdu 4465 Candy(2012 ACM-ICPC 成都现场赛)

简单概率题,可以直接由剩余n个递推到剩余0个。现在考虑剩余x个概率为(1-p)的candy时,概率为C(2 * n - x, x) * pow(p, n + 1)  *pow(1 - p, n - x);在写出x - 1的情况,就可以发现组合数可以直接递推,所以可以直接求。但是考虑到p可能很小,n可能很大,这样的话直接用pow函数会丢失精度,我们可以把double类型写成log10的形式,这样

2013-09-01 17:05:48 1563

数位计数问题解法研究

数位计数问题解法研究 清华附中 高逸涵 (gaoyihan@gmail.com) 【摘要】数位计数问题是一类比较麻烦的问题,这类问题难度往 往不大,但特殊情况众多,实现较为麻烦,本文将通过对几个此 类问题的例子进行分析,利用从简单到复杂的层层递进思路进行 代码实现,说明一种较好的对该类问题的处理方式。

2013-10-07

算法合集之《浅谈数位类统计问题》

算法合集之《浅谈数位类统计问题》 浅谈数位类统计问题 山东省青岛第二中学 刘聪

2013-10-07

jsp 考试要求

考试要求 : (2) 第二讲 tomcat 7 的配置 要求会。

2013-06-14

空空如也

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

TA关注的人

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