[COCI11-12 #4]删数游戏(贪心+数据结构)
题目描述
题目描述
给出一个N位数字串,删除任意K位,使剩下的数最大.。
输入
第1行:2个整数N和K(1<=K<=N<=500000)
第2行:N个数字(可能为0)
输出
第1行:1个可行到的最大的数
样例输入
10 4
4177252841
样例输出
775841
题解
刚看到题目时感觉是一道水题…然后迅速交上去T掉了…
仔细看看数据范围,发现常规做法已经达到了O(kn2)" role="presentation" style="position: relative;">O(kn2)O(kn2)的复杂度了,显然是会超时的。
这时候就需要数据结构的优化了~
我们知道之前要删去一个数的时候要先删去一个数,再将前面的数一个一个往前移。有没有方法使它不需要移动呢。显然,我们可以用栈这个数据结构啦~
最后只需要从前往后加入栈内,遇到一个数与前面的数不保持递增状态时就将栈内的元素删去即可。
实现
#include<algorithm>
#include<iostream>
#include<cstring>
#include<climits>
#include<cstdio>
using namespace std;
char b[500005],a[500005];//数组模拟栈
int n,k,task=1,t1;
int main()
{
scanf("%d%d",&n,&k);
scanf("%s",a);
b[1]=a[0];
int kp=1;
while(kp<n)
{
while(task>0&&a[kp]>b[task]&&t1<k)task--,t1++;
b[++task]=a[kp++];
}
for(int i=1;i<=n-k;i++)printf("%c",b[i]);
}
[COCI11-12 #4]删数游戏(贪心+数据结构)的更多相关文章
- P1106删数游戏
这道题曾经在CQOJ上考过,是第二次做了. 这是一道使用字符串的贪心题.首先要根据机组例子来确定:删除递增序列的最后一位.即循环找到那一位后,把后面的数往前压.所以我在艰难处理完双重循环后(这个处理不 ...
- 洛谷P2426 删数 [2017年4月计划 动态规划12]
P2426 删数 题目描述 有N个不同的正整数数x1, x2, ... xN 排成一排,我们可以从左边或右边去掉连续的i(1≤i≤n)个数(只能从两边删除数),剩下N-i个数,再把剩下的数按以上操作处 ...
- codevs4096 删数问题
题目描述 Description 键盘输入一个高精度的正整数N,去掉其中任意S个数字后剩下的数字按原左右次序将组成一个新的正整数.编程对给定的N 和S,寻找一种方案使得剩下的数字组成的新数最小. 输入 ...
- 【BZOJ 1594】 [Usaco2008 Jan]猜数游戏 (二分+并查集)
1594: [Usaco2008 Jan]猜数游戏 Description 为了提高自己低得可怜的智商,奶牛们设计了一个新的猜数游戏,来锻炼她们的逻辑推理能力. 游戏开始前,一头指定的奶牛会在牛棚后面 ...
- poj 3710 Christmas Game(树上的删边游戏)
Christmas Game Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 1967 Accepted: 613 Des ...
- P1005 矩阵取数游戏 区间dp 高精度
题目描述 帅帅经常跟同学玩一个矩阵取数游戏:对于一个给定的n \times mn×m的矩阵,矩阵中的每个元素a_{i,j}ai,j均为非负整数.游戏规则如下: 每次取数时须从每行各取走一个元素,共n ...
- ACM 删数问题 SDUT 2072
http://acm.sdut.edu.cn/onlinejudge2/index.php/Home/Index/problemdetail/pid/2072.html 删数问题 Time Limit ...
- 删数问题(NOI94)
删数问题(NOI94) 输入一个高精度的正整数N,去掉其中任意S个数字后剩下的数字按原左右次序组成一个新的正整数.编程对给定的N和S,寻找一种方案使得剩下的数字组成的新数最小.输出新的正整数.(N不超 ...
- 【BZOJ1594】[Usaco2008 Jan]猜数游戏 二分答案+并查集
[BZOJ1594][Usaco2008 Jan]猜数游戏 Description 为了提高自己低得可怜的智商,奶牛们设计了一个新的猜数游戏,来锻炼她们的逻辑推理能力. 游戏开始前,一头指定的奶牛会在 ...
随机推荐
- nodejs+koa在header里面添加header信息
参考:https://koa.bootcss.com/ ctx.append('resultCode', '0000'); ctx.append('resultMessage', 'success') ...
- python移植环境
如果整理材料的时候或者给别人共享代码的时候,除了使用docker外,也可以使用pip或者conda生成依赖项文件,然后在其他机器上将该依赖项一一安装就可以了. 但是有很多版本的依赖导致使用pip总是安 ...
- PL-SVO公式推导及代码解析:位姿优化
通过跳过极线约束单独优化图像中每个特征的位置后,必须通过最小化3D特征与图像中相应的2D特征位置之间的重投影误差来进一步细化(3)中获得的相机姿态( 见图5).为此,我们考虑在世界坐标系中3D特征和相 ...
- PHP函数ip2long转换IP时数值太大而产生负数
// 使用 sprintf 返回无符号十进制数 $long = sprintf("%u",ip2long($ip)); // 先转换为二进制然后在转换为十进制 $long = bi ...
- k8s-N0.4-service
本章目录 k8s中的三种网络 service的构建及参数说明 一 k8s的三种网络 在k8s集群中,k8s是有三种网络类型的,下面我们看一下下面这个图 1 节点网络:顾名思义,节点网络就是你每台物理 ...
- VUE 安装&创建一个项目
1,安装node.js vue依赖nodejs,所以首先要安装node.js 然后打开cmd,输入命令, node -v.正常出现版本号,说明你已经安装成功了 下载地址:http://nodejs.c ...
- Redis做LRU缓存
当Redis用作缓存时,通常可以让它在添加新数据时自动逐出旧数据. 这种行为在开发人员社区中非常有名,因为它是流行的memcached系统的默认行为. LRU实际上只是支持的驱逐方法之一. 本页介绍了 ...
- rand和srand的用法
首先我们要对rand&srand有个总体的看法:srand初始化随机种子,rand产生随机数,下面将详细说明. rand(产生随机数)表头文件: #include<stdlib.h> ...
- Vue学习记录第二天
又来做笔记啦,今天又自暴自弃了,还好及时清醒过来了,什么时候努力都不晚,主要是要一直坚持下去,只要坚持就一定会有收获,所有成功得人背后都是付出了巨大得努力的,没有人平白无故的成功.看似光鲜亮丽的背后, ...
- python读取数据库并把数据写入本地文件
一,介绍 上周用jmeter做性能测试时,接口B传入的参数需要依赖接口A生成的借贷申请ID,接口A运行完需要把生成的借贷申请ID导出来到一个文件,作为参数传给接口B,刚开始的时候,手动去数据库倒, 倒 ...