自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Atcoder Grand Contest 023 A题解

Atcoder Grand Contest 023 A题解题意给定一个数字序列,想知道有多少种选择子序列的方式使得子序列和为0.笺释 子序列A如果一定是从序列的头部开始向后的,这时候我们只需要选择尾部使得A的和为0,这时候我们知道当离散的sum曲线在某一点i处取得值为0时,这是一个尾部的选择方式。 以此类推,子序列A如果不一定是从序列头部开始的,而是以任意起点s为头部,那么只需要寻找终点e使得s

2018-04-30 19:01:11 167

原创 洛谷P1077题解

洛谷P1077题解题意中文题惯例了。 小明的花店新开张,为了吸引顾客,他想在花店的门口摆上一排花,共m盆。通过调查顾客的喜好,小明列出了顾客最喜欢的n种花,从1到n标号。为了在门口展出更多种花,规定第i种花不能超过ai盆,摆花时同一种花放在一起,且不同种类的花需按标号的从小到大的顺序依次摆列。 试编程计算,一共有多少种不同的摆花方案。笺释想通过这道题好好梳理一下dp方案数的本质。 在用dp求方

2018-04-30 18:51:33 489

原创 hdu2546题解

hdu2546题解题意中文题惯例不翻译 uestc本部食堂的饭卡有一种很诡异的设计,即在购买之前判断余额。如果购买一个商品之前,卡上的剩余金额大于或等于5元,就一定可以购买成功(即使购买后卡上余额为负),否则无法购买(即使金额足够)。所以大家都希望尽量使卡上的余额最少。 某天,食堂中有n种菜出售,每种菜可购买一次。已知每种菜的价格以及卡上的余额,问最少可使卡上的余额为多少。笺释这算是排序dp问题

2018-04-30 18:51:06 250

原创 HDU1421题解

HDU1421题解题意中文题惯例不翻译,直接贴。 搬寝室是很累的,xhd深有体会.时间追述2006年7月9号,那天xhd迫于无奈要从27号楼搬到3号楼,因为10号要封楼了.看着寝室里的n件物品,xhd开始发呆,因为n是一个小于2000的整数,实在是太多了,于是xhd决定随便搬2*k件过去就行了.但还是会很累,因为2*k也不小是一个不大于n的整数.幸运的是xhd根据多年的搬东西的经验发现每搬一次的疲

2018-04-30 18:50:47 158

原创 AtCoder Petrozavodsk Contest 001 B题解

AtCoder Petrozavodsk Contest 001 B题解题意两个数组a和b,可以做这样的操作 选择一个数i和j 向ai加2,向bj加1。 问有限次操作后能否使a与b完全相等。笺释显然如果一开始a的和就比b大,那么一定不能达到。 如果一开始a小于等于b,考虑这这样一种手段: 对于每一个i,我们知道最终一定要让ai==bi,那么我们在拿到i的时候就进行操作让ai等于bi。如果a

2018-04-30 18:50:30 228

原创 Atcoder Grand Contest 018 A - Getting Difference

Atcoder Grand Contest 018 A - Getting Difference题意一个盒子里有n个球,每个球i上写着Ai,每次拿出来两个球A,B,然后还回去这两个球和一个新的球,新的球上写的是abs(Ai-Bi),想知道在有限次操作内能不能拿到一个上面写着k的球。笺释就我个人而言实在是很喜欢每次agc的第一题这种看似没什么算法的题目,也可以说是简单吧,但是我觉得这些题目都能很好地反

2018-04-30 18:50:08 192

原创 洛谷P1417题解

洛谷P1417题解题意中文题偷个懒粘贴过来 由于你的帮助,火星只遭受了最小的损失。但gw懒得重建家园了,就造了一艘飞船飞向遥远的earth星。不过飞船飞到一半,gw发现了一个很严重的问题:肚子饿了~ gw还是会做饭的,于是拿出了储藏的食物准备填饱肚子。gw希望能在T时间内做出最美味的食物,但是这些食物美味程度的计算方式比较奇葩,于是绝望的gw只好求助于你了。 题目描述 一共有n件食材,每件食

