04 2020 档案

摘要:传送门:https://atcoder.jp/contests/abc163/tasks/abc163_f 题目大意:一颗n个节点的树,每个节点有一个颜色。求对每一个颜色,至少经过一个该颜色节点的简单路径数量。 分析:虽然有O(n)的做法,但是这里还是贴一下虚树的做法。虚树的做法大概是:对每一种颜色 阅读全文
posted @ 2020-04-25 16:52 John_Ran 阅读(325) 评论(0) 推荐(0) 编辑
摘要:传送门:https://www.luogu.com.cn/problem/P2495 题意:给你一颗n个点的树,现在的情况是每条边有边权,现在要选取一些点,通过删除一些边的方式使得这些点与1号节点失去连通性,删除一条边的代价是边权大小。有多次询问,保证多次询问的总的点数与n同阶。 分析:直接去跑树形 阅读全文
posted @ 2020-04-24 14:36 John_Ran 阅读(149) 评论(0) 推荐(0) 编辑
摘要:传送门:https://ac.nowcoder.com/acm/contest/4853/D 题目大意:给你a,b,c,k。求一个线性方程组a*x+b*y+c*z=k。 分析:令p=a*x+b*y,则原题有解的条件变成p<=k,且(k-p)%c==0;那么我们就可以对p%c进行分类,显然,对于p%c 阅读全文
posted @ 2020-04-23 23:24 John_Ran 阅读(149) 评论(0) 推荐(0) 编辑
摘要:A. 给你一个n,解方程,(1+2+4+...+2^(k-1))*x=n,保证k>1。 枚举k,可以整除时输出一个数。 #include<bits/stdc++.h> #define all(x) x.begin(),x.end() #define fi first #define sd secon 阅读全文
posted @ 2020-04-22 19:16 John_Ran 阅读(256) 评论(0) 推荐(0) 编辑
摘要:A. 给你n个不超过1e18的数字,n的数量级是1e6。从中选出两个数,做无进位加法,问最大的数能多大。 sol:将每个数字补成相同长度,除了第一个数字外,每一个数只需要在字典树上贪心的去跑就行了。查询完之后,将这个数字插入到字典树中。 #include<bits/stdc++.h> #define 阅读全文
posted @ 2020-04-17 14:36 John_Ran 阅读(217) 评论(0) 推荐(0) 编辑
摘要:A. 将一个数拆成两个,两个数不等,求拆分的方法数。 奇数输出n/2,偶数输出n/2-1即可通过。 #include<bits/stdc++.h> #define all(x) x.begin(),x.end() #define fi first #define sd second #define 阅读全文
posted @ 2020-04-14 23:49 John_Ran 阅读(197) 评论(0) 推荐(0) 编辑
摘要:A. Lucky 7 签到。 #include<bits/stdc++.h> #define all(x) x.begin(),x.end() #define fi first #define sd second #define lson (nd<<1) #define rson (nd+nd+1) 阅读全文
posted @ 2020-04-13 11:51 John_Ran 阅读(280) 评论(0) 推荐(0) 编辑