
寒假计划
LXY_XYL
这个作者很懒,什么都没留下…
展开
-
Educational Codeforces Round 60 Editorial
猝死场。。没有写。。直接做的练习。。。前三题解如下。。之后的还在看。。(简单的直接口胡了。。。)A. 一如既往的水题, l 可以 等于 r,找最大数字最大连续长度。。。B.贪心是万物之敌系列。。。k+1组进行循环,每次使用 k 个最大,1个次大,最后剩余部分全用最大C. 二分结果,我们可以看成先吹了 t 天的风, 之后再走 t 天,所以只需要对吹 t 天的风之后坐标进行计算,之后计...原创 2019-02-20 12:26:35 · 192 阅读 · 0 评论 -
P2590 [ZJOI2008]树的统计
树链剖分经典板子题,但是需要注意的是线段树既要维护和还要维护区间最大值。。。第一次手搓还是很难。。感觉还是不太熟练。。。 以下是 A C代码 #include<bits/stdc++.h>using namespace std;const int maxn = 1e5+5;#define ll long long intinline ll read()...原创 2019-01-30 18:17:17 · 166 阅读 · 0 评论 -
Rinne Loves Xor
链接:https://ac.nowcoder.com/acm/contest/370/I来源:牛客网时间限制:C/C++ 2秒,其他语言4秒空间限制:C/C++ 262144K,其他语言524288K64bit IO Format: %lld题目描述Rinne 最近学习了位运算相关的知识,她想运用自己学习的知识发明一个加密算法。首先她有一个源数组 A,还有一个密钥数组 B,现在...原创 2019-02-10 01:14:04 · 168 阅读 · 0 评论 -
牛客小白月赛11
C.因为询问很多,暴力会炸,记录每行每列最大值就好了,开两个数组#include<bits/stdc++.h>using namespace std;const int maxn=1e5+5;const int maxm=1e4+5;int n,m,t;int hang[maxn];int lie[maxn];int main(){ cin>&g...原创 2019-02-09 22:53:12 · 214 阅读 · 0 评论 -
BZOJ 4034
树链剖分板子题。。也可以用 DFS序来做当然无论是 DFS序还是树链都是一个思路把当前的 树形数据结构转换为 线性数据结构DFS序更加明显 我们根据先序遍历方法 挨个记录访问的点,当然离开这个点的时候也要记录,可以看作记录先序和后序举例 那么 DFS序 就是 24771133465562这样 我们找到相同两个数字之间的全部数字 就是一颗子树了而对于这道题的 区间修改...原创 2019-01-30 16:11:46 · 244 阅读 · 0 评论 -
Codeforces #536部分题解
第一次见识中国场,成功的睡过了,然后补测了一下,,,切完前四题基本就挂机了。。。。A. 看联通块,暴力就好了。。。B. 一个模拟,题意很复杂,有 N 个菜,每道菜有 a 盘,价格为 c,接下来有 m 个客人,每个客人可能会要求买第 t 号菜 d 盘,如果 不够的话就买目前价格最低的知道买够d盘,如果买不够d盘,客人就会发怒,然后一分钱都不给直接走人。问题难点在于从小到大排序后还需要...原创 2019-02-09 15:00:46 · 192 阅读 · 0 评论 -
bzoj 1588
还是太菜了,竟然 lower_bound 定义搞歪了这道题,。。偷懒了,感觉就是构建个二叉搜索树,不断地插入新的节点,找到绝对值最近的两个,比较一下绝对值差谁小就把谁加入结果就好了。。感觉可以手搓一个平衡树,但是感觉手搓太累了,,还有想投机一下看看set能不能过,结果。。过了。。开始交了一发以为不能投机,后来发现不是超时,, 以下是 AC代码。。。#include<...原创 2019-02-09 12:15:58 · 297 阅读 · 0 评论 -
hdu 1540
乍一看感觉可以树状数组加二分,但是POJ上的可以过,HDU数据貌似强一些,感觉有点玄学就换了个思路,set容器维护一下就好了,我们不断把被破坏的点加入set,然后对于询问,查找最近的被破坏点,如果 x 也在set内 直接输出0,重建的话直接把 x 从 set 内去除就好了。以下是 hdu 版本 AC 代码#include<bits/stdc++.h>using na...原创 2019-02-09 11:35:32 · 272 阅读 · 0 评论 -
选点
链接:https://ac.nowcoder.com/acm/contest/368/B来源:牛客网 有一棵n个节点的二叉树,1为根节点,每个节点有一个值wi。现在要选出尽量多的点。对于任意一棵子树,都要满足:如果选了根节点的话,在这棵子树内选的其他的点都要比根节点的值大;如果在左子树选了一个点,在右子树中选的其他点要比它小。 一道丢人题。。思维僵化严重了,无脑去模拟。...原创 2019-02-08 23:05:24 · 266 阅读 · 0 评论 -
牛客练习赛 40
A. 膜拜华哥。。。。简直神仙 dp.... 这道题dp 思路解决, dp [ n ] [ i ] [ j ] 代表 n 长度排列, 以第 i 号音符作为开头, j 号音符作为结尾那么有 dp [ n ] [ i ] [ j ] = ( 1 <= k <= 49 ) 同时还要保证 k, i, j 这个排列是合法的,开个三维 vis 记录非法排列就好了,最后结果就是...原创 2019-02-15 22:21:01 · 204 阅读 · 0 评论 -
求 n 以内 与n互质数之和
首先 我们可以发现与 n 互质的数有这样一个规律gcd ( i , n ) == 1 那么 gcd ( n-i, n ) == 1证明方法选择反证如果 i 与 n 互质, n-i 与 n 有公因数,那么 我们设这个公因数 为 p p * a1 = n-i p * a2 = n 那么 a2-a1 = i / p 我们知道 i / p 必定得为一个整数这个公式才成立, ...原创 2019-01-29 22:36:58 · 1866 阅读 · 0 评论 -
P2596(Splay 解决板子以及思路)
题目一看就知道是一个平衡树,但是这道题目并没有用 Treap 来写, 转而用 Splay 写了一下,也借鉴了以下板子Splay 和 Treap 相比最大区别可能就是 多了一个 splay 操作,还有 Splay 不会像 Treap 那样只要加入节点就会立刻更新整个结构,而是根据询问,不断地把节点提升到根部,从而改变整个树结构内容,通过不断地均分复杂度,所以可能会跑的非常之快,所以相比Tre...原创 2019-02-08 00:14:16 · 255 阅读 · 0 评论 -
POJ 1611
给你 n个人 编号 0 --- n-1 之后有 m 个集合问最后有多少个人 和 0 号接触过。。水题。。。8多说了#include <cstdio>#include <cstring>#include <algorithm>#include <iostream>using namespace std;const int maxn...原创 2019-02-15 16:37:44 · 300 阅读 · 0 评论 -
Treap 模板基于 Luogu 题目 普通平衡树
Treap = Tree + heap 顾名思义 是 二叉搜索树与堆的结合我们知道二叉搜索树的性质,比这个节点大的在右子树,小的在左子树。但是面对具有单调性的插入,就会导致一种灾难性的退化。完全变成一个链子。。之前总是百思不得其解。。感觉不知道怎么去避免这种退化。。今天终于懂了,那就是用 随机数 来维护以下堆性质。我们知道 rand() 函数 是随机生成一个数字,那么我们对...原创 2019-01-29 18:49:08 · 205 阅读 · 0 评论 -
快读与快写的应用
#include<cctype>inline int read(){ int s=0,w=1; char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')w=-1;ch=getchar();} while(ch>='0'&&ch<='9') s=s*10+ch-'...原创 2019-01-29 17:54:52 · 333 阅读 · 0 评论 -
洛谷 P2279
很明显的是一棵树,那么每个点覆盖长度为 2,能覆盖到最大到爷爷,孙子和兄弟,所以我们可以对于每个叶子节点,在他爷爷那里建个点,染色,然后把染色部分割去,再对剩余部分不断如此贪心,知道剩余部分不存在爷爷,直接染色就好了。。。贪心思路,感觉用堆优化肯定更好,但是我这里懒得写。。直接暴力数据比较小,可以过。 #include<bits/stdc++.h>using namespa...原创 2019-02-10 21:08:30 · 267 阅读 · 0 评论 -
P1967 货车运输
题意很明显,貌似是一个最大路,但是由于存在环的原因,感觉 spfa 更合适,但是问题来了 多源最长路,我们发现一个问题,如果这些路比较小,我们即便绕一下 走一些负载大的路是没关系的,那么 只要保证连通前提下,选择好权值大的路不就可以了吗,这么一想 不就是最大生成树了吗,当然题中说明了 可能会出现不联通的图,那么 我们克鲁斯卡跑一下就好了,选取较大的,有重边的话也不会更新了,之后 整个图就成了树,...原创 2019-01-31 00:56:17 · 132 阅读 · 0 评论 -
hdu 1083
二分图匹配裸题。。8多说了#include<iostream>#include<cstdio>#include<cstring>#include<vector>using namespace std;const int maxn=1e5+5;vector<int>v[maxn];bool vis[maxn];int ...原创 2019-02-13 23:07:14 · 124 阅读 · 0 评论 -
POJ 2387
n, t 看反了。。。手搓队列加spfa#include<iostream>#include<cstdio>#include<vector>#include<cstring>#include<queue>using namespace std;int g[1100][1100],Q[3000];int dis[11...原创 2019-02-13 14:13:32 · 139 阅读 · 0 评论 -
POJ 1321
水题,,回溯,,dfs,,记得用long long #include<iostream>#include<cstdio>#include<cstring>using namespace std;const int maxn=1e5+5;int n,k;char a[10][10];long long int ans;int vis[10];...原创 2019-02-13 13:21:46 · 102 阅读 · 0 评论 -
ZOJ 1586
最小生成树水题。。读好题就好了每个人自己wifi 有个权值,链接还有个权值。。。直接克鲁斯卡尔。。。#include<cstdio>#include<cstring>#include<algorithm>using namespace std;struct node{int u,v,cost;}a[1000005];int pre[10000...原创 2019-02-18 17:45:13 · 427 阅读 · 0 评论 -
HDU 1069
给你 n 种箱子, 每种箱子无数个,长宽高一直,现在要一个一个垒起来,并且要求上边的必须长宽都小于下边的才可以,求最大高度。我们可以发现一个箱子有6个方法叠起来,所以加入一种箱子我们要记录六种情况,同时,我们发现如果对 长度 L 进行排序,那么我们只需要去判断每个的宽度是否比上一个小就好了,同时开数组记录, dp[ i ] 代表 使用第 i 个的最高高度。之后跑一边 n^2 ...原创 2019-02-13 00:16:16 · 167 阅读 · 0 评论 -
HDU 1024
求将数字分成 m 段,(每段之间可以有空隙),求最大和。dp思路dp[ i ] [ j ] 代表 i 个数字 分成 j 组最大和dp [ i ] [ j ] = max ( dp [ i - 1 ] [ j ] + a [ i ] , dp [ k ] [ j-1 ] + a[ i ] )我们如果选定第 i 个数字连接到上一个序列, j 保持不变, 否则 我...原创 2019-02-12 22:22:18 · 140 阅读 · 0 评论 -
CF 1107D
题目就给个一个 n*n 的二进制矩阵问如何把它进行一种压缩操作, 求得最大的 k 使得, a[ i ] [ j ] = a [ i / k ] [ j / k ] 我们发现这就是一个压缩操作,我们先看一下最简单一种情况 2*2 0 0 1 10 0 、 1 1 很显然都是可以压缩的, 一旦是 发现 01 10 这种出现很显然无法压缩,题...原创 2019-02-12 18:49:46 · 147 阅读 · 0 评论 -
poj 2513
字典树,tries。。这个是指针版。。。用并查集判断是否全都在一个集合,之后判断欧拉回路。 #include<iostream>#include<cstdio>#include<cstring>using namespace std;const int maxn=1e6+5;int pa[maxn];inline int find...原创 2019-02-17 21:02:52 · 104 阅读 · 0 评论 -
POJ 3041
最大匹配,x y 处有星星就把 x y 建边,求一个最大匹配就好了当然 建边对象是 x 和 y+n以下是 AC代码#include<iostream>#include<vector>#include<cstring>using namespace std;const int maxn=1e5+5;int link[maxn],vis[...原创 2019-02-11 16:53:23 · 118 阅读 · 0 评论 -
POJ 2965
第200个博客。。。虽然不一定是第200道题。。。这也是一个水题。。。不断记录路径,更新答案时候顺便更新路径就好了。。。暴搜完事。。。 以下是 AC 代码#include<cstdio>#include<iostream>#include<cstring>using namespace std;const int maxn=1...原创 2019-02-11 16:03:49 · 123 阅读 · 0 评论 -
POJ 1753
无脑dfs 暴力枚举。。。水题一个不断更新最小值就好了,但是注意如果跑了 超过 32次 代表搞不定。最多枚举 16次,炸不了,带个回溯。#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const ...原创 2019-02-11 12:56:23 · 92 阅读 · 0 评论 -
POJ3321
题目很简单,有一颗苹果树,每个节点有一个苹果,两种操作,1 C i 去看第 i 个节点, 如果有苹果摘掉,没有就按上一个。2 Q i 查询 i 子树上总苹果数目。。。这题感觉可以树剖,。。。 但是 dfs 序 好写。。。ls 记录起点, rs 记录终点, 之后记录下 dfs 序。树状数组求和,,,完美。。。 #include<iostream>...原创 2019-02-17 00:11:03 · 992 阅读 · 0 评论 -
Codeforces Round #538 (Div. 2) 思路
A.水题,看好谁要什么。。。就好了B.贪心思路+离散分成 k 组,每组 取前m,那么对于全数列,去前 m*k 肯定最大,至于分解顺序,只需要标记下每个数字id,根据id 由小到大排列,之后对于这 m*t 个数字, 每m个分一组,因为其他小数字对于这道题没有贡献度。 C. N! 在 M 进制下的末尾0个数很经典,我们知道 对于 10进制下 n! 是尽可能找 2 5 ,那么 对于在 M...原创 2019-02-11 11:08:11 · 183 阅读 · 0 评论 -
CF Codeforces Global Round 1 C. Meaningless Operations
补题、我们发现对于 a 最好的情况肯定是 a^b = 111111111...1 111 而 a&b = 0 所以直接贪心就好了,但是 当 a = 11111....1111 的时候 从 0 - a-1 很显然只有0成立,但是原题范围 在 1-a-1所以特殊讨论一下,我们发现 当 a = 1111111...1111 的时候 a^b + a&b == a...原创 2019-02-11 11:00:38 · 205 阅读 · 0 评论 -
POJ 3481
一道 treap 水题题干如下,有 n 个客户,每个客户有一个优先度,我们需要3个操作1 X Y 加入ID为 X ,优先度为 Y 的客户2 提取出优先度最大的客户3 提取出优先度最小的客户乍一看 感觉堆可以解决, 但是我们发现 不但需要最大,还需要最小,那么我们便用 treap 解决即可。。之前尝试用了 hzwer 模板。。A是A掉了。。但是感觉有点显得太长了,另外也想用一...原创 2019-01-29 17:51:27 · 393 阅读 · 0 评论 -
BZOJ 1208
Treap 解决。。题目中可能会先来领养的人 或者 先来宠物,根据那种先到,来决定以哪种作为 Treap 储存的信息,之后我们构造一个 higher 函数 找到比 x 小的最近的,lower 函数找到比 x 大最近的,之后我们就进行比较选择最合适的,然后记录ans, del 那个点就好了。。。 以下是 AC 代码 #include<bits/...原创 2019-02-04 18:25:01 · 230 阅读 · 0 评论 -
P2022
一道非常思路非常清奇的的题。。卡在了一个点上了我们要注意假设 在 11前边再加个数字比如 1-102 的排列 我们据前几个的例子排列为1 ,10 ,100 ,101, 102 ,11, 2 。。。。。所以要注意字典序排列是这样的我们先去想几个思路 假设 对于 k 来讲 k 是最大序列的时候我们找比 K 小的数字 我们发现 假设 K = 23 那么 1, 10-19,...原创 2019-02-01 01:47:47 · 148 阅读 · 0 评论 -
Educational Codeforces Round 59 (Rated for Div. 2)部分题解
菜如狗。。。读题真的太菜了。。。修仙场了。。确实太困了。。http://codeforces.com/contests/1107A. 分数字。。很简单,别让前边的大于后边的,任意组合都可以,那么直接暴力两组,注意特判长度为 2 的情况B. 求数根,数根经过总结 我发现 所谓数根 不过S(x) = x % 9 找到这个结果就好办了n k 结果只需要输出 n + 9*k 当然注意 lo...原创 2019-01-27 01:38:39 · 123 阅读 · 0 评论 -
洛谷P1726
这道题是强联通分量的裸题。首先我们都知道强连通分量就是 A 可以到达 B 且 B 也能到达 A 那么 A B 就是强连通分量,所以我们不妨分析一下,如果一个图里有一个环,那么可以确定的一点就是 这个环上所有的点之间都是强连通分量,所以我们在使用 tarjan 算法的时候,也就是在找一下图中的环,找到了环之后我们环上所有的点就都是相互之间的强连通分量了。那么找环具体是什么样的过程呢,我们可以...原创 2019-01-26 22:22:58 · 160 阅读 · 0 评论 -
洛谷P1993
差分约束系统我们可以把一个不等式,看做两个点和一条边,而边则是约束不等式的一个条件距离 a - b >= c那么 建边就是 a---c---b ,a b之间建立一条权值为 c 的边,然后我们还可以根据不等式的运算进行一部分约束对于多个不等式组:v(x1) - v(x2) >= c1v(x2) - v(x3) >= c2……把它们加起来就会得到:v(...原创 2019-01-25 22:26:36 · 196 阅读 · 0 评论 -
洛谷P1972
这道题需要离线处理,由于问问题可能存在先问一下后方区间再突然问一下前方区间,而我们一旦要是想修改就会很麻烦。。当然具体问题解决思路如下假设我们问一个区间 L R 不同的数字1 2 3 1 那么很明显, 第一个1不需要我们去计算上,我们的树状数组可以记录区间数字和,一旦出现重复的数字,那么我们就直接对重复的部分 add( k , -1 ) 就好了,相当于把这个数字拿出来,所以这么样的...原创 2019-01-25 18:46:20 · 290 阅读 · 0 评论 -
洛谷 P2023
简单的线段树区间修改,但是修改有正常区间加还有区间乘,所以注意要先算乘法再算加法就好了。。 以下是 AC 代码 #include<bits/stdc++.h>using namespace std;#define ll long long int#define ls l,m,rt<<1#define rs m+1,r,rt&...原创 2019-01-25 11:51:20 · 233 阅读 · 0 评论 -
P1341 无序字母对
题目乍一看就是 dfs ,拼接字母,但是数据量不一定纯 dfs 暴力就能解决,所以我们换个角度,每个相同的字母可以连在一起,我们最终是要给他们连成一个句子,那么我们把每个相同的单词看做节点,这就是个欧拉回路啊。。那么这样就好处理了,开始判断,因为一共最多 52 个字母,所以只有 52 个点,我们记录入度出度,一旦入度出现大于2的,肯定不行了,一旦入度为1的 肯定是起点或终点,如果都为偶数就是个...原创 2019-01-19 22:26:43 · 143 阅读 · 0 评论