2018-04-30 18:49:40 373

原创 AtCoder Grand Contest 018 C题解

AtCoder Grand Contest 018 C题解题意一共有X+Y+Z个人,每个人i拥有金币Ai枚,银币Bi枚,铜币Ci枚,向所有人要钱,但是只能向同一个人要一种钱币,且一定向X个人要金币,Y个人要银币,Z个人要铜币,问最多一共要到多少钱(金币+银币+铜币)。笺释这种问题之前也遇到过几次,不过这次还是没什么思路,打算好好总结一下。 对于这道题,有这样的特征:2个约束条件,一个是对于每一个人

2018-04-30 18:49:12 215

原创 AGC020_B题解

AGC020_B题解题意一开始有n个小朋友,k轮游戏之后剩下2个小朋友,游戏规则是这样的: 第i轮对于当前的小朋友数量X取模Ai,也就是X%Ai个小朋友离开,X/Ai*Ai个小朋友进入下一轮。 求n的最大值和最小值。笺释设remmin为开始第i轮的时候最少的人,remmax为开始第i轮时最多的人。 在开始第k+1轮的时候,remmin和remmax都只能为2 在开始第k轮的时候,因为下一轮的

2018-04-23 00:44:45 240

原创 Atcoder Grand Contest 019 B题解

Atcoder Grand Contest 019 B题解题意给定一个由小写英文字母组成的序列,可以选择i和j然后将AiAi+1…Aj反转,反转最多一次,问一共能得到多少不同的序列。笺释首先,什么都不做的时候是一个序列。 然后从头开始,第一个字母不可能与任何字母颠倒,此时无法以任何方式得到新序列。 对于第二个字母,显然,如果他和第一个字母不同,那么将这两个颠倒得到一个新序列,如果相同的话,仍然得

2018-04-23 00:44:24 142

原创 POJ2096题解(期望dp)

HDU4336题解题意小浣熊干脆面里装有英雄卡,有n种英雄卡,一包干脆面里最多有一张英雄卡,最少没有英雄卡,想知道在期望意义上买多少包干脆面可以把英雄卡集齐。笺释原理1期望dp,在考虑期望dp的时候,要注意它和概率dp的本质都是递推。这一点给出了用dp的思想解决统计学问题的理由,并且给出为什么我们不需要很高的统计学知识或者数论知识也能在acm中解决统计学和数论问题的理由:我们用到的只是穿上统计学外衣

2018-04-18 12:31:50 369 1

原创 POJ2151题解(统计数学)

POJ2151题解题意m个问题,t个队伍参加比赛,要求所有队伍解决至少一道问题,且至少有一支队伍解决n道问题的概率。笺释//这道题的笺释乱写的,又不想删掉,若有读者可跳过直接看你公式化推理部分。 首先明确这个几个点 设dp[i][j]为第i支队做出j道题的概率,这个概率并不等同于把P[i][j]按从大到小的顺序排序然后说i队做出j道题的概率是P[i][1]P[i][2]*P[i][3]…*P[i

2018-04-18 11:52:52 190

原创 HDU4336题解(概率dp|容斥原理)

HDU4336题解题意小浣熊干脆面里装有英雄卡,有n种英雄卡,一包干脆面里最多有一张英雄卡,最少没有英雄卡,想知道在期望意义上买多少包干脆面可以把英雄卡集齐。笺释原理1期望dp,在考虑期望dp的时候,要注意它和概率dp的本质都是递推。这一点给出了用dp的思想解决统计学问题的理由,并且给出为什么我们不需要很高的统计学知识或者数论知识也能在acm中解决统计学和数论问题的理由:我们用到的只是穿上统计学外衣

2018-04-18 11:52:20 914

原创 POJ3071题解(概率dp)

