随笔分类 -  妙啊

[校内训练20_05_26]AB
摘要:1.给出N*M的循环平面上的k对点,每对点可以按四个方向的某个方向连成矩形,问交的最大值。 显然可以将每一维分开考虑。对于一维问题,数轴上的某一个点能作为交的条件是惟一的,将这些条件哈希起来统计一下即可。 O(klogk) 1 #include<bits/stdc++.h> 2 #define p 阅读全文
posted @ 2020-05-26 06:26 GreenDuck 阅读(165) 评论(0) 推荐(0)
[家里训练20_03_01]ABC
摘要:1.不可做题。 求出满足 $$\sum_{i=1}^{m}{x_i}\leq s$$ 对任意$$i\leq m,x_i>0$$ 对所有$$i,x_i\leq t$$ 的解数 答案对10^9+7取模 m-n<=1000,t<=100000,m<=1E9,nt<=s<=1E18 2.树上LIS:一棵树, 阅读全文
posted @ 2020-03-10 16:47 GreenDuck 阅读(162) 评论(0) 推荐(0)
[家里训练20_02_12]ABC
摘要:A:CF1119H加强版,k<=10。 不太想解释。 1 #define mod 998244353 2 #define G2 499122177 3 #include<bits/stdc++.h> 4 using namespace std; 5 typedef long long int ll; 阅读全文
posted @ 2020-02-12 20:36 GreenDuck 阅读(179) 评论(0) 推荐(0)
[校内训练20_01_21]ABC
摘要:1.西瓜恒等式: $$\sum_{P.is.a.permutation}{\frac{1}{A[P[1]]×(A[P[1]]+A[P[2]])×...×(A[P[1]]+...+A[P[n]])}}=\frac{1}{A[1]×A[2]×...×A[n]}$$ 2.西瓜定理: 对于任意am+4≡a( 阅读全文
posted @ 2020-02-02 17:18 GreenDuck 阅读(178) 评论(0) 推荐(0)
[校内训练20_01_22]ABC
摘要:1.给出序列A,求序列B,使得bi|ai,lcm(b1,b2,...,bn)=lcm(a1,a2,...,an)且字典序最小。 可以发现,对于某个质数p,它有一个最大的次数k,将pk放在尽可能靠后且能够整除原数组中的数字的位置上,便是答案。 虽然数字的值域达到1E18,但我们只需要知道每个数1~1E 阅读全文
posted @ 2020-02-02 17:15 GreenDuck 阅读(204) 评论(0) 推荐(0)
TRICKS
该文被密码保护。
posted @ 2020-01-31 16:13 GreenDuck 阅读(0) 评论(0) 推荐(0)
[校内训练20_01_17]ABC
摘要:1.平面上每次加入直角边平行于坐标轴的等腰直角三角形,每次询问某个点被覆盖了多少次。 大常数算法:O(nlog^2) 1 #include<bits/stdc++.h> 2 using namespace std; 3 const int maxn=3E5+5; 4 int n,q; 5 inlin 阅读全文
posted @ 2020-01-17 14:22 GreenDuck 阅读(164) 评论(0) 推荐(0)
[校内训练19_09_10]sort
摘要:题意 给一个非负整数序列,每次问能否异或上一个正整数使得所有的数单调不减。如果能,输出最小的x,否则输出-1。单点修改。多测。要求最多一个log。 思考 只要考虑相邻的两个数。找到这两个数最高的不同的一位,那么只要考虑是一定要异或或者是一定不要异或。 代码 1 #include<bits/stdc+ 阅读全文
posted @ 2019-09-20 09:24 GreenDuck 阅读(192) 评论(0) 推荐(0)
[校内训练19_09_06]排序
摘要:题意 一个这样的算法: 现在你cnt和原始数组a,求cnt步数后a的结果。注意a是n排列。 $1 \leq n \leq 10^6,1 \leq cnt \leq \frac{n(n-1)}{2}$ 思考 对于某个i,如果j从i+1循环到了n,那么含义就是将i~n中最小的数放到第i位上,剩下的访问过 阅读全文
posted @ 2019-09-20 09:00 GreenDuck 阅读(138) 评论(0) 推荐(0)
[校内训练19_09_06]直径
摘要:题意 构造一棵树,让它有k条直径。边权都是非负整数,要求点数不能超过5000。 $k \leq 5000000$ 思考 让树根底下分别挂着长度为a,b,c的边权为0的链,然后将链的某一端向根连一条边权为1的边,这样共有ab+ac+bc条直径。可以发现,对于数据范围内的k,可以很快地找到这样的a,b, 阅读全文
posted @ 2019-09-20 08:47 GreenDuck 阅读(163) 评论(0) 推荐(0)
[校内训练19_09_05]ca
摘要:题意 对于任意1 ≤k≤N,求有多少个左右区分的恰有k个叶子节点的二叉树,满足对于每个节点要么没有叶子节点要么有两个节点,同时不存在一个叶子节点,使得根到它的路径上有不少于M条向左的边。 答案对998244353取模。 思考 将问题放到平面上考虑。起初在原点,我们考虑树的dfs序,每次向左走一次,得 阅读全文
posted @ 2019-09-20 08:37 GreenDuck 阅读(312) 评论(0) 推荐(1)
[校内训练19_09_02]不同的缩写
摘要:题意 给n个字符串,要求给每个字符串选一个子串(可以不连续),并且子串互不相同。求子串最大长度的最小值,并给出一个方案。 $n \leq 100,|s_i| \leq 100$。 思考 鸽了 阅读全文
posted @ 2019-09-20 07:45 GreenDuck 阅读(150) 评论(0) 推荐(0)
[校内训练19_09_03]c Huge Counting
摘要:题意 有一个定义在 k 维非负整点上的函数:$f(x_1,x_2,...,x_k):N_{0}^{k}->\{0,1\}$ ,定义方法如下: 若存在$j∈[1,k],x_j=0$,则$f(x_1,x_2,...,x_k)=0$ 若对$j∈[1,k]$都有$x_j=1$则$f(x_1,x_2,..., 阅读全文
posted @ 2019-09-20 07:40 GreenDuck 阅读(251) 评论(0) 推荐(0)
[校内训练19_09_02]C
摘要:题意 给出一棵N 个节点的树,树上的每个节点都有一个权值$a_i$。 有Q 次询问,每次在树上选中两个点u, v,考虑所有在简单路径u, v 上(包括u, v)的点构成的集合S。 求$\sum_{w∈S}{a_w or dist(u,w)}$ 其中dist(u,w) 为简单路径u,w 上的边数,or 阅读全文
posted @ 2019-09-20 06:55 GreenDuck 阅读(238) 评论(0) 推荐(0)
[HNOI2014]道路堵塞
摘要:这是一篇没有代码的博客。目的是在全是玄学复杂度的算法中留下有复杂度保证的算法。 原文摘自千年之狐_天才 : 靠谱做法应该是A+线段树。用A跑k短路,第一次跑到的一定是所给最短路,其次跑到的所有最短路将答案更新。如果只是单纯这样的话,是不行的,因为所有路径都会被更新一次。但是我们不难发现一个信息,假设 阅读全文
posted @ 2019-09-13 15:23 GreenDuck 阅读(256) 评论(0) 推荐(0)
[CF526G]Spiders Evil Plan
摘要:题意 https://codeforces.com/problemset/problem/526/G 思考 先考虑只有一次询问。如果我们选择了k条路径,那么就会有2k个叶子节点;反过来,如果选择了2k个叶子节点,总存在一种方案使得组成的k条路径形成一个联通块。因为若还没有连通块,总可以交换两条不交叉 阅读全文
posted @ 2019-08-27 09:43 GreenDuck 阅读(331) 评论(0) 推荐(0)
[CCPC2019 ONLINE]H Fishing Master
摘要:题意 http://acm.hdu.edu.cn/showproblem.php?pid=6709 思考 先考虑所有鱼的烹饪时间小于k的情况。将T从大到小排序后,煮一条鱼相当于将其时间补齐至k。 由于鱼的烹饪时间会大于等于k,那么,最优解一定不会出现鱼不够煮的情况。在煮鱼期间,可以钓到$\frac{ 阅读全文
posted @ 2019-08-26 09:08 GreenDuck 阅读(258) 评论(0) 推荐(0)
19_08_26校内训练[Max]
摘要:题意 求$max_{l \leq r}{\{min{\{a_l,a_{l+1},...,a_r\}}*(r-l+1)\}}$ 思考 分治,考虑一个区间跨过某个点的贡献即可。 代码 1 #include<bits/stdc++.h> 2 using namespace std; 3 typedef l 阅读全文
posted @ 2019-08-26 08:04 GreenDuck 阅读(135) 评论(0) 推荐(0)
[CF1037F]Maximum Reduction
摘要:题意 https://codeforces.com/contest/1037/problem/F 思考 摘自一种比较有趣的做法。我们对序列进行分治,每次统计跨过mid的区间的贡献。其正确性是保证的:每个区间只会对应到一个mid。对于左区间,算出它的后缀最大值。 接下来从左到右枚举右区间的每一个点。对 阅读全文
posted @ 2019-08-25 21:10 GreenDuck 阅读(253) 评论(0) 推荐(0)
[CF1192B]动态直径
摘要:题意 给一棵固定形态的树,边有边权,每次修改一条边权,在线求出修改后树的直径。 思考 写出树的全dfs序。生成方式为:每当一个点进栈或入栈时,记录它的编号。 考虑这个dfs序上两点之间的距离。设某个节点在dfs序中第一次出现的位置为$where_i$,第i个位置的节点为$what_i$两个点分别为u 阅读全文
posted @ 2019-08-25 20:49 GreenDuck 阅读(780) 评论(0) 推荐(0)