2020/5/8—cf,我裂开来
呜呜呜我爆零了呜呜呜ljll
嗯T1T2防爆零的没了呜呜呜
在此纪念可怜的yjz大佬21发AC
太惨了(逃
先来说说我们都有些啥题目吧。。。
T1

嗯,裂开了,当场裂开
我一看!桶排!
然后实现,嗯?嗯!嗯???不对啊,这怎么搞???
第一发

嗯!输出错了!改!
第二发

我%^&*()_)(*&^
嗯。。。
我先调一调awa
嗯!找到了!估计能A了!
这wtm。。。
开T2吧。。。
T2

嗯!大水题!
但是,我仔细一看!
正好n个?????
这。。。
瞬间就想到了一个不需要证明的贪心。。。
然后。。。
标准结局
我太难了
仔细一想,发现排个序就好了。。。
然后又调了亿调,就在比赛结束后一分钟的时候A了
这tm的。。。
我接下来看了看T3。。。

就是一个dp。。。(第一想法)
这。。。
不行啊。
那就试试建图!2-sat!(第二想法)
这条件!我吐了,根本不行。。。
第三想法:炸了
然后一想。。。这绝对是个dp。。。
推了推式子,没搞出来。。。
这就是全部的心路历程。。。
我太难了 唉,开始写正解
T1
其实吧,就是一个排序能解决的事情,但是因为那个k的迷惑,我傻了。
想想排序,其实只要保证每一个字典序的接近就能找到最大值中的最小值了
直接构造 其实就是个贪心。。。
排个序

来自oi-wiki 这就是排序贪心的常见的情况之一
第一种情况
如果s[1]==s[k]
排序完了就能发现这个k与1之间是有联系的,只要他们不相同,因为排序的原因,就能够直接的说明在大的字符串就是s[k]。
问为什么的话,其实就是因为如果我在一个字符串中放这个字符,或者是将一类的字符放到其他的k个字符串中,易证,这个一定是可以在这种情况中最大的。
然后是另一种情况。
如果s[k+1]!=s[n]
那么在这种情况下,k个字符串中的第一个字符都是一样的。字典序的大小完全在于后面的字符串
为了保证这是一个最大的字符串,我不得不把下一个字符放在这个字符串上面。
只有这样,才能保证这个是最大中的最小。为了最大,我们一定要在他的后面加入一个字符,但是为了最小,又只能加入全部的字符。
比如对于
5 2
baacb
这个样例就是这种情况。排序完是aabbc,最终的答案是abbc。
最开始,我很疑惑。。。因为我觉得abc<abbc,然后我就傻了。。。
但是在这种情况中,因为必须加入一个字符并最小,所以就会选择加入s[k+1].
这个是很显然的。但是,之后为了使它继续保持在最大的情况下,我们不得不把全部比第一个字符大的字符加入它。
因为如果有一个字符串得到了之后的字符,它就不会再这种情况中继续保持最大了。像abb和ac,ac就会大于abb了。
因为大的字符越靠前,这个字符串的字典序就会越大,所以我们就要尽可能的把大的字符往后靠,也就是把小的字符往前填。
所以就可以得到了awa
第三种情况
就是s[i]==s[k]&&s[k+1]==s[k]
那就之间把第一个输出了,然后在选择几个字符输出就好了啊。。。这是最简单的。
附上代码
#include<bits/stdc++.h>
#define ll long long
using namespace std;
char s[1000001];
int k,n,T;
inline ll read()
{
char c=getchar();ll a=0,b=1;
for(;c<'0'||c>'9';c=getchar())if(c=='-')b=-1;
for(;c>='0'&&c<='9';c=getchar())a=a*10+c-48;
return a*b;
}
int main()
{
// freopen(".in","r",stdin);
// freopen(".out","w",stdout);
T=read();
while(T--)
{
cin>>n>>k;
scanf("%s",s+1);
sort(s+1,s+n+1);
if(s[k]!=s[1])
{
printf("%c\n",s[k]);
}
else
if(s[n]!=s[k+1])
{
printf("%c%s\n",s[1],s+k+1);
}
else
{
cout<<s[1];
for(int i=1;i<=(n-1)/k;i++)
{
printf("%c",s[k+1]);
}
cout<<endl;
}
}
return 0;
}
就是这么简单
T2

一看T2,无解输出-1,嗯,要记得,嗯。
然鹅!根本就没有无解的情况。。。极其可怕awa,来自cf的一波误导awa
转载于luogu的题解
要达到最少次数,贪心的想每次肯定加上最多的量 x * 2,然而每次最少加上变化过的x,所以最后一次加的数可能小于当前的x,但是没关系,可以让这次加上的那个小于x的数尽可能的往前移直到前一个数小于等于它,然后按照顺序求一遍答案即可。
这题比T1简单。。。
溜了,附上代码
void solve() {
int n;
scanf("%d", &n);
vector<int> v;
int x = 1;
while(n > 0) {
if(n > x) v.push_back(x);
else v.push_back(n);
n -= x;
x <<= 1;
}
sort(v.begin(), v.end());
printf("%d\n", v.size() - 1);
for(int i = 1; i < v.size(); i++) {
printf("%d ", v[i] - v[i - 1]);
}
puts("");
}
T2就好了。。
T3还没写awa
qwq
2020/5/8—cf,我裂开来的更多相关文章
- php和java的一些比较
现在市场上的电子商务软件基本上可归结为两大阵营,即PHP阵营和Java阵营.但对接触电子商务不久的用户来说,看到的往往只是它们的表相,只是明显的价格差异,却很难看出它们之间的实际差异.其实,PHP+ ...
- [UOJ#334][NOIP2017]列队 平衡树/线段树/树状数组
题目链接 题意不说了,一辈子也忘不掉 解法1.平衡树 这题就是平衡树裸题,每一行开一棵维护前 \(m-1\) 个,最后一列单独维护,因为很多人没有用到,所以平衡树每个节点是一个区间(pair),分裂时 ...
- python中minepy包的下载
minepy包的下载 今天在做机器学习的时候,需要使用到互信息的有关内容,而python包下正好有处理互信息的包,想直接下一个,没想到遇到了不少问题: 基本指令很简单了: pip install mi ...
- 集训DP复习整理
DP复习 集训%你赛2:测绘(审题DP) 经过2000+个小时的努力终于把这道题做出来的蒟蒻通 分析: 这道题我一直没做出来的原因就是因为我太蒟了题面看不懂,题面读懂了,其实不是特别难. 题目翻译: ...
- 我的获奖记录及 Important Dates in OI
逊逊的获奖记录/ruo(真的没拿过啥奖,并且大部分都集中在初三阶段,即 2020-2021 赛季): NOIP2018 pj,1=,无游记 CSP-S2019,1=,无游记 APIO2020,Ag,游 ...
- 平衡树 & LCT
1. 非旋 Treap(FHQ Treap) 1.1. 算法简介 FHQ Treap 的功能非常强大.它涵盖了 Treap 几乎所有的功能 所以我非常后悔学了 Treap,浪费时间. FHQ 的核心思 ...
- 【cf比赛记录】Codeforces Round #606 (Div. 2, based on Technocup 2020 Elimination Round 4)
比赛传送门 只能说当晚状态不佳吧,有点头疼感冒的症状.也跟脑子没转过来有关系,A题最后一步爆搜没能立即想出来,B题搜索没有用好STL,C题也因为前面两题弄崩了心态,最后,果然掉分了. A:简单数学 B ...
- CF Grakn Forces 2020 1408E Avoid Rainbow Cycles(最小生成树)
1408E Avoid Rainbow Cycles 概述 非常有趣的题目(指解法,不难,但很难想) 非常崇拜300iq,今天想做一套div1时看见了他出的这套题Grakn Forces 2020,就 ...
- CF Hello 2020 E.New Year and Castle Construction
E.New Year and Castle Construction 题意 给定n个点,对于每个点\(p\),求出4-point 子集(该子集有四个点,并且围成的圈包含\(p\))的个数 数据给的点中 ...
- cf Round 613
A.Peter and Snow Blower(计算几何) 给定一个点和一个多边形,求出这个多边形绕这个点旋转一圈后形成的面积.保证这个点不在多边形内. 画个图能明白 这个图形是一个圆环,那么就是这个 ...
随机推荐
- 基于uni-app+vue3渲染markdown格式|uniapp软键盘顶起问题解决方案
前些时候有给大家分享一篇uni-app+vite4+uview-plus搭建跨端项目.今天主要分享下在uniapp中渲染markdown语法及uniapp中软键盘弹起,页面tabbar或顶部自定义na ...
- 补充 6-13 《关于SQL SERVER 字段类型char(n) , nchar(n) , varchar(n) , nvarchar(n)》
今天补充一下<关于SQL SERVER 字段类型char(n) , nchar(n) , varchar(n) , nvarchar(n)>类型的区别 虽然两个字符串一样,但是定义的类型不 ...
- 如何在 Windows Server 2022 阿里云服务器上搭建自己的 MQTT 服务器。
一.简介 最近,在做一个项目的时候,需要在线管理网络继电器,以前也做过硬件的项目,但是这样的项目不多.现在我想实现一个在线可以接受网络继电器发送的信号,也可以向网络继电器发送命令,控制其的运行.这个功 ...
- Stable Diffusion修复老照片-图生图
修复老照片的意义就不多说了,相信大家都明白,这里直接开讲方法. 1.原理 这个方法需要一个真实模型,以便让修复的照片看起来比较真实,我这里选择:realisticVisionV20,大家有更好的给我推 ...
- C++笔记(1)——类的基本概念知识
C#和C++的部分面向对象方式类似,只记录不同点. 定义类与关键字: 下面是C++类的定义方式与C++关键字public和private的表达方式: class Box { private: // 私 ...
- 2021-8-5 Mysql个人练习题
创建学校表格 CREATE TABLE `Student`( `s_id` VARCHAR(20), `s_name` VARCHAR(20) NOT NULL DEFAULT '', `s_birt ...
- React报错:Module not found: Error: Can't resolve 'react-router-dom'
解决方案 npm install -S react-router-dom@5 参考链接 https://stackoverflow.com/questions/53914013/failed-to-c ...
- Vue中 router与route的区别
$route对象 该对象表示当前的路由信息,包含当前URL解析得到的信息.包含当前的路径,参数,query对象等.其常用方法如下所示: $route.path 字符串,对应当前路由的路径,总是解析为绝 ...
- peewee模块更改数据-sqlite
更改数据 from playhouse.migrate import *# SQLite example: my_db = SqliteDatabase('my_database.db') migra ...
- 【算法】编写一个函数,返回两个正数的和,有可能超过ulong长度
编写一个函数,返回两个数字的和.输入数字是字符串,函数必须返回一个字符串. 示例: 添加("123","321"):->"444" 添 ...