POJ3071题解题意给定正整数n,共有2^n支球队,按照二分顺序比赛,给定球队i对球队j的胜率,问哪只球队有最大几率获胜。笺释这道题还是很好的体现了动态概率思想。 从最朴素的想法来说,P[球队i获胜]=P[球队i赢第1局]P[球队i赢第2局]…*P[球队i赢第n局] 球队i赢第1局的概率根据数据可直接获得,来考虑球队i赢第j局的概率。 设dp[i][j]为在第i轮球队j获胜的概率。dp[i]

2018-04-17 00:01:24 364

原创 POJ3744题解(概率dp,矩阵快速幂)

POJ3744题解题意士兵从起点1出发,每次移动有p的概率走一步, 有1-p的概率走两步,已知有n个格子有地雷,问士兵不踩地雷的概率。笺释第一道真正意义上的概率dp题目,一开始打算令dp[i]意为更新到i点时踩雷的概率,dp[i]=p*dp[i-1]+(1-p)*dp[i-2],这样写看上去也是对的(第一眼看上去的角度上来说),但是其实并不符合题意,只能在很小的意义上保持正确性。关于错误原因,我是这

2018-04-16 00:58:34 267

原创 XDU1202(西电17年校赛F题)题解&关于spfa与dijstra+priority_queue的思考

题意链接 给出一个矩阵,从起点到终点,可以一步步走过去,也可以在有命运石大门的区域选择使用steins:gate传送,求最短路径笺释这道题来来回回写了十几个版本,在xdoj上提交了不下20次,真是辛苦评测机了。 一开始其实想偏了,考虑到可以传送可以走路,以为类似于守望者的逃离,将传送与走路分开处理再合并。但是实际实现过程中发现可以处理出来只传送的情况,可以处理出来只走路的情况,但是合并的话,一部

2018-04-11 19:42:06 209

原创 POJ1061题解

POJ1061题解题意两只青蛙在一维数轴从不同的起点以不同的速度出发,想知道能否在某一点相遇。笺释设青蛙A的出发点坐标是x,青蛙B的出发点坐标是y。青蛙A一次能跳m米,青蛙B一次能跳n米,两只青蛙跳一次所花费的时间相同。纬度线总长L米 青蛙A移动了x+mt,青蛙b移动了y+nt。 也就是要求一个t使得(x+mt) mod l=(y+nt) mod l 转化为求解同余方程(m-n)t=y-x m

2018-04-11 11:54:55 390 1

原创 XDU1201(西电17年校赛F题)题解

题意给定一个面积s,求面积s的矩形共有多少种,只要长或宽不同或者矩形网格划分方式不同则视为不同方案笺释一开始是用暴力枚举1-sqrt(s)中的所有因子,对于已枚举得到的因子c和对应因子s/c,将其枚举c和d的所有划分情况ans1和ans2,答案就是ans1*ans2。超时了。 然后想到如果c或者s/c是素数就不用枚举了,将其划分一定是1*c或者c*1两种情况,所以加入了miller-rabin判断

2018-04-11 11:43:38 371

原创 数论基本定理模板及理解(扩展欧几里得,费马小定理,Miller-Rabin,Pollard Rho,组合数取模)

唯一分解定理若Q为合数,则Q一定可以唯一分解为Q=P1^a1*P2^a2*P3^a3…的形式(P1 P2 P3…为质数)根据唯一分解定理由分解形式得Q的因数个数Q的因数个数x=(a1+1)(a2+1)(a3+1)… 疏解:Q的每一个因数q可以分解为其质因数集合P中取任意个元素的形式,也就是说,P1可以取任意(0…a1)个, P2可以取任意(0…a2)个,以乘法原理组合得到所有情...

2018-04-11 11:23:43 337

原创 XDUU1199题解(西电17年校赛D题)

