- 博客(78)
- 收藏
- 关注
原创 不足之处
自我反省一些基础知识由于种种原因,或因少用,或因打法不规范,只是同一类问题无法快速解决,也就是不能完全理解一类算法。调试时修改范围大小,在上交时没有改回,丢掉大量分数。开范围的时候总是刚刚好就够了,偶尔会出现一点点的溢出,然后就runtime error。对于复杂度分析不够仔细,有些优化后的时间难以估计,就放弃了可能能拿高分的做法。改进措施争取早日补全所有学过算法的标准,在遇到困难时不要
2016-09-12 22:29:40 641
原创 新的开始
第一篇博客 第一次玩博客这种东西,还是希望大家多多关照,写的不好请多提意见。我是一名Pascal选手,所以贴的代码可能又臭又长,仅供参考,
2016-08-18 15:16:58 526 2
原创 【NOIP2017提高组】仔细的检查
DescriptionSolution把编号抛开来看就是判断两棵树是否同构,之后再随便搞搞把编号对应上去。 判断树的同构用树哈希就好了,把每个节点的信息处理成哈希值,只要两棵树是同构的,以两棵树的重心为根的树只要保证同样形态的儿子节点是按顺序来枚举的,求哈希的时候就可以随便乱搞。判断了树同构之后在两棵树上同时BFS就能够对应出一个P数组。Code#include<iostream>#includ
2017-11-06 22:11:11 899
原创 【NOIP2017提高组】好路线
DescriptionSolution很容易的DP。 先把式子化简可以发现变成了(a12+a22+......+ak2)∗k−(∑ai)2({a_1}^2+{a_2}^2+......+{a_k}^2)*k-(\sum{a_i})^2,后面的部分可以作为DP的其中一维状态,设成后面的值确定时,前一部分的值最小的情况。Code#include<algorithm>#include<math.h>
2017-11-06 14:41:22 729
原创 【NOIP2017提高组】轰炸
Description战狂也在玩《魔方王国》。他只会征兵而不会建城市,因此他决定对小奇的城市进行轰炸。 小奇有n 座城市,城市之间建立了m 条有向的地下通道。战狂会发起若干轮轰炸,每轮可以轰炸任意多个城市。 每座城市里都有战狂部署的间谍,在城市遭遇轰炸时,它们会通过地下通道撤离至其它城市。非常不幸的是,在地道里无法得知其它城市是否被轰炸,如果存在两个不同的城市i,j,它们在同一轮被轰炸,并且可以
2017-11-06 14:30:17 502
原创 【ZJOI2012】波浪【NOIP2017】赤壁情
DescriptionData ConstraintSolution先来一波套路:①从小到大插入能够去掉绝对值的影响②dp只需要处理相对位置就可以记录答案。 设fi,j,k,lf_{i,j,k,l}表示当前做到i,段数(连续有数的被称作一段)为j,此时对答案贡献为k,左右两个边界有多少个被填上,满足这样的状态有多少种方案。 大致分为以下几种情况: ①当前插入的值自成一段没有贴边界,贡献为-2*
2017-09-02 21:35:16 709
原创 【NOIP2017模拟】密州盛宴
DescriptionSolution首先考虑当前的情况是否合法?先明白几个前提:能够被东坡吃到的菜要等于n,可以先判断是否有解。每一刻双方都应该在吃东西,这样当我们倒序操作时,把0视作-1,1视作+1,在求后缀和的过程中,若是小于了-1,则说明东坡有不能吃到的菜,该方案不合法。如何调整方案能够理论上最优有解?即当0越靠前时,能够达到理论最优。同时发现,每当有一个0被提到了前面时,后缀和都会+1,现
2017-09-02 20:58:06 661
原创 【NOIP2017模拟】春思
DescriptionData ConstraintSolution首先可以先把A分解质因数,依照正常的套路一般都是在质因数上做文章。我们先想一想求某一个数的因数个数的方法,大概就是各质数组合而得,这题的想法也类似,想办法把个个质数组合在一起。可以发现,如果把不同的质数分开计算就不会出现重复的情况,同时因为题目求的是因数的和,那我们就可以把某一个质数的答案直接加起来,因为计算满足分配率。当前某一个质
2017-09-02 20:08:29 466
原创 【GDOI2018模拟7.9】相逢是问候
DescriptionSolution首先需要了解欧拉定理的一个拓展:ax≡axmodϕ(P)+ϕ(P) (modP)a^x≡a^{x\,mod\,\phi(P)+\phi(P)}\ (mod\;P)(注:该公式只有在x≥ϕ(P)x≥\phi(P)时成立,证明戳这里) 有了这个定理我们就可以很好地解决这道题,首先可以发现,操作几次之后,指数会变得非常大,而套用公式可以降低指数。同时我们可以发现,每
2017-07-11 20:46:11 484
原创 【GDOI2017 day1】微信
DescriptionSolution这道题目很容易就可以看出来需要求某几个trie上的最长公共子串,如果我们把trie建出来之后可以发现,目前需要克服的困难是多个串一起求lcp。 对于这个问题,我们可以把所有trie都合并在一起,对于每一个节点记录一下分别是哪些天出现过的,之后在这个trie上建一个后缀自动机。我们如何利用这个建出的自动机呢?可以发现,对于每一个节点我们都有一个状态标记,因为遍历
2017-05-25 16:16:18 541
原创 GDOI2017狗带记
高中的第一次GDOI以一种非常神奇的姿势狗带掉了,惨惨地挂着个Cu收场,怎么说,虽然很大部分的失误叫做不小心,但是仔细看看还是自己的实力不够,不可以以一句粗心就盖过。Day0:刚刚到东莞感觉这里的郊区也很发达,感觉可以四处走走。领完狗牌吃完饭后就开始自由活动,发现这个酒店还是比较不错的,在后面可以找到一些体育器械娱乐,还有一个露天泳池,还是不错的。用手机搜了一下发现四处都是住宅区和学校,所
2017-05-04 16:22:03 510
原创 【GDOI2017模拟】树上路径
Description给定一颗n个结点的无根树,树上的每个点有一个非负整数点权,定义一条路径的价值为路径上的点权和-路径的点权最大值。 给定参数p,我们想知道,有多少不同的树上简单路径,满足它的价值恰好是p的倍数。 注意:单点算作一个路径;u ≠ v时,(u,v)和(v,u)只算一次。Solution首先套上树分治模板,再想想怎么做…… 可以发现,若是想满足值为p的倍数,那就意味着需要该值mo
2017-04-23 10:23:02 768
原创 【GDOI2017模拟】树的难题
DescriptionSolution比较明显的树分治,把树分治之后直接对其子树进行处理,因为这道题目并不需要去掉子树的重复贡献,比起其他的一些题就要更好处理了。 对于一个以重心为根的子树,关键在于如何把每一棵子树都合并起来,可以发现要分成两种情况来计算贡献:当前根到子树的颜色与要合并子树的颜色相同或不同,因为相同就要减去重复的边的贡献,为了方便处理,我们要把子树的颜色排序,然后用树状数组维护。C
2017-04-22 21:29:53 547
原创 【GDSOI2017模拟】Travel Plan
DescriptionSolution很容易看得出是DP,但是在转移的方面有点意思。 如果我们把这个树按dfs序转化成数列之后可以发现,问题变成了:现在有一段连续的dfs序的节点不能够被选则,问除去这一段的其他节点最大贡献是什么? 可以发现,若是转化成数列,就是很简单的背包,但是要如何解决把所有节点的贡献合并起来呢?可以发现,如果我们弄一个DP的前缀值和后缀值,每次询问就很好解决了。但是还有一个
2017-04-22 21:15:01 508
原创 【GDSOI2017模拟】树
Description有n个点,它们从1到n进行标号,第i个点的限制为度数不能超过A[i]. 现在对于每个s (1 <= s <= n),问从这n个点中选出一些点组成大小为s的有标号无根树的方案数。Solution一个名叫prufer数列的东西,这是由标过号的无根树转化而来的数列,大致原理是:移去所有叶子节点(度为1的顶点)中标号最小的顶点和相连的边,并把与它相邻的点的编号加入prufer序列中,
2017-04-18 22:32:15 500
原创 【GDSOI2017模拟】奶酪
DescriptionCJY很喜欢吃奶酪,于是YJC弄到了一些奶酪,现在YJC决定和CJY分享奶酪。 YJC弄到了n-1块奶酪,于是他把奶酪挂在了一棵n个结点的树上,每根树枝上挂一块奶酪,每块奶酪都有重量。 YJC和CJY决定这样分奶酪:首先砍掉一根树枝,把树分成两部分,每人取一部分,然后各自在自己取的那部分树上选择一条路径并取走路径上的奶酪,然后把剩下的奶酪拿去喂老鼠。 两人都想让自己取走总
2017-04-18 22:17:18 469
原创 【NOI2017】机器人游戏
Description小A和小B在一个R行S列的棋盘上玩游戏,棋盘上的每一个棋格都有一个方向标记(上、下、左或右)。游戏按如下方式进行: 小A先将K个棋格涂上黑色(初始为白色),并且他不能涂黑最后一列的棋格;随后,小B在第一列的任意一个棋格上放一个小机器人;此时,小机器人将会不停地沿着他所在的棋格所指示的方向走到一个相邻的棋格,直到他到达最后一列的棋格,游戏结束。 游戏胜负规则如下: ●如果小
2017-04-07 11:55:32 833
原创 【NOI2017】无限棋盘
Description无聊的小A在一个无限大的棋盘上玩游戏,这个棋盘由一个M*N的模板不停重复生成。例如,当模板为: honi hsin 时,我们会生成如下棋盘: …honihonihonihoni… …hsinhsinhsinhsin… …honihonihonihoni… …hsinhsinhsinhsin… 其中,该棋盘在任意一个方向都可以无限延伸。 现在小A在棋盘上随机挑选
2017-04-07 11:41:42 588
原创 【NOI2017】数字格
Description菁菁堂有一块数字格,那是王解体最喜欢去的地方。 传说中,这条气势磅礴的数字格,有N行N列,每一个格子里均有一个数。 敢于挑战自己的王解体决定来挑战这道通过率为百分之九十九的题目。 格子的第一行及第一列均是给定的: F[k,1]=lk F[1,k]=tk 对于其他格子,满足递推式: F[i,j]=a*F[i,j-1]+b*F[i-1,j]+c 不出所料,当王解体能
2017-04-07 11:23:36 578
原创 【NOI2017】轮回
Description掌管着世界的暗流的是一个叫做Samjia的人。 他看到所有人的生死,他看见所有人一世又一世的轮回,而他却从未把握过自己的命。 在无法估计的命中,他看见那些轮回,他很好奇,这一切的一切,都是如何开始如何结束,他想,就算是他也会堕入这样的轮回中的吧。 于是他开始数轮回,他看到的是一个有n个点m条边的无向图(边是带标号的),一个轮回是一个由四条边组成的环,环中不能有重复的边,除
2017-03-30 22:30:43 1613
原创 【TJOI2014】匹配(match)
DescriptionSolution这道题目是比较裸的完备匹配的最大权值和,用KM算法(戳这里)轻松解决。对于求交集,明显可以通过删除完备匹配中的一条边,然后再跑一次KM,若是答案减小了,就说明只是一条必须使用的边。Code#include<iostream>#include<stdio.h>#include<string.h>#include<algorithm>#include<mat
2017-03-29 22:09:18 477
原创 【NOI2014】挖宝藏(treasure)
DescriptionSolution这道题目是WinterCamp 2008 游览计划的加强版,原题是只有一层,但是主要解题思路
2017-03-23 15:21:23 630
原创 【NOI2014】数学题(math)
DescriptionSolution很明显,如果两个向量是反向的,那么无论怎样一定可以找到λ1,λ2λ_1,λ_2满足相加为0,剩下的部分要怎样解决呢?这里就要用到类欧几里得算法,就是一种迭代过程很像欧几里得算法的东东。 首先有第一个结论:若向量a、ba、b的夹角>π2>{π\over 2}时,答案就是min(|a|,|b|)min(|a|,|b|)。 Proof. 设p=|a|,q=|b|
2017-03-21 22:41:23 647
原创 学习小记——后缀数组
定义在字符串处理当中,后缀树和后缀数组都是非常有力的工具,其中后缀树大家了解得比较多,关于后缀数组则很少见于国内的资料。其实后缀数组是后缀树的一个非常精巧的替代品,它比后缀树容易编程实现,能够实现后缀树的很多功能而时间复杂度也不太逊色,并且,它比后缀树所占用的空间小很多。可以说,在信息学竞赛中后缀数组比后缀树要更为实用。变量定义Suffix(i):表示S[i..len(S)],即从第i位开始的字符串
2017-03-15 22:21:36 332
原创 【BOI2012】Mobile(mobile)
Description著名的手机网络运营商Totalphone 修建了若干基站收发台,以用于把信号网络覆盖一条新建的高速公路。因为Totalphone 的程序员总是很马虎的,所以,基站的传功功率不能独立设置,只能将所有新基站的功率设置为一个相同的值。为了让能源的消耗尽量少,公司希望知道公路中任意点到最近基站距离的最大值。Solution首先我们可以考虑对答案有贡献的点会满足什么条件?假设现在有两个点
2017-03-09 16:00:31 1561
原创 【SDOI2014】数表(table)
Description Solution很明显可以发现,n和m交换是不会影响答案的, 我们可以先设一个f(x)=∑d|xdf(x)=\sum_{d|x}d表示ii的约数和,还有一个数组g(x)=∑ni=1∑mj=1(gcd(i,j)=x)g(x)=\sum_{i=1}^{n}\sum_{j=1}^{m}(gcd(i,j)=x),而答案明显就是∑ni=1f(i)∗g(i)\sum_{
2017-03-07 15:48:39 989
原创 【51Nod 1022】石子归并 V2
Description1022 石子归并 V2 基准时间限制:1 秒 空间限制:131072 KB 分值: 160 难度:6级算法题 N堆石子摆成一个环。现要将石子有次序地合并成一堆。规定每次只能选相邻的2堆石子合并成新的一堆,并将新的一堆石子数记为该次合并的代价。计算将N堆石子合并成一堆的最小代价。例如: 1 2 3 4,有不少合并方法 1 2 3 4 => 3 3 4(3) => 6 4(
2017-02-14 16:52:31 1078
原创 【NOIP2014八校联考第1场第2试】大水题(water)
Descriptiondzy 定义一个n^2 位的数的生成矩阵A 为一个大小为n*n 且Aij 为这个数的第i*n+j-n位的矩阵。 现在dzy 有一个数n^2 位的数k,他想知道所有小于等于k 的数的n*n 生成矩阵有多少种。(如果不足n^2 位则补前缀零)Solution首先要发现一个性质,除去回文数,其他数字反过来只要不超过k,就一定要减去另一个,于是就有递推式。除以2是因为这样子计算会重复
2017-01-15 22:31:23 569
原创 【NOIP2014八校联考第2场第2试】帮助Bsny(help)
DescriptionBsny的书架乱成一团了,帮他一下吧! 他的书架上一共有n本书,我们定义混乱值是连续相同高度书本的段数。例如,如果书的高度是30,30,31,31,32,那么混乱值为3;30,32,32,31的混乱值也为3。但是31,32,31,32,31的混乱值为5,这实在是太乱了。 Bsny想尽可能减少混乱值,但他有点累了,所以他决定最多取出k本书,再随意将它们放回到书架上。你能帮助
2017-01-15 07:58:15 620
原创 【NOIP2017GDKOI】c
DescriptionData ConstraintSolution可以看出来,只要一段中1的个数和0的个数相同就可以满足了,前缀和能够比较好地判断是否合法。观察数据可以发现,询问的长度总和不会超过2∗1052*10^5,那么长度小于等于300的可以直接预处理出来,剩下的直接暴力,均摊的时间不会很多。Codeconst mx=350;var t:array[0..200000] of lo
2017-01-12 20:36:05 594
原创 【NOIP2017GDKOI】b
DescriptionSolution有一点巧妙,但是应该还是比较容易想到的。分析新增节点对于答案的贡献可以发现,转化成二进制后建树会更容易。当遇到某一位为0时,就应当在同一层新增一个节点,若是为1,在新加一个点之后,还应递进到下一层。自己在草稿纸上推一下,从底层算起,每个节点对答案的贡献是他儿子节点的乘积再+1。Codevar n,i,sum,s1,s2:longint; l,r:
2017-01-12 20:05:43 622
原创 【NOIP2017GDKOI】a
DescriptionSolution很明显的一道题,只要仔细想想就能发现:某两个数所能构成的最小数是他们的最大公因数。当然,所求出的公因数也可以和其他数求最大公因数,那就相当于对所有数都一起求出最大公因数。为什么要求出最大公因数呢?因为求出了最小的可组成的数时,就能够一点点减掉,能减到零的数必然是这个公因数的倍数。Codevar a,b:array[0..100000] of longin
2017-01-12 19:27:36 1198
原创 【NOIP提高组】C
Description给出一个H的行和W列的网格。第i行第j列的状态是由一个字母的A[i][j]表示,如下: “.” 此格为空。 “o” 此格包含一个机器人。 “E” 此格包含一个出口,保证出口在整个网格中有且只有一个 每次可以选择上,下,左,右之一的方向,将所有剩余的机器人向这个方向移动一个格子,如果一个机器人被移出了网格,那么这个机器人会爆炸,并立即消失。如果一个机器
2016-12-22 15:22:41 670
原创 【NOIP提高组】B
Description在两个n*m的网格上染色,每个网格中被染色的格子必须是一个四联通块(没有任何格子被染色也可以),四联通块是指所有染了色的格子可以通过网格的边联通,现在给出哪些格子在两个网格上都被染色了,保证网格的最外围一层不会在两个网格中同时被染色,即所有处于第x行第y列满足x=1或x=n或y=1或y=m的格子不会被在两个网格中同时被染色,请求出任意一种染色的方案,如果无解,请输出-1。Sol
2016-12-19 21:43:24 520
原创 【NOIP提高组】幻魔皇
Description幻魔皇拉比艾尔很喜欢斐波那契树,他想找到神奇的节点对。 所谓斐波那契树,根是一个白色节点,每个白色节点都有一个黑色节点儿子,而每个黑色节点则有一个白色和一个黑色节点儿子。神奇的节点对则是指白色节点对。 请问对于深度为n的斐波那契树,其中距离为i的神奇节点对有多少个?拉比艾尔需要你对于1<=i<=2n的所有i都求出答案。Solution先看到题目的关键字“斐波那契”,就很容易
2016-12-13 16:14:00 495
原创 【NOIP提高组】降雷皇
Description降雷皇哈蒙很喜欢雷电,他想找到神奇的电光。 哈蒙有n条导线排成一排,每条导线有一个电阻值,神奇的电光只能从一根导线传到电阻比它大的上面,而且必须从左边向右传导,当然导线不必是连续的。 哈蒙想知道电光最多能通过多少条导线,还想知道这样的方案有多少。Solution很容易地发现这是一个求最长上升子序列,并求出方案数。 用单调队列就能够轻易求出最长子序列的长度,而方案数可以用一
2016-12-12 22:32:36 829
原创 【NOIP提高组】神炎皇
Description神炎皇乌利亚很喜欢数对,他想找到神奇的数对。 对于一个整数对(a,b),若满足a+b<=n且a+b是ab的因子,则成为神奇的数对。请问这样的数对共有多少呢?Solution从题意上来看(a+b)是(a*b)的因子,设d=gcd(a,b)d=gcd(a,b) a′=ada'={a\over d} b′=bdb'={b\over d}。 (a+b)|(a∗b)(a+b)|(a*
2016-12-12 22:11:53 549
原创 【51nod 1711】平均数
DescriptionSolution一道很经典的题目(做过还推了好久没有推出来,惭愧),找出两个平均数的大小关系式子Sr−Slr−l≥Sr′−Sl′r′−l′{{S_{r}-S_{l}}\over{r-l}}≥{{S_{r'}-S_{l'}}\over{r'-l'}}(SiS_i表示∑ai\sum a_i)。第K大,可以通过二分答案判断得解。设二分出的答案是midmid,转化形式变成Si−mid∗
2016-12-08 16:39:18 375
原创 【51Nod 1040】 最大公约数之和
DescriptionSolution分析题目可以发现,两个数gcd(a,b)=xgcd(a,b)=x,则等价于gcd(ax,bx)=1gcd({a\over x},{b\over x})=1,问题就可以转化为满足gcd(nx,ix)=1gcd({n\over x},{i\over x})=1的i的个数,对答案贡献就是个数乘上gcd(n,i)gcd(n,i)。很容易可以想到欧拉函数,因为φ(n)φ(
2016-12-07 21:05:10 477
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人