自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 生成函数 应用

引言 生成函数有普通型生成函数和指数型生成函数两种,其中普通型用的比较多。形式上说,普通型生成函数用于解决多重集的组合问题,而指数型母函数用于解决多重集的排列问题。因水平有限,此博客涉及的均是生成函数的初级应用,用于解决相关的算法竞赛题目。斐波那契函数的通项公式考虑一个经典问题: 求斐波那契函数的通项。 此问题的结论了解斐波那契函数的人都知道,那就是: F(n)=15√∗[(1+5√2)

2017-07-24 13:52:26 1510

原创 牛顿迭代法 简单入门

引言牛顿迭代法是在计算机编程领域广泛用来求解方程的算法。此算法类似于二分枚举(仅仅感觉上很类似= =) 我们每次枚举一个值X0X_0,代入方程看是否为根,不是的话则将X0X_0的值变为: X0=X0−F(X0)/F′(X0)X_0 = X_0 - F(X_0)/F'(X_0) (其中F′(x)F'(x) 为 F(x)F(x) 的倒数)其证明过程借用了高数中的基本知识泰勒级数,此处不再赘述。看起来

2017-07-20 18:52:37 16887 3

原创 HDU 5221 树链剖分

题目链接题意很简单。对于前两个操作,一个是树链剖分的经典路径更新,另外一个是线段的单点更新。难点就在于第三个操作怎么来处理。关于子树的更新,很显然跟dfs序有关,如果观察第二个更新重链的dfs,易发现,其实标号的过程也是一个dfs序的过程,只不过优先走的重儿子的路径。而关于标号跟子树的关系,可以看下图:(图片来源于网络 侵删)易看出 以u为根节点的子树的标号一定连续,且为: tid[u]−−>tid

2017-07-20 09:15:07 425

原创 51nod 1799 思维 二分 数论 分块打表

题目链接很好的题目,很早就关注了此题,但一直没看懂题解,今天在纸上模拟了很久终于了有了新的感悟对于这种 求期望∗n!mod1e9+7求期望*n! \mod 1e9+7 的问法实际上就是求方案数。虽然数列完全打乱了,但其实对于二分结果的影响并没有直观上的那么大。 形如下列数列: 1 2 3 4 5 6 7 8 9 10但我们查找7的位置时: 第一次mid = 5 而因为 7 > 5 ,故右移 ⇒

2017-07-17 12:16:06 1024

原创 51 Nod 1441 质因子筛

