CodeForces - 965E Short Code】的更多相关文章

Short Code 我的想法是建出字典树, 然后让后面节点最多的点优先向上移到不能移为止, 然后gg. 正确做法是对于当前的节点如果没有被占, 那么从它的子树中选出一个深度最大的点换到当前位置. 用set启发式合并维护一下. #include<bits/stdc++.h> #define LL long long #define fi first #define se second #define mk make_pair #define PLL pair<LL, LL> #de…
Discription Arkady's code contains nn variables. Each variable has a unique name consisting of lowercase English letters only. One day Arkady decided to shorten his code. He wants to replace each variable name with its non-empty prefix so that these…
E. Short Code time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output Arkady's code contains nn variables. Each variable has a unique name consisting of lowercase English letters only. One day Arka…
[Codeforces 1197E]Culture Code(线段树优化建图+DAG上最短路) 题面 有n个空心物品,每个物品有外部体积\(out_i\)和内部体积\(in_i\),如果\(in_i> out_j\),那么j就可以套在i里面.现在我们要选出n个物品的一个子集,这个子集内的k个物品全部套在一起,且剩下的物品都无法添加到这个子集中(没有空间塞进去).定义浪费的空间为子集中空心的部分,即\(in_{i_1} + (in_{i_2} - out_{i_1}) + (in_{i_3} -…
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 先建立一棵字典树. 显然,某一些节点上会被打上标记. 问题就转化成求所有标记的深度的和的最小值了. (标记可以上移,但是不能在同一位置 则我们用树形动规的方法. 从底往上递归处理. 考虑以x为根的一棵子树. 如果这个节点被打上了标记. 那么就直接将答案累加上这个节点的深度. 如果没有打上标记. 那么就把这个子树下面某个深度最高的点移动到这个位置上来. 显然这样贪心做是最优的. 用multiset维护某个子树下面的深度最大值. 然…
http://codeforces.com/problemset/problem/543/A 题目大意:n个人,一共要写m行程序,每个程序员每行出现的bug数为ai,要求整个程序出现的bug数不超过b的方案数. 思路:f[i][j]代表第m行,j个bug的方案数,n^3转移 #include<cstdio> #include<cmath> #include<iostream> #include<algorithm> #include<cstring&g…
有n个程序,这n个程序运作产生m行代码,但是每个程序产生的BUG总和不能超过b, 给出每个程序产生的代码,每行会产生ai个BUG,问在总BUG不超过b的情况下, 我们有几种选择方法思路:看懂了题意之后就是一个完全背包题了 定义dp[ i ][ j ][ k ] 表示前 i 个程序员,已经写了 j 行代码, 已经产生了 k 个 bugs . 根据题意,得知第 i 个程序员会写 r 行代码,那么相当于 dp[ i ][ j ][ k ] += dp[i - 1][j - r][k - ra[ i ]…
参考自:https://www.cnblogs.com/ECJTUACM-873284962/p/6423483.html B. Code For 1 time limit per test:2 seconds memory limit per test:256 megabytes input:standard input output:standard output Jon fought bravely to rescue the wildlings who were attacked by…
[题目链接]:http://codeforces.com/contest/768/problem/B [题意] 一开始给你一个数字n; 让你用这个数字n根据一定的规则生成序列; (如果新生成的序列里面还有大于1的数字,就一直按着上面的规则重复生成); 最后让你统计在一个区间范围内的1的数目; [题解] 一个树形的样子; 算出总共1的数目(整棵树的叶子节点上和节点的余数上) 这个挺好算的; 然后在从下往上走的时候记录每个节点的子树的size; 和子树所含的1的个数; 不 应该先算出总的size;…
[题目链接]:http://codeforces.com/contest/765/problem/B [题意] 让你把每个变量都依次替换成a,b,c,-.d这些字母; 且要按顺序先用a再用b-.c.d.e-.z [题解] 模拟一下这个过程就好了; 每次看看最左边那个字母是什么(当然之前已经模拟过的除外); 看看是不是当前枚举到的字母; 不是的话就错误; [完整代码] #include <bits/stdc++.h> using namespace std; #define lson l,m,r…