摘要: 题面 很简单的一个二维DP f[i][j]表示最后吃到(i,j)所能获得的最大值, 那么f[i][j]=max(f[i+1][j-1],f[i+1][j],f[i+1][j+1])+a[i][j]; 注意f要初始化为负无穷大; 阅读全文
posted @ 2019-08-13 14:16 神之右大臣 阅读(142) 评论(0) 推荐(0) 编辑
摘要: 题面 用一个单调递减队列来维护一个区间,单调队列的头就是该区间的最大值; 因为在该数前面进队的数如果比后进的数要小就说明了前面进队的数绝对不会影响答案。 阅读全文
posted @ 2019-08-13 13:58 神之右大臣 阅读(255) 评论(0) 推荐(0) 编辑
摘要: 题面 离线处理;大体思路就是将数组排序,然后对于第k次询问把不可行的数打上标记,然后从头开始寻找第k个没打标记的点的值(排序后的数组保证了它是第k小的)。实现方法:首先离散化原始数组,得到数组find[],find[i]=j表示原位置为i的数从小到大排序后的位置是j。a[]数组表示原数组,b[]数组 阅读全文
posted @ 2019-08-12 15:55 神之右大臣 阅读(214) 评论(0) 推荐(0) 编辑
摘要: 题面 这道题虽然是练习匈牙利算法的,但可以用网络流来切掉它; 我们可以建立一个超级源和一个超级汇,超级源连接左部分点,超级汇连接右部分点; 然后在该图上跑最大流就可以了; PS:我设的超级源是2001,超级汇是2002; 阅读全文
posted @ 2019-08-10 14:48 神之右大臣 阅读(146) 评论(0) 推荐(0) 编辑
摘要: 题面: 割点性质: 节点 u 如果是割点,当且仅当存在 u 的一个子树,子树中没有连向 u 的祖先的边(返祖边)。 换句话说,如果对于一个点u,它的子节点是v,如果low[v]>=dfn[u],就代表u的子图中没有返祖边,即该节点u是割点; #include <bits/stdc++.h> usin 阅读全文
posted @ 2019-08-10 13:38 神之右大臣 阅读(223) 评论(0) 推荐(0) 编辑
摘要: 题面 这道题就是标准的堆优化dijkstra; 注意堆优化的dijkstra在出队时判断vis,而不是在更新时判断vis 阅读全文
posted @ 2019-08-10 13:08 神之右大臣 阅读(236) 评论(0) 推荐(1) 编辑
摘要: 这道题的难度应该达到普及+了吧我太蒟蒻了其实做完这道题后仔细想一想发现了一种神奇的问题:计算机好笨啊!!!Q:为什么?A:你想啊,计算机没有自己的思想,一直被人牵着鼻子走,这难道不笨吗?Q:蛤?什么意思?A:题目虽然说计算机会破坏人类的选择,但实际上人类一直选择数值最优的那一对的其中一个,那么计算机 阅读全文
posted @ 2019-08-09 15:13 神之右大臣 阅读(145) 评论(0) 推荐(0) 编辑
摘要: 题面 本题是一道有向图博弈问题: 该题便是著名的巴什博弈; 我们可以发现,当n=0的时候后手必胜(设其为P态),n=1~m这几种状态由于先手可以一次全部取完导致先手必胜(设其为N态)。 接着当n=m+1时,因为先手无论取走几个都会使后手一次全部取走导致后手必胜; 接着当n=m+2~2*m时,因为先手 阅读全文
posted @ 2019-08-09 14:10 神之右大臣 阅读(184) 评论(0) 推荐(0) 编辑
摘要: 题面 因为 n=lcm(a,b)n = lcm(a, b)n=lcm(a,b) ,可以得出: a 和 b 的质因数都是 n 的质因数 对于 n 的每个质因数 x ,在 n 中的次数为 y ,那么 x 在 a 和 b 中至少有一个次数为 y,在另一个中的次数 <=y。 所以我们只要把 n 的每个质因数 阅读全文
posted @ 2019-08-08 11:54 神之右大臣 阅读(192) 评论(0) 推荐(0) 编辑
摘要: 题面 本题其实主要就这几点: 1.离线,以右端点排序(从小到大); 2.建立树状数组c[],c[i]表示从1~i中有多少种不同的数字; 3.对于每次查询的答案就是sum(r)-sum(l-1); 4.由于问题是离线排序回答,所以应该注意输出顺序(离散化前的顺序); Q:直接统计前缀和,然后对于每次询 阅读全文
posted @ 2019-08-08 11:50 神之右大臣 阅读(196) 评论(0) 推荐(0) 编辑
摘要: 就是一个模板,不多说别的了。 阅读全文
posted @ 2019-08-08 09:58 神之右大臣 阅读(371) 评论(0) 推荐(0) 编辑
摘要: 注意,是自动AC机,并不是AC自动机!(没事做了一个很好玩的东西) 好孩子请自觉不要阅读本文章; 亲测对于lemon,cena好使; 阅读全文
posted @ 2019-08-08 09:57 神之右大臣 阅读(779) 评论(0) 推荐(1) 编辑
摘要: 题面 给大家普及一个知识,只要看到最大值最小或最小值最大等字样就往二分上想吧!然后是正解部分: 我们可以二分答案; 对于每次二分的区间取中间值mid,并对其进行check()判断; 如果所有段的最大值为mid时可以分成m段(注意,如果此时分成的段比m还小,那么也是可行的,因为你可以随便拆拆就能拆成m 阅读全文
posted @ 2019-08-08 09:30 神之右大臣 阅读(292) 评论(0) 推荐(0) 编辑
摘要: 题面 首先你需要知道这条定理: C(n,m)=C(n%p,m%p)*C(n/p,m/p); 这样可以递归实现; 注意坑点:是C(n+m,m),并不是C(n,m); 阅读全文
posted @ 2019-08-07 14:11 神之右大臣 阅读(137) 评论(0) 推荐(0) 编辑
摘要: 题面 本题的难度其实不及紫题的难度。主要是在hash时的处理细节比较繁琐; 首先是树hash的模板: 对于无根树在数据不多的时候可以依次枚举每个点当根时的根节点的hash值,然后将这些树上hash值变为一组数的hash值; 然后n^2比较每棵树的线性hash值就可以了; 阅读全文
posted @ 2019-08-07 13:48 神之右大臣 阅读(271) 评论(0) 推荐(0) 编辑
摘要: 题面 这道题竟然是E?还是洛谷中的黑题? wow~!! 于是就做了一下; 然后一下就A了;(这并不代表想的容易,而是写的容易) 这道题就是骗人的!! 什么manacher,什么回文自动机,去靠一边站着,看我的无敌大模拟! 可以设定l,r两个点,初始时分别指向1和n; 如果是s[l]==s[r],那么 阅读全文
posted @ 2019-08-03 16:31 神之右大臣 阅读(260) 评论(0) 推荐(0) 编辑
摘要: 题面 本题是一道区间最大公约数的模板题; 如果N^2暴力的话当然会超时,所以我们要发掘出区间gcd的特点; 设gcd[i]表示区间[1,i]的最大公约数; 我们可以发现,从一个点i到1之间的所有区间的gcd均满足gcd[j]=GCD(gcd[j-1],a[j]); 由于gcd的性质,所以gcd[]是 阅读全文
posted @ 2019-08-03 16:01 神之右大臣 阅读(105) 评论(0) 推荐(0) 编辑
摘要: 题面 这题好水的说~很明显就是主席树的大板子 然而我交了3遍才调完所有的BUG,开好足够的数组,卡掉大大的常数; 针对与每次操作,change()会创建新节点,而ask()虽然也会更新左右儿子的节点编号,但并不会创建除根节点以外的点; 处理好以上change()和ask()的细节就可以轻松地切掉这道 阅读全文
posted @ 2019-08-02 20:45 神之右大臣 阅读(97) 评论(0) 推荐(0) 编辑
摘要: 题面 啊~,很水的一道trie树模板题; 当两个串存在关系时情况有两种: 若当前串插入后没有任何新建节点,则该串肯定是之前插入的某个串的前缀; 若在插入的时候,有某个经过的节点带有某串结尾的标记,则之前插入的某个串是当前串的; 阅读全文
posted @ 2019-08-02 17:05 神之右大臣 阅读(165) 评论(0) 推荐(0) 编辑
摘要: NO.10: 循环展开: 在缓存和寄存器允许的情况下一条语句内大量的展开运算会刺激 CPU 并发(蛤?这是个什么原理,算了,反正写了没坏处就这么写吧) NO.9: 特殊运算优化:(或许这真的没用) 取模优化: 绝对值优化: NO.8: 前置++/--运算符:(有利无弊) NO.7: if()else 阅读全文
posted @ 2019-08-02 16:22 神之右大臣 阅读(1303) 评论(1) 推荐(3) 编辑
摘要: 题面 本题随便看两眼就知道该题满足了优美的查分性质; 对于在区间[x,y]内操作时,应该将查分数组的第x项和第y+1项进行相反操作; 询问答案时,问第i个数的值就是查分数组的前i项和; 暴力+玄学卡常可以A掉数据十分水的数据; 正解是求前i项和的时候用树状数组来维护; 阅读全文
posted @ 2019-08-02 15:32 神之右大臣 阅读(155) 评论(0) 推荐(0) 编辑
摘要: 对于一个数列a[],比如说:5 3 4 2 1; 我们可以将其离散化成b[],先在位置5加1,然后在位置3加1,然后在位置4加1,以此类推; 当在一个位置x加1时,b[]中已经加完的的值保证了其l<r; 那么如何统计a[l]>a[r]的个数呢? 这个个数就是sum(b[1]~b[x]); 到这里求得 阅读全文
posted @ 2019-08-01 20:48 神之右大臣 阅读(125) 评论(0) 推荐(0) 编辑
摘要: 题面 1. 图书馆馆长的考验(library) 红魔馆的拥有者蕾米莉亚的好友帕秋莉是红魔馆的大图书馆的馆长。擅长操纵五行,名言是“万物都有属性。所谓的属性,和弱点是一样的”。 一天,因为魔理沙看了神之右大臣的视频却不投硬币不点收藏不加关注导致受到了幽幽子的追杀。在博丽灵梦的引荐下,魔理沙来到红魔馆去 阅读全文
posted @ 2019-08-01 10:38 神之右大臣 阅读(326) 评论(0) 推荐(0) 编辑
摘要: “疲劳”传说 (legend.pas/c/cpp) 【题目描述】 炉石传说:魔兽英雄传是一款由暴雪开发的非常流行的游戏。这个问题建立在这个游戏的基础上,但是即使你不知道这个游戏,你也能非常轻松的解决这个问题。 每一局游戏是两个对手1v1的比赛。炉石传说的游戏方式是回合制,每个玩家轮流打出自己手中的牌 阅读全文
posted @ 2019-08-01 10:27 神之右大臣 阅读(273) 评论(0) 推荐(0) 编辑
摘要: 题面 这道题的数据范围一看就是dfs或状压啦~ 本文以状压的方式来讲解 f[i][j]表示目前的节点是i,已经经历过的节点的状态为j的简单环的个数; 具体的转移方程和细节请看代码; PS:(i&-i)的意义便是树状数组 阅读全文
posted @ 2019-08-01 08:56 神之右大臣 阅读(154) 评论(0) 推荐(0) 编辑
摘要: 转一个链接,对于刚学并查集的新手超友爱的说!故事读完也就学会了! 阅读全文
posted @ 2019-07-31 21:09 神之右大臣 阅读(171) 评论(0) 推荐(0) 编辑
摘要: 题面 貌似这道题暴力加玄学优化就可以AC? 下面是正解: 1.树链剖分: 我们在u到v之间都放一个糖果,可以将松鼠它家u到v的糖果数都加1。每一次将a[i]到a[i+1] (a数组是访问顺序)的节点加1,可以用树链剖分来维护。查询只需要查每个点的权值就可以了。(貌似该题比树剖板子还板子?) 2.树上 阅读全文
posted @ 2019-07-31 20:56 神之右大臣 阅读(172) 评论(0) 推荐(0) 编辑
摘要: 题面 正解:一道二分大水题! A:为什么我得不到满分? B : 评测的系统不一样啊! A : 蛤? 正常情况下我们日常练习均使用的是windows系统,在windows下,string 本身是可以存储'\0'字符,'\0'字符只是char 数组的结束符。如果是一个字符一个字符赋值,string 是可 阅读全文
posted @ 2019-07-31 19:43 神之右大臣 阅读(231) 评论(0) 推荐(0) 编辑
摘要: 题面 裸跑一遍SPFA,统计每个点的入队次数; 如果该点的入队次数>=总点数,那么该点便是一个负环上的点; 重点!!!: 1.不是“YES”,是“YE5”; 2.不是“NO”,是“N0”;(是零); 3.多测不清空,爆零两行泪; 阅读全文
posted @ 2019-07-31 10:36 神之右大臣 阅读(194) 评论(0) 推荐(0) 编辑
摘要: 题面 利用暴力快速幂O(nlogn)会TLE掉; 所以对于求1~n的所有逆元要用递推公式; 阅读全文
posted @ 2019-07-31 10:28 神之右大臣 阅读(98) 评论(0) 推荐(0) 编辑