题目链接题目来源: Codeforces 题意很好理解,简单归纳总结之后能发现此题本质就是求1~n每个数的质因子个数的前缀和。因为时限6000ms,我先将1~5e6的素数 线性筛出来,然后1~5e6预处理遍历,然后求前缀和,3000ms+过掉此题弱者的预处理:void init(){ vis[0] = vis[1] = 1; tot = 0; for(int i=2 ;i<

2017-07-13 14:35:06 295

原创 51Nod 1391 DP + Hash

这里写链接内容思路:首先可以将题目进行转化:对于每一个位置i,求出其左区间0比1多的最远端点,和其右区间1比0的最远端点。 而如何刻画0和1的数量关系呢? 这是一个经典的转化思想,将0用-1替代,维护前缀和,若区间的前缀和>0,则说明该区间1比0多,<0的话0比1多考虑DP: 首先考虑左区间的情况,若从1–>i的前缀和<0,则:DP[i]=iDP[i] = i (即最远端点就是起点)若前缀和S

2017-07-13 13:50:25 292

原创 2017.7.5训练赛 反思加总结

蒟蒻面壁反思中QwQ总结:题目是不难的 但最近状态迷之感人 有简单算法的题第一想法都是暴力(如本场1002) 可暴力的题一直在想合适的算法优化(如本场1003)虽然最近针对性地练了很多题 但做的都是提前已经知道算法的专题 跟比赛应该有的状态和做题思路都有很大差别。另外比赛策略确实有问题,总是喜欢跟榜做题,如果一道题很多人过掉而自己还没过就会感到慌张,甚至不会去思考其他本来已经有清晰方向的题。虽

2017-07-05 21:43:45 623 1

原创 HDU 4280 网络流(ISAP || Dinic)

题目链接网络流裸题,不过第一发写的 dinic + 当前弧优化果断超时,后来加了扩栈指令9000多ms险过,本题让我真正意识到了只掌握Dinic写法的局限性,所以学习了很久ISAP的写法,通过研究鸟神当年的博客,终于算是基本掌握qwq鸟神的ISAP模板写完试了一下 3000ms过掉,贴上我自己的模板// ISAP + 当前弧优化 + GAP优化#include<cstdio>#include<c

2017-07-01 11:36:02 583

原创 HDU 2588 欧拉函数

题目链接题意很简单,思路却有点难想。从已知条件一步步来分析: 因 GCD(X,N)>=MGCD(X,N) >= M 而 1<=X<=N 1 <= X <= N 可得出结论1,也是该题重要的突破口: GCD(X,N)一定是N的约数这个条件可以给我们一定启发,因为 N 的约数一定是很有限的,我们可不可以枚举N的约数 PP(随便给的名字= =),且 P>=MP >= M呢?假设我们已经得到了

2017-06-26 19:42:36 659 4

原创 HDU 1695 数论 容斥 欧拉函数 || 莫比乌斯反演

题目链接思路: 想了两个小时才想出容斥的思路….(真是太弱了AC之后搜题解发现是一个莫比乌斯的入门题,准备最近抽时间学习一下AC之后再来补上莫比乌斯的思路(占坑(更新见下容斥: 此题可以等价为: 从【1,n】中选出一个 X 从【1,m】中选出一个 Y 问有多少对不重复的 X,Y 满足 GCD(X,Y) == K?首先 我们可以从上述问题中提取出以下条件: 1 .1<=X<=n 1 <=

2017-06-26 17:04:05 763

原创 HDU 3501 数论 欧拉函数的应用

题目链接题意:已知一个数n,求小于n且与其gcd不为1的所有数的和思路: 首先第一感觉便是正难则反,可以先求小于n且与n互质的数的和。但是已知的欧拉函数是求个数的,但如何来求和呢?这里涉及了一个公式: Sum(n)=ϕ(n)∗n/2  Sum(n) = \phi(n)*n / 2 \ 为什么有这个公式呢 其实理解起来很简单:我们求两个数的GCD是常用的是辗转相除法,但同时还有一个古老的

2017-06-26 14:36:34 459

原创 Codeforces Round #418 (Div. 2) C 预处理/思维题

题目链接题意很简单,我一开始的思路是填两个相同字母之间的缝隙: 预处理每个字母出现的位置,然后在线处理询问,从左到右枚举起点,用可以填补的字母填补缝隙,维护最长长度。加上各种优化以后复杂度O(NQ),但可能卡了常数,虽然初测花样AC,但最终还是倒在了某一组极限数据上。 (当晚终测前czy623和S10问我解题思路时我还非常自信地认为是能够卡过的,因为BNU的Q神也是这个复杂度,结果…… 果然还是

2017-06-09 14:55:52 337

原创 DFS序 及 手动扩栈指令

概念 DFS序是转树型结构为线型结构的经典方法。具体实现网上优秀博客很多,就不赘述了…. 因为涉及DFS,同时此类题普遍节点的规模都在1e5以上,而HDOJ好像是基于Windows的服务器,很容易爆栈,故我们需要添加一个手动扩栈指令,并用C++提交。 #pragma comment(linker, “/STACK:1024000000,1024000000”)经典题HDOJ 3887题

2017-06-05 00:40:03 782

原创 乘法逆元 小结

概念: 使得 a∗x≡1(mod m)a*x \equiv 1(mod\ m) 成立的x称为a对m的逆元方法总结:一.拓展欧几里德算法适用条件:a与m互质 即 gcd(a,m) = 1 代码:void exgcd(int a,int b,int &amp;x,int &amp;y){ if(b==0){ x=1,y=0; return; } exgcd

2017-06-02 22:08:12 632

原创 欧几里德 和 拓展欧几里德算法

一.欧几里德欧几里德是用来求最大公约数的算法 其算法的中心思想为: 设a,b的最大公约数为c,则c一定也是a%b的最大公约数证明方法很多,下面列出最简单的一个: 令 :a = xc; b = yc ; a = bk + r(1) 证明 c 为 r 的约数r=a−b∗k=xc−ykc=c(x−ky)r = a - b*k = xc - ykc = c(x -

2017-05-22 17:53:00 657

原创 2017 湘潭大学邀请赛/江苏省省赛 H题 Highway

题目链接ACM职业生涯难忘的一道题,现场赛三个人一起卡了三个小时的题。当时此题现场赛过的人很多,我队三人根据时限判断估计不是一个能取巧推公式的题,当时S10和YaoJinhui主要在纸上模拟找规律,而我其实一开始就很确信最终答案的每条路径都跟叶子节点有关,但对每一个度为1的节点进行搜索极端条件下一定超时,所以一直想优化搜索的策略。后来离结束还有1h时,由我上机对每个叶子节点暴力搜索一发,但因为只贪心

2017-05-21 22:42:24 1002

原创 Codeforces Beta Round #51 D 数位DP

题目链接思路: 数位DP,维护三个量: pos:当前处理到的位数 sta :状态压缩,保存该数数位上的数出现情况,只需要保存 2 ~ 9 mo : 之前处理过的数位上的数的最小公倍数。(因2…9的最小公倍数为2520,故可取模节省内存)w[]:预处理每一位为1时对2520取模的余数。 然后记忆化搜索即可。#include<cstdio>#include<cstdlib>#includ

2017-05-11 17:13:13 311

原创 Codeforces Round #401 (Div. 2) E 离散化 + 树状数组/线段树

题目链接思路: 感觉像是背包问题的变形….. 很直接的DP策略: 首先先对物体进行排序,外半径大的先处理。(考虑无后效性,因为对于外半径最大的物品是不能堆在其他物品上面的。) 设dp[i]是处理到第i个物体时可以达到的最高高度。 则 dp[i] = max{dp[j]} + h[i] 其中 1 &lt;= j &lt; i &amp;&amp; b[i] &gt; a[j]。故需要动态维护区间最值,可用线段树或树状

2017-05-11 16:44:34 577

原创 Codeforces Round #403 (Div. 2) B 二分 or 三分

题目链接思路: 又在二分题上翻车了……读完题一眼看出是一个二分题,但一开始选择了错误的对位置进行二分,后来发现错误后重新写了一个对时间进行二分,但忘了改二分的范围,然后一直过不了样例。 这算是一个很大的教训,做简单题不能急躁,Debug也一定要干净彻底。此题可以可看成练习二分和三分,特别是搞清两种方法的差别和联系的一道很好的练习题。对于本题,很明显,最佳的位置只有一个,在最佳位置左边或者右边都会

2017-05-09 21:02:44 317

原创 Codeforces Round #411 (Div. 2) D 规律题

题目链接通过观察,易发现 ab –> bba 是将a,b换一个位置,然后在中间再加一个b。那么我们通过模拟和总结,可以得出以下两个结论:(1). 形如 abbb,因为变换的本质是交换顺序,那么如果不存在ab,则说明a在b的右边,故需要将a和其右边的所有b交换顺序,即ans = 3。(2).形如 abbb,因为每次变换都会在a,b交换顺序后中间插入一个b,故当a移动到最右边时,b的数量会变成之前的两倍

2017-05-05 01:01:11 394

原创 HDU 3480 斜率优化DP

题目链接终于完全靠自己过掉了一道基础的斜率优化DPDP的思路很直接,一开始看数据范围,还以为不用优化可能卡过去,然后就直接写了三重循环DP,果然超时没商量= = for(int i=1 ;i<=n ;i++) scanf("%d",&a[i]); sort(a+1,a+n+1); for(int i=1 ;i<=n ;i++){ for(int

2017-05-03 21:20:11 475

原创 Codeforces Round #406 (Div. 2) C 博弈

题目链接此题类似于当初上ACM公选课博弈一节的某例题,考察了对于必胜点,必败点等基础知识的掌握。对于此题: 必败点(P点) :前一个选手(Previous player)将取胜的位置称为必败点。 必胜点(N点) :下一个选手(Next player)将取胜的位置称为必胜点。对于必败点和必胜点,分别有以下性质: 必败点:无论怎么操作,从必败点下一步都只能进入必胜点。 必胜点:至

2017-05-02 23:11:16 351

原创 Codeforces Round #407 (Div. 2) C 数学 + DP

题目链接思路: 首先我们可以将每相邻两项的差的绝对值算出来,然后按顺序形成一个新的数列: 如样例 1 4 2 3 1 --> 3 2 1 2记新数组为 a 观察公式,选取某一起点元素u,终点元素v,则:f(l,r) = a[u] - a[u+1] + a[u+2] - a[u+3] ... a[v]即正负号依此出现,呈交错性。因为起点u和终点v可以任意选,则原问题转化为: 给你两个

2017-05-01 23:44:09 332

原创 HDU 5324 分治

很好的题,看完题意原本以为十几分钟就能AC,结果WA了一整天,修改重交十几次终于AC,通过此题,加深了对分治算法的理解和码力。题意很简单,一个三维偏序的变形。 但差别在于x坐标是已经排列好且去重的数据给出顺序。 要你求满足Y非严递减和Z非严递增的最长三维偏序列。易掉的坑:(其实是我掉的坑qwq) (1).直接仿造HDU 5618的做法是不对的,因为此题要求最长序列任意两两之间均满足约束关系。

2017-04-26 21:44:31 548

原创 HDU 5618 分治

题目链接思路: 题意很简单,经典的三维偏序的问题。下面以样例作为例子。因为同时存在三个约束条件,我们可以借鉴控制变量法的思想,通过减少约束条件来快速求解。首先我们可以对所有点按X坐标从小到大进行排序。因为X坐标已经有序,所以接下来只需要考虑Y,Z坐标的约束条件。如果此时我们对于每一个点依此向前遍历,复杂度会非常大。 所以我们可以考虑使用分治,二分区间,我们每次只需要考虑:对于右区间中的每一个点,

2017-04-25 21:33:53 740

原创 自适应Simpson积分

自适应Simpson积分目录简介例题 HDU 1724BZOJ 1502SPOJ CIRUT简介: Simpson积分是解决一重积分问题的强大公式由公式可以看出,我们可以通过积分上下界来近似逼近积分的值。 但具体如何实现呢?我们可以二分区间然后递归的方法来求积分。 由积分的可叠加性:∫baf(x)dx=∫caf(x)dx+∫bcf(x)dx\int^b_af(x)dx= \in

2017-04-20 23:47:55 873

原创 HDOJ1815/POJ2749:Building roads (2-SAT)

HDOJ 1815 2-SAT题目链接HDOJ1815:Building roads题目大意: 有N个农场,和S1,S2两个中转站,现在需要将每个农场和两个中转站之一相连,有两类要求: 1.农场1和农场2必须连在同一个中转站 2.农场1和农场2必须连在不同的中转站 要求:每个农场之间距离的最大值的最小值。思路:这种要求极限情况的最优解,很明显可以考虑二分。设当前情况下农场之间距离的最大值是L

2017-03-29 23:23:47 546

原创 HDU1565/1569 网络流 || 状态压缩DP

题目链接: HUD 1565:http://acm.hdu.edu.cn/showproblem.php?pid=1565HDU 1569:http://acm.hdu.edu.cn/showproblem.php?pid=1569最近在PAT上刷天梯赛的原题,切了几十道水题后做OJ上的题目居然连多组数据输入都差点忘了写= =关注这道题很久了,一直不知道怎么跟网

2017-03-17 20:38:59 764

原创 hdu 3081 二分 + 并查集 + 网络流

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3081题意:有2n个小孩(n个男孩,n个女孩)在玩一个游戏。每一轮游戏女孩会挑选她喜欢的男生作为伴侣,并且规定她的女性朋友喜欢的男孩也是她喜欢并可以挑选的。而且她们遵循朋友的朋友也是朋友的原则。问最多能进行几轮游戏。思路:首先要得到每个女孩可以挑选的男孩范围,这个可以借助并查

2017-03-02 09:50:25 413

原创 HDU 3416 最短路 + 网络流

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3416题意:在城市A的男孩想去跟城市B的女孩约合,不过他去城市B必须走A->B最短路,并且走过的路不可以再走,问他最多能看这个女孩多少次。思路:首先找出这条最短路径:先从A->B做一次spfa,然后再反向建图从 B->A做一次spfa。然后遍历原图每一条边e(u,v),若满足

2017-03-01 21:50:17 471

原创 POJ 2686 状态压缩DP

题目链接:http://poj.org/problem?id=2686题目大意:有一个旅行家计划旅行,他所在城市有m个城市,在城市之间有p条路径。从某个城市沿着某条道路到相邻的城市需要坐马车,而乘坐马车需要车票。一张车票只能通过一条路,每张车票都记有马的数量。从一个城市到另一个城市所需要的时间是城市之间道路的长度除以马的数量的结果。这位旅行家一共有n张车票,第i张车票上的马的数量是ti

2017-02-28 21:51:56 445

原创 hiho一下 第139周 《买零食》 多维01背包

题目链接:http://hihocoder.com/contest/hiho139/problem/1描述小Ho很喜欢在课间去小卖部买零食。然而不幸的是,这个学期他又有在一教的课,而一教的小卖部姐姐以冷若冰霜著称。第一次去一教小卖部买零食的时候,小Ho由于不懂事买了好一大堆东西,被小卖部姐姐给了一个“冷若冰霜”的眼神,食欲都下降了很多。从那以后,小Ho就学乖了,去小

2017-02-26 18:34:14 628

原创 POJ 1752 差分约束 + 输出路径

题目链接: http://poj.org/problem?id=1752收获:1.等式如 A - B = C。可以转化为 A - B >= C 和 A - B   2. 输出路径:可以通过判断 dis[i] - dis[i-1] == 1?  如成立则说明 i 是那个发生变化的点,即需要输出的节点。 3.最长路 和 最短路 的区别:这道题是spj ,

2017-02-12 21:29:50 484 1

原创 HDU 1317/POJ 1932 Floyd + Spfa 最长路

HDU: http://acm.hdu.edu.cn/showproblem.php?pid=1317PKU: http://poj.org/problem?id=1932题意:一个有向图,一个人要从点1到点n,每条边的权值为-100~100。但这个人经过这条边时,他的生命值就会加上这条边的权值,初始生命值为100。若无论走哪条路都不能到达点n或者经过某一边的生命值小于等于0时,则

2017-02-12 17:22:50 701

原创 POJ 1201 差分约束(链式前向星

IntervalsTime Limit: 2000MS Memory Limit: 65536KTotal Submissions: 26192 Accepted: 10015DescriptionYou are given n closed, integer intervals [ai, bi] and n intege

2017-02-11 20:37:06 424

原创 POJ 3114 Tarjan + 最短路(三种姿势均能过)

Countries in WarTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 3808 Accepted: 1105DescriptionIn the year 2050, after different attempts of the UN to

2017-02-06 22:11:26 673

原创 寒假训练赛(五) 自我总结

时间:2017年2月3号总结:题目偏简单。不过可能是最近囫囵吞枣般地学了太多算法,自己做题时的脑洞越来越少......有时明明很简单的题却总想往学过的算法上面靠....浪费了很多时间,虽然能AC,但效率低了很多。改进:补完以前剩下的hdoj11页的水题,另外做题时学会从多个角度去思考以找到解题的思路。题目:1001:Problem A U

2017-02-03 17:38:36 572

原创 HDU 3639 Tarjan + 缩点 + 反建图 + 搜索

Hawk-and-ChickenTime Limit: 6000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 2911    Accepted Submission(s): 899Problem DescriptionKids in ki

2017-02-02 21:56:15 611

原创 HDU 1698 线段树(区间更新

Just a HookTime Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 29760    Accepted Submission(s): 14691Problem DescriptionIn the game

2017-01-31 20:13:23 610

原创 poj 3468 线段树(区间更新

A Simple Problem with IntegersTime Limit: 5000MS Memory Limit: 131072KTotal Submissions: 102779 Accepted: 32092Case Time Limit: 2000MSDescriptionYou have N

2017-01-31 16:35:23 394

空空如也

空空如也

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

TA关注的人

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