Phoenix and Distribution(字典序贪心)】的更多相关文章

\(给定一串字母,分成k份,使得最大字典序最小.(字母可以任意组合)\) \(------------------------------issue~------------------------\) \(首先肯定先对字母排序,然后往k个盒子都丢一个字母(因为不能为空)\) \(那么接下来,就一定能够要想清楚了......\) \(\color{Red}Ⅰ.当接下来的字母都相等时,就均分到k个盒子里,因为这时候影响字典序的只是长度\) \(\color{Purple}{Ⅱ.当接下来的字母不全相…
Hdu6586 字符串字典序贪心 题意 给出一个只包含26个字符的字符串(|S|<=1e5),要求从中取出长度为k的字典序最小的组序列,满足所给的26个字母的限制条件,例如\([l_i,r_i]\),表示i字符的数量关系限制 分析 1.对于构造字典序最小的序列,通常是一位一位构造的. 2.首先题目有限制条件,所以我们考虑一下什么条件时才满足限制条件. 我们从a开始取,每次碰到a,如果满足限制条件,我们肯定取上,这样才能满足字典序最小,那么限制条件是什么?什么时候停止取a转向去取b,我们对此进行思…
题目链接 Mike and distribution 题目意思很简单,给出$a_{i}$和$b_{i}$,我们需要在这$n$个数中挑选最多$n/2+1$个,使得挑选出来的 $p_{1}$,$p_{2}$,$p_{3}$,...,$p_{m}$满足 $a_{p1}+a_{p2}+a_{p3}+...+a_{p_{m}}>a_{1}+a_{2}+a_{3}+...+a_{n}$ $b_{p1}+b_{p2}+b_{p3}+...+b_{p_{m}}>b_{1}+b_{2}+b_{3}+...+b_…
题目链接:http://codeforces.com/contest/798/problem/D 题意:给出两串长度为n的数组a,b,然后要求长度小于等于n/2+1的p数组是的以p为下表a1-ap的和乘以2 大于a数组全部数的总和,b也是同理. 题解:一看到这题一般会想到贪心,由于是二维的贪心,所以一定要想让一维有序,所以可以按照a先排一下序. 得到排序后的数组a',先加上a'然后在依次两两选择b大的加上. #include <iostream> #include <cstring>…
降智好题 前面随机部分按照题意模拟,然后字典序贪心,也就是记录每个值的位置从1~nm依次看能不能取,能取的话更新行的取值范围(它上面的行一定取的列小于等于这个数取的列,下面行大于等于) #include<iostream> #include<cstdio> using namespace std; const int N=5005; int n,m,q,len,p[N*N],id[N*N],l[N],r[N]; long long x,a,b,c,d; int read() { i…
AC代码连接 A Phoenix and Balance 显而易见,将前\(\frac{n}{2}-1\)个和最后1个分为1组,剩下的1组即为最优方案. B Phoenix and Science 这题直接构造. 设\(a\)中不重复的值的个数为\(cnt\). 如果\(cnt>k\)无解. 如果\(cnt < k\)那么将其补到k:如果\(cnt=k\)则不操作:然后按小到大输出所有不重复的值,重复\(n\)次. C Phoenix and Distribution 分类讨论一下完事了. 将…
Contest Info Practice Link Solved A B C D E F 4/6 O O Ø  Ø     O 在比赛中通过 Ø 赛后通过 ! 尝试了但是失败了 - 没有尝试 Solutions C.Phoenix and Distribution 题意: 将字符串 $s$ 分为 $k$ 个非空串,找出使得$ k$ 个非空串中字典序最大的字符串字典序最小的方案 思路: 求最大值的最小值,那么对某种分配来说,求字典序最大时要保证$k$个序列每个都尽可能小,这样最后求出来的最小值才…
试题描述 LZJ和XJR是一对好朋友. 他们现在要做一个由方块构成的长条工艺品.但是方块现在是乱的,而且由于机器的要求,他们只能做到把这个工艺品最左边的方块放到最右边. 他们想,在仅这一个操作下,最漂亮的工艺品能多漂亮. 两个工艺品美观的比较方法是,从头开始比较,如果第i个位置上方块不一样那么谁的瑕疵度小,那么谁就更漂亮,如果一样那么继续比较第i+1个方块.如果全都一样,那么这两个工艺品就一样漂亮. 输入 第二行为一个字符串S,S的第i位就是该位置方块的瑕疵值. 输出 输出一个字符串,代表最美观…
hdu1814 Peaceful Commission 题意:2-sat裸题,打印字典序最小的 我写了三个 染色做法,正解 scc做法,不管字典序 scc做法,错误的字典序贪心 #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <queue> using namespace std; const int N = 2e4+5,…
从这里开始 又考炸了,sad.....明年应该在准备高考了,考完把坑填了好了. 一半题都被卡常,qswl.[我汤姆要报警.jpg] dfs 怎么这么慢呀,sad..... i7 牛逼! 写的比较混乱,可以将就着看就看吧. Day 1 Problem A 考虑求出最高位是 1 还是 0,可以推出剩下的 $n - 1$ 位二进制数在 $n - 1$ 格雷码的排名. #include <bits/stdc++.h> using namespace std; typedef bool boolean;…
https://vjudge.net/problem/POJ-3617 这类字符串处理字典序问题经常用到贪心, 每决定输出一个字符之前,都要前后i++,j--逐个比大小,直至比出为止. #include<iostream> #include<cstdio> #include<queue> #include<cstring> #include<algorithm> #include<cmath> #include<set>…
链接:https://www.nowcoder.com/acm/contest/84/A 来源:牛客网 [出处]:http://codeforces.com/contest/196/problem/A [Codeforces Round #124 (Div. 1) A] 题目描述 给定字符串s,s只包含小写字母,请求出字典序最大的子序列. 子序列:https://en.wikipedia.org/wiki/Subsequence 字典序:https://en.wikipedia.org/wiki…
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1640 题意: 给你一个长度为n的字符串. 你可以将原串的首字母或尾字母移动到新串的末尾. 让你输出字典序最小的新串. 题解: 贪心. 三种情况: (1)c[head] < c[tail] 输出c[head],head++. (2)c[head] > c[tail] 输出c[tail],tail--. (3)c[head] == c[tail] 选head和tail并不等价. 比如原串为…
LINK:Phoenix and Memory 这场比赛标题好评 都是以凤凰这个单词开头的 有凤来仪吧. 其实和Hall定理关系不大. 不过这个定理有的时候会由于 先简述一下. 对于一张二分图 左边集合为S 右边集合为T 那么有完备匹配时 最大匹配数为 min(|S|,|T|). 这里不妨假设|S|<=|T|. 若存在完备匹配那么对于任意集合\(s\in S\)都有s连出的边>=|s|. 这个定理是一张二分图具有完备匹配的充分必要条件. 先证明必要性:如果不存在 那么一定有点无法匹配到. 再证…
原题链接:http://poj.org/problem?id=3617 问题梗概:给定长度为 的字符串 , 要构造一个长度为 的字符串 .起初, 是一个空串,随后反复进行下列任意操作. 从 的头部删除一个字符,加到 的尾部. 从 的尾部删除一个字符,加到 的尾部. 目的是要构造字典序尽可能小的字符串 .     限制条件: 字符串 只包含大写英文字母 输出的字符串每 80 个字符进行一次换行 字典序是指从前到后比较两个字符串大小的方法.首先比较第 1 个字符,如果不同则第 1 个字符较小的字符串…
D. Dense Subsequence time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output You are given a string s, consisting of lowercase English letters, and the integer m. One should choose some symbols fr…
http://codeforces.com/contest/798/problem/D http://blog.csdn.net/yasola/article/details/70477816 对于二维的贪心我们可以先让它变成其中一维有序,这样只需要重点考虑另一维,就会简单很多. 首先,对于题目要求的选择元素之和两倍大与所有元素之和,我们可以转化为选择元素之和大于剩下的.然后我们可以将下标按照a从大到小排序.然后选择第一个,之后每两个一组,选择b大的一个,如果n是偶数再选择最后一个. 至于这样写…
题目链接 TAG: 这是我近期做过最棒的一道贪心思维题,不容易想到,想到就出乎意料. 题意:给定两个含有N个正整数的数组a和b,让你输出一个数字k ,要求k不大于n/2+1,并且输出k个整数,范围为1~n的不重复数字, 要求这k个数字为下标的对应a和b中的数的和乘以2的值  分别大于a和b 的数组总和. 思路:首先对a进行降序排序,然后输出最大值的下标,随后进行幅度为2的枚举,对排序后的a2~an进行选择性输出下标,(注意,排序的时候用一个新数组开两个变量,一个index,一个v进行排序,可以用…
Mike has always been thinking about the harshness of social inequality. He's so obsessed with it that sometimes it even affects him while solving problems. At the moment, Mike has two sequences of positive integers A = [a1, a2, ..., an] and B = [b1, …
题目描述 Best Cow Line (POJ 3617) 给定长度为N的字符串S,要构造一个长度为N字符串T.T是一个空串,反复执行下列任意操作: 从S的头部删除一个字符,加到T的尾部: 从S的尾部删除一个字符,加到T的尾部: 目标是要构造字典序尽可能小的字符串T. 限制条件 1 <= N <= 2000 字符串 S 只包含大写英文字母 样例输入 N = 6 S = "ACDBCB" 样例输出 ABCBCD (如下图所示进行操作) 思路分析 不断取S的开头和结尾中较小的一…
Best Cow Line Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 30684   Accepted: 8185 Description FJ is about to take his N (1 ≤ N ≤ 2,000) cows to the annual"Farmer of the Year" competition. In this contest every farmer arranges his…
我感觉这道题挺神的~ 假设 $a[i]=b[i]$,那么我们可以将 $a$ 降序排序,然后你发现只要你按照 $1,3,5......n$ 这么取一定是合法的. 而我们发现 $2$ 比取 $3$ 优,取 $4$ 还比取 $5$ 优. 所以,我们可以这样: 强制性取第一个元素,然后其余 $\frac{n}{2}$ 个元素每相邻两个依次考虑,不论拿哪个都是合法的. 这样做有什么好处呢?由于 $a$ 可以这样随便拿,于是每一次就取更大的 $b$ 就好了. 所以,我们按照 $a$ 从大到小排一个序,然后依…
题目链接:http://codeforces.com/problemset/problem/798/D 题目大意:从长度为n的序列A和序列B中分别选出k个下表相同的数要求,设这两个序列中k个数和分别为ta,tb,两个序列总和分别为asum,bsum.要求ta*2>asum&&tb*2>bsum,k<=n/2+1. 解题思路:首先,肯定要选n/2+1的吧.我们把序列A当成第一层,序列B当成第二层.第一层:按从大到小严格排好.在第二层上:每两个取大的那一个,那最后的和肯定&g…
原题链接:Best Cow Line 1. 问题描述 2. 输入 6 A C D B C B 3. 输出 ABCBCD 4.思路分析 不断地取原字符串 S 中开头和末尾比较小的字符串放到 T 的末尾 特殊情况:S 的开头和末尾一样,先放开头的还是结尾的字母.解决办法:将 S 反序排列得到 $S^{'}$ ,与 S 比较,哪个小,就放哪个 5. 代码 #include <iostream>#include<cstring> using namespace std; int n,i,j…
A /*Huyyt*/ #include<bits/stdc++.h> #define mem(a,b) memset(a,b,sizeof(a)) #define pb push_back using namespace std; typedef long long ll; typedef unsigned long long ull; const ll LLmaxn = 2e18; int main() { string a; cin >> a; , c=; ; i <…
\(给定序列长n的数组和k.完美数组的定义是数组中每一个连续k项的子段和为定值\) \(现在要求插入一些数使得数组满足条件,输出你构造的新数列.\) \(\color{Red}{---------------------分割线!!hehehe----------------------}\) \(这题其实很友好了,在原题中一直提醒你不必构造最短的数列!!!这意味着有方法可以很简单的构造出来.\) \(当数组中数的种类大于k是一定不能构造的,那我们现在考虑小于k的情况.(下面的数组a是假定构造完的…
个人主页:http://www.linbingdong.com 简书地址:http://www.jianshu.com/users/6cb45a00b49c/latest_articles 网上关于Phoenix的资料寥寥无几,中文资料更是几乎没有.本人详细阅读Phoenix官网,整理成此篇中文文档,供后人参考.如有翻译错误的地方,请批评指出. 1. Phoenix定义 Phoenix最早是saleforce的一个开源项目,后来成为Apache基金的顶级项目. Phoenix是构建在HBase上…
1692: [Usaco2007 Dec]队列变换 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 1383  Solved: 582[Submit][Status][Discuss] Description FJ打算带他的N(1 <= N <= 30,000)头奶牛去参加一年一度的“全美农场主大奖赛”.在这场比赛中,每个参赛者都必须让他的奶牛排成一列,然后领她们从裁判席前依次走过. 今年,竞赛委员会在接受队伍报名时,采用了一种新的登记规则:他们把所…
题目链接:http://codeforces.com/contest/724/problem/D 题意:给定一个字符串和一个数字m,选取一个一个子序列s,使得对于字符串中任意长度为m的子序列都至少含有s的位置(不是字符),求所有s在sort后字典序最小的那个字符串. 思路:对字符排序后,从最后一个开始贪心,判断删除该字符后是否符和题意,当删除后不符合题意时,贪心到该相同字符对应的第一个位置为止. 比如对于test3来说 排序后为a a a b b b b c c c c 删除到(b,6)时发现不…
1046: [HAOI2007]上升序列 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 3723  Solved: 1271[Submit][Status][Discuss] Description 对于一个给定的S={a1,a2,a3,…,an},若有P={ax1,ax2,ax3,…,axm},满足(x1 < x2 < … < xm)且( ax1 < ax2 < … < axm).那么就称P为S的一个上升序列.如果有多…