XDU1199题解题意从n个皮卡丘里选出m个放到圆盘上旋转,问共有多少种选择方式,结果对p取模。笺释一开始觉得应该与组合数取模那些有关系,实际上并没有。 从n个里选出m就是n!/(n-m)! 但是注意要去掉旋转序相同的一部分,也就是除以m。 一开始以为去掉逆序的部分就可以了,那样的话就是除以2 得到公式n!/((n-m)!*m)%p 然后处理一下超精度问题即可,我们知道,如果是单纯的乘法的

2018-04-09 00:36:16 221

原创 POJ2488题解

poj2488题解题意骑士(类似于中国象棋里的马)从任意起点出发,遍历n*m的棋盘上的每一个格子,在任意终点结束,输出最小字典序遍历道路。笺释按照字典序遍历起点,然后进入dfs搜索。 按照下列1-8的顺序移动就是最小字典序int movm[9]={0,-2,-2,-1,-1,1,1,2,2};int movn[9]={0,-1,1,-2,2,-2,2,-1,1};也就是按照向左上,左下,右上,右

2018-04-09 00:35:40 695

原创 # XDU1198题解(西电17年校赛C题)

XDU1198题解题意给定圆的数目n,求n个圆最多把空间分成几个部分笺释可以想象: 2个圆分成4部分(中间包围3部分,外部一部分) 3个圆要想分最多部分,要和中间包围的三部分相交,这样在中间得到新的3部分,在外部得到新的1部分。 4个圆要想分成最多部分,要和中间包围的三部分相交,这样在中间得到新的3部分,同时要和上一部中添加的圆相交,在其内部得到新的2部分,同时在外部得到新的1部分。 以此类

2018-04-08 01:11:09 165

原创 # XDU1200题解(西电17年校赛E题)

XDU1200题解题意汉诺塔问题 本题将古老问题做了点改动,每一个圆盘有相同的两个,但是实际上这两个圆盘必须同时移动,所以只需要将最终步骤乘2即可。笺释自己推导了一下这个问题。 首先可知,要想把处于最下层的盘X移动到C柱,必须把其上的盘集合Q移动到B柱。 这是第一层划分:将X之上的盘集合Q移动到B柱,然后将盘X移动到C柱,然后将Q从B柱移动到C柱。 又可知,将Q移动到B柱和将Q移动到C柱实际

2018-04-08 01:10:12 349

原创 HDU4568题解

