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(计算几何) 给定一个点和一个多边形,求出这个多边形绕这个点旋转一圈后形成的面积.保证这个点不在多边形内. 画个图能明白 这个图形是一个圆环,那么就是这个 ...
随机推荐
- JAVA生成xml文件格式
摘要: 1.在某些业务中需要使用JAVA按照规定生成固定XML格式文件,本文中根据相应的业务生成固定的XML格式文件,并且通过测试可以发送. 2.下面代码根绝dom4j生成xml格式文件 代码思路: ...
- 【活动回顾】WebRTC服务端工程实践和优化探索
11月7日,即构和上海GDG技术社区联合举办了实时音视频技术云上技术分享专场,来自即构科技和Bilibili的资深技术专家进行了深度分享.大会吸引了众多开发人员交流.观看,并在活动过程中与分享嘉宾进行 ...
- 我开源了团队内部基于SpringBoot Web快速开发的API脚手架v1.6.0更新
什么是 rest-api-spring-boot-starter rest-api-spring-boot-starter 适用于SpringBoot Web API 快速构建让开发人员快速构建统一规 ...
- 体验IntelliJ IDEA的远程开发(Remote Development)
欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 本篇概览 IDEA的远程开发功能,可以将本地的编译.构 ...
- 跟进 .NET 8 Blazor 之 ReuseTabs 支持 Query 属性绑定
ASP.NET 团队和社区在 .NET 8 继续全力投入 Blazor,为它带来了非常多的新特性,特别是在服务端渲染(SSR)方面,一定程度解决之前 WASM 加载慢,Server 性能不理想等局限性 ...
- Pandas:获取Dataframe索引
解决方案 效果图 参考链接 https://blog.csdn.net/YENTERTAINR/article/details/109254583
- P5020 [NOIP2018 提高组] 货币系统 题解
转化为完全背包即可. #include <iostream> #include <cstring> #include <algorithm> using names ...
- 《深入理解Java虚拟机》读书笔记:判断对象是否存活
本节内容的概要如下; 对象已死吗? 一.判断对象是否存活的算法 1.引用计数器算法 给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加1:当引用失效时,计数器值就减1:任何时刻计数器为0 ...
- UI通过元素定位实现特定区域截图
最近计划做一个自动截图的工具,目的是实现性能测试资源监控平台(grafana)各硬件资源的自动截图,解放手工操作.前期的截图做了如下探索. 1. 整个页面截图 1.1 代码实现 通过save_scre ...
- 21.1 使用PEfile分析PE文件
PeFile模块是Python中一个强大的便携式第三方PE格式分析工具,用于解析和处理Windows可执行文件.该模块提供了一系列的API接口,使得用户可以通过Python脚本来读取和分析PE文件的结 ...