题目

时间限制: 1000 ms 内存限制: 65536 KB

提交数: 11506 通过数: 3852

【题目描述】

输入一个高精度的正整数n,去掉其中任意s个数字后剩下的数字按原左右次序组成一个新的正整数。编程对给定的n和s,寻找一种方案使得剩下的数字组成的新数最小。

输出新的正整数。(n不超过240位)

输入数据均不需判错。

【输入】

n

s

【输出】

最后剩下的最小数。

【输入样例】

175438

4

【输出样例】

13

分析

不多说,就是删掉递减序列的第一个元素

测试样例是比较水的,这里主要说一下几个特判:

1.前导零

2.像这样的样例:

1444删3位

这是没有严格递减序列的,如果在循环中不缩减整数长度的话,最后啥也没删,还是1444,所以有两种写法

code

#include <cmath>
#include <cstdio>
#include <string>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <algorithm>
#define F(i,a,b) for(int i=a;i<=b;i++)
#define UF(i,a,b) for(int i=a;i>=b;i--)
using namespace std;
typedef long long ll; int n, a[300], s;
string p;
int main()
{ int flag = 0; cin >> p;
n = p.length(); F(i,0,n-1){
a[i + 1] = p[i] - '0'; }
int i = 1;
while(i <= n){
if(a[i] == 0){
a[i] = -1;
i++;
}
else break;
}
cin >> s;
int s0 = s;
while(s0--){
int i = 1;
while(i <= n){
if(a[i] == -1){
i++;
continue;
}
int j = i + 1;
while(a[j] == -1) j++;
if(a[i] <= a[j])//是否取等问题,
//55567 删3; 1444删3
i++;
else
break;
}
a[i] = -1;
}
int shan = 0;
F(i,1,n){
if(a[i] == -1) shan++;
}
if(shan < s){//要手动判断一下
int end = n;
for(end;end >= 1; end--){
if(a[end] != -1){
a[end] = -1;
shan ++;
}
if(shan == s)
break;
}
}
i = 1;
while(i <= n){//删后的前导零和前导-1
if(a[i] != -1 && a[i] != 0) break;
else i++;
}
while(i <= n){
if(a[i] != -1){
flag = 1;
cout << a[i];
}
i++;
}
if(!flag) cout << 0;
cout << endl; return 0;
}

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;
int s;
int n[100000];
string in;
bool flag;
int strlen(string ff){
// cout << "func" << endl;
int tot = 0;
while(ff[tot++] != '\0');
tot--;
return tot;
}
int t;
int main(){ flag = 0;
cin >> in;
cin >> s;
for(int i = 0;i < strlen(in); i++){
n[i] = in[i] - '0';
}
int len = strlen(in);
for(int i = 1;i <= s; i++){
for(int j = 0;j < len - 1; j++)
if(n[j] > n[j+1]){
for(int k = j;k < len-1;k++){
n[k] = n[k+1];
}
break;
}
len--;//如果找不到递减序列,就直接删最后一个元素
}
for(int i = 0;i < len; i++){
if(n[i] != 0) flag = 1;
if(flag) cout << n[i];
}
if(flag) cout << endl;
if(!flag) cout << 0 << endl; return 0;
}

1231 最小新整数 ,这是ybt几乎一样的题