HDU4568题解题意给出一个矩阵,可以从任何一个边缘进入,从任何一个边缘离开,问拿走矩阵内所有财宝所需的最小路径,若不能拿走所有财宝,输出0。笺释这题本来应该是没什么难度的,要把所有藏宝点拿出来建图 for(int i=1;i<=k;i++) { bfs(x[i],y[i],i); for(int j=1;j<=n;j+

2018-04-07 15:23:39 237

原创 POJ2288题解

POJ2288题解题意求最大三角权值哈密顿回路,三角权值定义如下: * 每一个点的权值之和A * 对于每一条边,权值为连接的两个点的权值之积 * 对于相邻的三个点,若形成三角环,则产生权值为三个点的权值之积笺释这道题做的很难受,并不是难,但是就是没能自己A掉。 一开始觉得挺简单的,无非就是增加一个状态记录当前点与前一个点,实际上求这种新定义的三角权值也就是这个办法。 但是对于方案的理解上出

2018-04-06 21:36:16 290

原创 Atcoder Grand Contest 021 C 题解

Atcoder Grand Contest 021 C 题解题意给定N*M的方格,2*1的方块A的个数,1*2的方块B的个数,想知道能否把A和B全部放入方格中,方格可以留空。笺释这道题我也没A掉,写一下对别人题解的理解。 //最大空间利用的原则:先要把大的n*m的矩形划分成若干个规则2*2图形和剩余部分 //因为2*2的矩形是一种规则的 不需要额外处理的矩形,而我们的算法毕竟只能处理规则的,不需

2018-04-06 11:41:46 117

原创 HDU3481题解

HDU3681题解题意给定机器人初始位置与一个迷宫矩阵,迷宫中有五种格子”SFGDY”分别代表空,起点,充电点(将电池充满,使用一次后失效),陷阱,开关。机器人要从起点k开始,开始时电池处于满电状态。关掉所有开关,求完成此操作所需要的(最小的(电池最大电量))。疏解这道题首先想到的思路是利用bfs进行状压dp,至于为什么想到了用bfs,是因为bfs 天生满足dp的单调递推要求,在前面放入队列中的状态

2018-04-06 10:59:59 383

原创 POJ1185题解

POJ1185题解题意在给定矩阵内摆放炮兵,已摆放的炮兵上下左右两格内不能摆放新的炮兵,求最大可摆放的炮兵数目。笺释思路无非就是记录之前两格的状态做转移,但是这道题如果用朴素的方法(DFS)做状态转移会超时,因此考虑预处理出来一行能够更新到的状态,然后直接利用这个状态与前两行的合法状态求交集。 自己写的超时了,看了一下别人的题解,有这么几个思想十分优雅 * 将问题的要求分开,先处理一行中不冲突的

2018-04-04 08:53:54 283

原创 POJ3254题解

POJ3254题解题意在给定矩阵内选取适当的格子种庄稼,有些格子只能空着,有些格子可以选择空着或种庄稼,一个能种庄稼的格子如果上面的格子与左面的格子都没种庄稼的话才可以种庄稼。笺释这道题和最大正方形和小A与Uim大逃离这种问题的区别在于 * 无论是最大正方形还是大逃离,实际上都保证了每一点(x,y)作为一个状态只由左边,上边或者左上的状态转移而来,因此由上到下读一遍dp就能保证状态转移。 * 而

2018-04-04 08:43:15 130

原创 Poj3311

Poj3311题解题目链接题意一个人从固定起点(0)出发,经过其余各点(可重复经过一个点),最终回到起点,求最短路程。笺释首先,这道题为什么不是一个纯粹图论问题?DP的立足点是状态,由一个状态单调转移到另一个状态,而图论的立足点是图,是点与边。我们无论是从点切入还是边切入,实际上都无法保证从起点出发最终回到起点。 其次,这道题和vijos1456很像,区别在于以下...

2018-04-04 01:16:16 615

原创 vijos1456题解

vijos1456位运算的三个基本操作判断一个数字x二进制下第i位是不是等于1。 方法:if ( ( ( 1 << ( i - 1 ) ) & x ) > 0) 将一个数字x二进制下第i位更改成1。 方法:x = x | ( 1<<(i-1) ) 把一个数字二进制下最靠右的第一个1去掉。 方法:x=x&(x-1) 题目描述n个人在做传递物品的游戏,编号为1-n。 游戏规则是这样

2018-04-03 23:34:45 416

原创 Atcoder Grand Contest 022 C

Atcoder Grand Contest 022 CC题题意希望把给定的一个序列转化为另一个序列,每次操作可以选择对任意一个元素求余数或不求,每次操作的花费为2^k求,求转化的最小花费。 笺释关键在于转变思路,我们并不是要把一个序列一步步地转化为另一个序列,这样的话必然设计到记录每一个数字的数值作为一个状态,而记录这样的状态是不可能做到的。 我们要做的是枚举余数,因为数字最大是50,所以余数

2018-04-03 01:42:54 175

原创 Atcoder Grand Contest 022 B 题解

Atcoder Grand Contest 022 BB题题意需要输出一个序列满足以下三个条件 * 序列中仅包含不相同的小于30000的数字 * 序列中一定存在两个互质元素(最大公因数为1) * 序列中任何一个数A,与其余数的和B(sum(除去A之外的所有元素))一定不互质(最大公因数大于1) 笺释当n为3时直接输出题目所给的2,5,63即可。 当n大于3时需要这样构造数列 for(in

2018-04-03 01:12:57 169

空空如也

空空如也

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

TA关注的人

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