8-2 Party Games uva1610 (贪心)】的更多相关文章

题意: 给出n个串(n为偶数): 要构造一个串,使n串中有一半小于等于它,另外一半大于它: 要求这个串长度尽量小,同时字典序小: 一开始我的优先级是放左   其实优先级是放左加一. 如 AAAA AABB 答案为AAB  按照我一开始的做法   答案为AAAA 还有两个细节  如果到L的末尾  那么放L的末尾 如果 Li为 Z  那么就不能放Z+1了 ans不可能大于L.size   因为 和L一样为最低要求值 ans不可能大于R.size   不然就比R大了   这中间一定有答案  所以根本不…
原文链接https://www.cnblogs.com/zhouzhendong/p/9074226.html 题目传送门 - Codeforces 980E 题意 $\rm Codeforces$ 真是个令人伤心的地方. 伤心的 $zzd$ 给你一个有 $n$ 个节点的树,编号为 $i$ 的节点权值为 $2^i$. 让你砍掉其中 $k$ 个节点,使得剩余的所有节点都连通,并最大化剩余节点的权值和.输出方案. $n\leq 10^6$ 题解 伤心的 $zzd$ 再一次来到了令人伤心的 $\rm…
The Frog's Games Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65768/65768 K (Java/Others)Total Submission(s): 3263    Accepted Submission(s): 1596 Problem Description The annual Games in frogs' kingdom started again. The most famous game i…
其实这个题呢,大白书上面有经典解法  题意是青蛙要跳过长为L的河,河上有n块石头,青蛙最多只能跳m次且只能跳到石头或者对面.问你青蛙可以跳的最远距离的最小值是多大 典型的最大值最小化问题,解法就是贪心二分.其实就是二分答案,再把每次二分出来的答案带入计算是否满足题意,以此来确定这个正确答案在此值的左区间还是右区间.可以这么做的依据是:对于二分出来的值x满足条件的话,则大于x(或者小于x)也满足条件,这样就得到一个单调的规律,满足二分. #include<set> #include<map…
题目:题目链接 思路:排序后处理到第一个不同的字符,贪心一下就可以了 AC代码: #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <string> #include <vector> #include <map> #include <set> #define FRER() freopen…
Description The annual Games in frogs' kingdom started again. The most famous game is the Ironfrog Triathlon. One test in the Ironfrog Triathlon is jumping. This project requires the frog athletes to jump over the river. The width of the river is L (…
题目传送门 传送点I 传送点II 传送点III 题目大意 给定一颗有$n$个点的树,$i$号点的权值是$2^{i}$要求删去$k$个点,使得剩下的点仍然连通,并且总权值和最大,问删去的所有点的编号. 其实这道题和虚树没有太大的关系,我只是提一下而已. 因为点的权值很特殊,所以相当于要求剩下序列(从大到小)的字典序最大. 然后过程就比较显然了.从大到小枚举点,判断能否保留它(计算加入它后,新的树的点数有没有超过限制).保留它是指和已经被保留的点连通. 这个相当于使得一些关键点连通,然后求出总点数.…
链接 大意: 给定$n$节点树, 求删除$k$个节点, 使得删除后还为树, 且剩余点$\sum{2^i}$尽量大 维护一个集合$S$, 每次尽量添加最大的点即可 这样的话需要支持求点到集合的最短距离, 直接用线段树进行子树更新就行了 就是说每次添加一个点$x$, 显然只会影响到$x$子树的距离 用线段树维护每个点在$S$中的祖先的最大深度$v$, 即用$dep[x]$更新$x$子树 则一个点$y$到$S$的最短距离就为$D=dep[y]-v[y]$ 若剩余点大于等于$D$, 说明可以添加$y$,…
题目大意:给出一系列字符串,构造出一个字符串大于等于其中的一半,小于另一半. 题目分析:取大小为中间的两个a,b(a<b).实际上就是找出第一个小于b的同时大于等于a的字符串,直接构造即可.要注意细节. 代码如下: # include<iostream> # include<cstdio> # include<string> # include<cstring> # include<algorithm> using namespace st…
细节值得注意 注意vector<string>是可以直接sort的! #include <iostream> #include <string> #include <vector> #include <algorithm> using namespace std; vector<string> str; int main(){ int n; while(cin>>n&& n){ str.clear(); s…