【题解】删数问题(Noip1994)的更多相关文章

  1. 删数问题(Noip1994)

    1321:[例6.3]删数问题(Noip1994) 时间限制: 1000 ms         内存限制: 65536 KB提交数: 5127     通过数: 1595 [题目描述] 输入一个高精度 ...

  2. 题解 洛谷 P5324 【[BJOI2019]删数】

    先考虑对于一个序列,能使其可以删空的的修改次数. 首先可以发现,序列的排列顺序是没有影响的,所以可以将所有数放到桶里来处理. 尝试对一个没有经过修改的可以删空的序列来进行删数,一开始删去所有的\(n\ ...

  3. 删数方案数(regex)

    [题目描述] 给出一个正整数序列 a,长度为 n,cyb 不喜欢完美,他要删掉一些数(也可以不删,即删掉0个),但是他不会乱删,他希望删去以后,能将 a 分成 2 个集合,使得两个非空集合的数的和相同 ...

  4. [BJOI2019]删数(线段树)

    [BJOI2019]删数(线段树) 题面 洛谷 题解 按照值域我们把每个数的出现次数画成一根根的柱子,然后把柱子向左推导,\([1,n]\)中未被覆盖的区间长度就是答案. 于是问题变成了单点修改值,即 ...

  5. codevs4096 删数问题

    题目描述 Description 键盘输入一个高精度的正整数N,去掉其中任意S个数字后剩下的数字按原左右次序将组成一个新的正整数.编程对给定的N 和S,寻找一种方案使得剩下的数字组成的新数最小. 输入 ...

  6. 1145: 零起点学算法52——数组中删数II

    1145: 零起点学算法52--数组中删数II Time Limit: 1 Sec  Memory Limit: 64 MB   64bit IO Format: %lldSubmitted: 293 ...

  7. 【洛谷p1106】删数问题

    (洛谷t2755暂时过不去了) 删数问题[传送门] 洛谷算法标签: emmmm……删数问题又牵扯到了字符串.因为毕竟高精度的数240位呢!要是输入一个整型,要码240行来求出每一位……怕是还没求出来就 ...

  8. ACM 删数问题 SDUT 2072

    http://acm.sdut.edu.cn/onlinejudge2/index.php/Home/Index/problemdetail/pid/2072.html 删数问题 Time Limit ...

  9. 删数问题(NOI94)

    删数问题(NOI94) 输入一个高精度的正整数N,去掉其中任意S个数字后剩下的数字按原左右次序组成一个新的正整数.编程对给定的N和S,寻找一种方案使得剩下的数字组成的新数最小.输出新的正整数.(N不超 ...

随机推荐

  1. 小技巧(2) 查询自己博客的SEO(如果违规,请先提醒)

    今天,教大家查看自己博客的SEO. 首先,上网站http://seo.chinaz.com/ 接着,在网页输入框中输入自己博客地址(带后面路径,不是cnblogs.com这样的,类似https://w ...

  2. 【php学习】图片处理三步走

    前两天要对一张图片进行处理,其实很简单,就是在图片上加上字符串,一个图片而已,但是自己如同得了短暂性失忆似的,图片操作的函数一个都想不起来.所以就抽空整理了一下图片操作函数. 1. 创建画布 从文件中 ...

  3. 【转】常见Java面试题 – 第四部分:迭代(iteration)和递归(recursion)

    ImportNew注: 本文是ImportNew编译整理的Java面试题系列文章之一.你可以从这里查看全部的Java面试系列. Q.请写一段代码来计算给定文本内字符“A”的个数.分别用迭代和递归两种方 ...

  4. Vue中使用js-xlsx导出Data数据到Excel

    需要引入的第三方JS有:export.js.xlsx.extendscript.js.xlsx.full.min.js JS太大不贴出来,放一个可下载百度云连接:https://pan.baidu.c ...

  5. 聊一聊 InnoDB 引擎中的索引类型

    索引对数据库有多重要,我想大家都已经知道了吧,关于索引可能大家会对它多少有一些误解,首先索引是一种数据结构,并且索引不是越多越好.合理的索引可以提高存储引擎对数据的查询效率. 形象一点来说呢,索引跟书 ...

  6. 【Java并发基础】管程简介

    前言 在Java 1.5之前,Java语言提供的唯一并发语言就是管程,Java 1.5之后提供的SDK并发包也是以管程为基础的.除了Java之外,C/C++.C#等高级语言也都是支持管程的. 那么什么 ...

  7. URL方案最佳做法|高级路由特性 | 精通ASP-NET-MVC-5-弗瑞曼

    使 URL整洁和人性化 GET(安全交互)和POST(不安全交互):选用正确的一个.

  8. golang判断目录项中是目录还是文件。

    package main import ( "fmt" "os") func main() { //目录的操作 fmt.Println("请输入文件目 ...

  9. ReactNative---android系统中Image组件无默认图片问题

    react native的Image组件通过网络地址加载图片的时候,若加载失败iOS有默认图片等属性,但安卓没有:但可以通过其他方式来实现: {Platform.OS == 'android'?< ...

  10. qt creator源码全方面分析(0)

    本人主攻C++和Qt. 上两天刚研究完Qt install framework(IFW)应用程序安装框架. google没发现有正儿八经的官方文档的翻译,我就进行了翻译哈!! 系列文章具体见:http ...