NOIP解题报告
文章平均质量分 84
scarlyw
如果世界真的不喜欢你,那世界就是我的敌人了。
展开
-
解题报告(5)——流星雨
流星雨题目描述贝茜听说了一个骇人听闻的消息,一场流星雨即将袭击整个农场,由于流星体积过大,它们无法在撞击到地面前燃烧殆尽,届时将会对它撞到的一切东西造成毁灭性的打击。很自然地,贝茜开始担心自己的安全问题。以FJ牧场中最聪明的奶牛的名誉起誓,她一定要在被流星砸到前,到达一个安全的地方(也就是说,一块不会被任何流星砸到的土地)。如果将牧场放入一个直角坐标系中,贝茜现在的位置是原点,并且,贝茜不原创 2016-11-07 16:52:01 · 1058 阅读 · 2 评论 -
解题报告(6)——Word puzzles
Word Puzzle题目描述给出一个字母地图和一些字符串,请你找出每个字符串的第一个字母在地图中的位置和该字符串的方向。假设地图左上角为原点(0,0)。可能的方向有8个,从北开始顺时针方向依次编号A~H,北方编号为“A”。 (方向)输入格式第一行包含三个正整数:L(0<L≤1000),C(0<C≤1000),W(0<W≤1000原创 2016-11-07 22:55:35 · 1091 阅读 · 1 评论 -
20161020测试T1 解题报告(7)——Hello
Hello算法分析:方法一: 直接暴力搜索 期望得分: 30~40时间复杂度:n!(怎么都是死)1)读入字符串,分离各位置;2)从第一位开始传参搜索每一种可能; Source:#include#include#include#include#include#includeusing namespace std;long long原创 2016-11-07 23:06:49 · 315 阅读 · 1 评论 -
20161020测试T2 解题报告(8)——rect
Rect 算法分析:方法一: 玄学做法(毫无正确性)(摘自hyj) 期望得分: 40时间复杂度:n1)读入;2)转成数字,全部相乘后,除以a,除以2,输出; Source:#include#include#include#includeusing namespace std;int main() { //、fr原创 2016-11-07 23:15:48 · 624 阅读 · 1 评论 -
BZOJ3224 普通平衡树
3224: Tyvj 1728 普通平衡树Time Limit: 10 Sec Memory Limit:128 MBSubmit: 9784 Solved: 4165Description您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作:1. 插入x数2. 删除x数(若有多个相同的数,因只删除一个)3. 查询x数的排名(若有多原创 2017-01-04 18:32:05 · 277 阅读 · 0 评论 -
BZOJ1503 郁闷的出纳员
BZOJ 1503郁闷的出纳员解析:题目不难,算是Splay区间操作入门题,主要就是考虑每次减薪操作时, 直接将当前的薪水小于min限制的人员全部删掉即可,加薪的时候直接在root处打上tag然后在合适的时候进行pushdown即可,注意select单个node的时候,一定样pushdown(),不然会WA飞.Source:{CSDN原创 2017-01-04 18:44:07 · 389 阅读 · 0 评论 -
BZOJ3223 文艺平衡树
BZOJ 3223文艺平衡树解析:赤裸裸的区间翻转, 不写Splay还写啥, 可以当成标准的Splay区间翻转的板,直接训练敲板吧。Source:#include#include#include#include#include#include#includeusing namespace std;int cnt;inline vo原创 2017-01-04 19:04:01 · 259 阅读 · 0 评论 -
BZOJ3506 排序机械臂
BZOJ 3506排序机械臂解析:赤裸裸的区间翻转+1, 这一次还需要维护一个区间最小值,然后还要注意Splay的中序遍历是不会变的, 所以我们将结点x旋转到根后,它当前的rank就是在原序列中的编号,直接输出即可。Source:#include #include #include #include #include #include原创 2017-01-04 19:43:32 · 294 阅读 · 0 评论 -
Codevs4655 序列终结者
Codevs4655序列终结者解析:赤裸裸的Splay维护三种操作即可, 只要注意模板不错就没有问题了。Source:#include#include#include#include#include#include#includeusing namespace std;inline void R(int &v){ char原创 2017-01-04 19:50:47 · 278 阅读 · 0 评论 -
BZOJ1507 Editor
BZOJ 1507 Editor解析:比较简单的区间操作, 但是因为操作很多所以比较不想写啊,最大的作用就是熟悉模板,熟悉,再熟悉。注意输出一个区间时,先select提取区间然后dfs获得中序遍历输出即可, 但是注意判定是否为空结点或者是边界。Source:#include#include#include#include#include#in原创 2017-01-04 20:02:07 · 264 阅读 · 0 评论 -
BZOJ1269 文本编辑器Editor
BZOJ 1269文本编辑器Editor解析:BZOJ1507加强版,首先是数据加强,然后是多了一个reverse,似乎没什么,但是这意味着你需要加上一系列的pushdown······千万不要把pushdown位置搞错,千万不要多打,千万不要少打,不要作死。Source:#include #include #include #include #原创 2017-01-04 20:07:20 · 287 阅读 · 0 评论 -
BZOJ1588 营业额统计
BZOJ 1588营业额统计解析:题目不难,不过讲道理这完全用不上Splay, 听某STL大神说,可以轻松搞定, 但是因为今天是搞Splay,那我们还是乖乖打板吧, 就是单点修改,查询前驱后继即可。Source:#include#include#include#include#include#include#includeusing name原创 2017-01-04 18:59:25 · 355 阅读 · 0 评论 -
poj3180 The cow porm
The cow porm题目背景:Poj3180分析:求点数大于2 的强连通分量个数Source:#include #include #include #include #include #include #include #include using namespace std;inline void R(int &v) { c原创 2017-01-29 20:40:01 · 603 阅读 · 0 评论 -
poj2186 Popular cows
Popularcows题目背景:poj2186分析:题目本身简单,从每头牛向他们所喜欢的牛连边,考虑这么一个问题,所有的满足题目受欢迎的条件,则这些牛都在同一个强连通分量中,并且,这个SCC一定是出度为0的,所以我们要求的就是那个SCC中的点的个数即可,但是注意,可能出现获得的图并不联通的情况,这个时候答案直接为NO,因为不可能有符合题目的牛。Source:{CSDN:CO原创 2017-01-29 20:37:29 · 256 阅读 · 0 评论 -
poj1236 Network of Schools
Network of Schools题目背景:poj1236分析:这道题与缩点的度有关。对于问题A,我们可以简化为:1) 至少要选几个顶点,才能做到从这些顶点出发可以遍历所有结点对于问题B,我们可以简化为:2) 至少要加多少条边,才能使得从任何一个顶点出发都能遍历全部结点 实现:1、统计得出每个SCC的入度出度先将缩点中的每个点的入度和出度累加原创 2017-01-29 20:42:34 · 253 阅读 · 0 评论 -
poj3177 Redundant Paths
Redundant Paths题目背景:poj3177分析:题目本身不难,直接求取边双联通分量,然后计算出其中度数为1的DCC的个数即可,注意统计度数的时候是把无向边正反全部利用了的,所以统计的应该是度为2的DCC。Source:#include #include #include #include #include #include #includ原创 2017-01-29 20:44:47 · 218 阅读 · 0 评论 -
poj1523 SPF
SPF题目背景:poj1523 分析:直接判定割点,然后针对每一个个点进行一次dfs之后就可以确定每一个割点会将图像分为几部分。详见代码。Source:#include #include #include #include #include #include #include #include using namespace st原创 2017-01-29 20:47:01 · 251 阅读 · 0 评论 -
poj2942 Knights of the Round Table
Knights of the Round Table题目背景:poj2942分析:这个题,每个知识点都不难,但是放到一起还是挺恶心的。首先我们明确我们要找的是点双联通分量,然后针对每一组点双联通分量进行二分图染色,一次来判定其是否为奇圈(满足题目要求),之后用总数减去奇圈中的点个数即可。Source: #include #include #include #in原创 2017-01-29 20:49:12 · 205 阅读 · 0 评论 -
poj3648 Wedding
Wedding题目背景:poj3648分析:2-SAT裸题,直接将与新郎同侧设置为true,然后跑tarjan即可。如果不太清楚2-SAT的同学,请去看我的另一篇文章,详解了2-SATSource:#include #include #include #include #include #include #include #include原创 2017-01-29 20:50:40 · 352 阅读 · 0 评论 -
poj2749 Building roads
Building roads题目背景:poj2749分析:本题的建边比较繁琐,并且需要二分答案来寻找最小的曼哈顿距离然后2-SAT求解,因此,每一次二分一个上界,然后根据上界limit, 然后根据喜欢讨厌关系和如下关系建边tarjan即可。如还不太清楚2-SAT,可以去看这篇dist(i, S1) + dist(S1, j) > limit ó Xi->!Xj Xj->Xi原创 2017-01-29 20:51:59 · 336 阅读 · 0 评论 -
poj1386 Play on words
Play on words题目背景:poj1386分析:题意应该比较好理解,重点是怎么实现,我们可以发现,他需要我们求的是一条欧拉路径,并且我们可以发现,其实对于一个单词而言中间的字母是没有用的,只有两头的有用,然后我们的思路就比较清晰了,从每一个单词的首字母向尾字母连边,之后就形成了一个有26个点的有向图,然后我们针对这个图求解是否存在欧拉路径或欧拉回路即可。Source:原创 2017-01-29 20:53:25 · 230 阅读 · 0 评论 -
poj3461 Oulipo
Oulipo题目背景:poj3461分析:裸的kmp直接上比较好Source:#include #include #include #include #include #include #include using namespace std;int p[10010];string s, t;int cas;void原创 2017-01-31 14:27:10 · 239 阅读 · 0 评论 -
poj2406 Power strings
Power strings题目背景:poj2406分析:next数组的妙用,若n % (n - next[n]) == 0 则表示n为循环串,每一串都是长度为n – next[n],证明我的建议是自己下去画一下会更好理解。Source:#include#includeusing namespace std;const int Max = 10000000原创 2017-01-31 14:28:20 · 230 阅读 · 0 评论 -
poj3945 Find the Clones
Find the Clones题目背景:poj2945分析:还是trie树的裸题,直接先全部读入,然后在每一个串尾结点计数,最后全部扫一遍统计cnt即可。Source: #include#include#include#include#include#includeusing namespace std;int t, n, tot, m;原创 2017-01-31 14:31:47 · 356 阅读 · 0 评论 -
poj3630 Phone List
Phone List题目背景:poj3630分析:trie树的裸题,直接先全部读入,然后判定是否有前缀存在即可。Source:#include#include#include#include#include#include#includeusing namespace std;int tot, t, n;string str;stru原创 2017-01-31 14:30:47 · 203 阅读 · 0 评论 -
poj1816 Wild words
Wild words题目背景:poj1816分析:虽然不想说,但是我不得不说,这个题刷新了我对“trie树很亲民”的认知,本题是trie + dfs因为存在通配符,就需要进行模糊匹配的处理,代码就有点繁琐了。具体的解题方向详见代码注释。Source: #include#include#include#include#include#include原创 2017-01-31 14:33:37 · 309 阅读 · 0 评论 -
CF 526D Om Nom and Necklace
Om Nom and Necklace题目背景:CF 526D分析:还是next数组的妙用,若n % (n - next[n]) == 0 则表示n为循环串,每一串都是长度为n – next[n],但是这个题每一位都要判断,具体的判定条件和判定思路,详见代码注释。Source:#include #include #include #include #include原创 2017-01-31 14:29:38 · 354 阅读 · 0 评论 -
CF633C Spy Syndrome 2
Spy Syndrome 2题目背景:CF 633C分析:又是一道trie + , 这道题是trie + DP,直接针对每一位处理如果从这一位截断,那么形成的单词是什么,具体详见代码Source:#include #include #include #include #include #include #include using name原创 2017-01-31 14:35:01 · 325 阅读 · 0 评论 -
hdu2222 Keywords Search
Keywords Search题目背景:HDU - 2222 分析:AC自动机板子题Source:#include #include #include #include #include #include using namespace std;const int MAXN = 500000 + 50;int n, t, tot;原创 2017-01-31 14:36:48 · 362 阅读 · 0 评论 -
poj1204 Word Puzzles
Word Puzzles题目背景:poj1204分析:AC自动机的题,先将所有的匹配串建成AC自动机,然后八个方向用地图来跑即可。详细见代码。Source:#include#include#include#include#include#includeusing namespace std;const int dx[9]= {0, -1,原创 2017-01-31 14:38:05 · 250 阅读 · 0 评论 -
poj4052 Hrinity
Hrinity题目背景:POJ - 4052 分析:明明不算太难的题,我前前后后断断续续调了一个月······也不知道当时怎么想的,其实说白了就是三个步骤,一把所有的模式串建成自动机,二用匹配串跑一遍,标记所有的被匹配的串,然后针对所有匹配上的串清除其子串,之后统计一下答案即可。中间本人出问题的点已经在代码中进行了标注。Source:#include #include原创 2017-01-31 14:39:14 · 303 阅读 · 0 评论 -
hdu3065 病毒侵袭持续中
病毒侵袭持续中题目背景:HDU - 3065分析:AC自动机,直接建好跑就OK只是需要在去重的时候小心,它是问出现了几次,盲目去重就会错的很惨。Source:#include #include #include #include #include #include #include using namespace std;const原创 2017-01-31 14:41:16 · 286 阅读 · 0 评论 -
poj3974 Palindrome
Palindrome题目背景:POJ - 3974分析:裸的求最长回文串啦,manacher大法好Source:#include #include #include #include #include #include #include using namespace std;const int MAXN = 1000000 +原创 2017-01-31 14:42:29 · 335 阅读 · 0 评论 -
bzoj2565 最长双回文串
最长双回文串题目背景:BZOJ - 2565分析:据说用回文自动机很裸,据说回文自动机做这个题很简单,宝宝这种蒟蒻不会,还是就manacher吧,记录下信息即可,详见代码注释。Source:#include #include #include #include using namespace std;const int N = 1e6 + 5;原创 2017-01-31 14:43:57 · 306 阅读 · 0 评论 -
BJ模拟(1) D2T1 Bash Plays with Functions
Bash Plays with Functions题目背景:thoj23分析:首先我们来搞一波打表找规律就会比较轻松的发现,f0 = 2k, 其中k表示n的不同的质因子的个数,所以我们也就可以发现f0 为积性函数,我们把稍微关注一下fr+1(n)的形式,就会发现fr+1(n) = sigma(d|n)fr(d)因为f0为积性函数,我们根据性质原创 2017-03-08 20:16:07 · 605 阅读 · 0 评论 -
BJ模拟(1) D2T2 Alice and Bob IV
Alice and Bob IV题目背景:分析: 懂套路的大牛可能又要吐槽了,这个不是二分图匹配 + 博弈论吗,好吧,的确是,但是这个题的出题人显然是想搞事情······竟然搞出交互题来让我们陪checker愉快的玩耍······(我有一句XXX不知当不当讲)因为本题宝宝自己都还是比较懵逼的情况,但是我呢还是听话的先去做了bzoj2437[NOI2011]兔兔与蛋蛋(原创 2017-03-08 20:40:01 · 388 阅读 · 0 评论 -
bzoj3997 组合数学
组合数学题目背景:bzoj3997分析:首先注意,我们可以把原题抽象成为一张DAG,然后每个格子可以走到相邻的下方或者右方的格子,但是当前格子中的每一个点互不联通,然后,我们就可以发现原题就是求取一个DAG的最小链覆盖,然后根据Dilworth定理(我也不知道这是什么,太蒟蒻······):DAG的最小链覆盖 = 最大独立点集然后根据每个格子与右原创 2017-03-06 16:45:14 · 433 阅读 · 0 评论 -
bzoj1305 跳舞
跳舞题目背景:bzoj1305分析: 我们考虑这道题,我想应该还是能够比较容易的发现这是一道网络流,不论是题面推理,还是从数据范围来看,但是要是真的有这么的简单,那就显得不太正常了······我们考虑这么一个问题,我们可以考虑如果当前最多能跳a首曲子,那么我们可以向每一个点连一条容量为a的边,然后为了方便的处理,我们1)将每一个人拆成两个点,男孩的两个点为X1,原创 2017-03-06 17:41:02 · 536 阅读 · 0 评论 -
bzoj4571 美味
美味题目背景:bzoj4571分析: 首先,明确一个异或的套路,高位贪心,然后我们就可以发现,想要每一次求出最大值,就是针对给出的bi进行高位贪心,现在我们来一步步解决此题,从简化版开始考虑。1、 有每一道菜的美味值ai,并且没有l,r的限制,也没有偏爱值xi方法:因为需要满足高位贪心,那么,我们只需要将每一个ai计入一个trie树中,然后将每一个b原创 2017-03-06 18:13:33 · 448 阅读 · 0 评论 -
bzoj4502 串
串题目背景:bzoj4502分析:20% 解法:暴力枚举前缀,然后两两枚举形成新串,然后有hash判重(用set的宝宝,爆成了5分·····)50% 解法:将集合中的所有的字符串构建成一个AC自动机,然后,注意到每个字符串在AC自动机上的匹配路径应该是唯一的,那么我们可以考虑dp,f[i][j][k]表示当前长度为i的字符串,匹配到j状态,第原创 2017-03-06 19:08:23 · 961 阅读 · 0 评论