【OpenJ_Bailian - 4137】最小新整数 (贪心)
最小新整数
Descriptions:
给定一个十进制正整数n(0 < n < 1000000000),每个数位上数字均不为0。n的位数为m。
现在从m位中删除k位(0<k < m),求生成的新整数最小为多少?
例如: n = 9128456, k = 2, 则生成的新整数最小为12456
Input
第一行t, 表示有t组数据;
接下来t行,每一行表示一组测试数据,每组测试数据包含两个数字n, k。
Output
t行,每行一个数字,表示从n中删除k位后得到的最小整数。
Sample Input
2
9128456 2
1444 3
Sample Output
12456
1
题目链接:
https://vjudge.net/problem/OpenJ_Bailian-4137
一开始简单的认为是删除最大数,结果WA了一次,然后发现这组数据
1528 1
如果直接删最大的8,结果为152,如果删掉5,结果为128,显然删掉5才是最佳答案。
后来发现
1.每次都删去大于右边的数
2.如果k>0, 删去最大的数
3.如果还k>0, 此时所有数都相等,那就依次删吧
AC代码
#include <iostream>
#include <cstdio>
#include <fstream>
#include <algorithm>
#include <cmath>
#include <deque>
#include <vector>
#include <queue>
#include <string>
#include <cstring>
#include <map>
#include <stack>
#include <set>
#include <sstream>
#define mod 1000000007
#define eps 1e-6
#define ll long long
#define INF 0x3f3f3f3f
#define ME0(x) memset(x,0,sizeof(x))
using namespace std;
int n,k;
string s;
int findMax()
{
int pos=-;//最大数值的位置
int maxn=-;//最大的数值
for(int i=; i<s.length(); i++)
{
if(s[i]-''>maxn)
{
maxn=s[i]-'';
pos=i;
}
}
return pos;
}
int main()
{
cin>>n;
while(n--)
{
cin >> s>>k;
//先删去大于右边的数
for(int i=; i<s.length()-&&k>; ++i)
{
if(s[i]>s[i+])
{
s.erase(i,);
--i;
--k;
}
}
//如果k>0,删去最大的数
while(k>)
{
s.erase(findMax(),);
--k;
}
//k仍大于0,此时所有数都相等,依次删除即可
if(k>)
{
for(int i=; i<s.length(); ++i)
{
s.erase(i,);
--i;
--k;
}
}
cout<<s<<endl;
}
}
【OpenJ_Bailian - 4137】最小新整数 (贪心)的更多相关文章
- NOI4.6 最小新整数——切山游戏
描述 给定一个十进制正整数n(0 < n < 1000000000),每个数位上数字均不为0.n的位数为m. 现在从m位中删除k位(0<k < m),求生成的新整数最小为多少? ...
- Java中最小的整数为什么是-2147483648
Java中最小的整数为什么是-2147483648 假如只有两位来表示数字,第一位是符号位: 00:0 01:1 11:-1,这个是负数,而且是补码,取反为00,加1成为01,就是-1 10:-2,这 ...
- 【51Nod】1510 最小化序列 贪心+动态规划
[题目]1510 最小化序列 [题意]给定长度为n的数组A和数字k,要求重排列数组从而最小化: \[ans=\sum_{i=1}^{n-k}|A_i-A_{i+k}|\] 输出最小的ans,\(n \ ...
- 求树的最大独立集,最小点覆盖,最小支配集 贪心and树形dp
目录 求树的最大独立集,最小点覆盖,最小支配集 三个定义 贪心解法 树形DP解法 (有任何问题欢迎留言或私聊&&欢迎交流讨论哦 求树的最大独立集,最小点覆盖,最小支配集 三个定义 最大 ...
- poj-3659 Cell Phone Network(最小支配集+贪心)
http://poj.org/problem?id=3659 Description Farmer John has decided to give each of his cows a cell p ...
- Atcoder Regular Contest 125 E - Snack(最小割转化+贪心)
Preface: 这是生平第一道现场 AC 的 arc E,也生平第一次经历了 performance \(\ge 2800\),甚至还生平第一次被 hb 拉到会议里讲题,讲的就是这个题,然鹅比较尬 ...
- poj 2010 Moo University - Financial Aid(优先队列(最小堆)+ 贪心 + 枚举)
Description Bessie noted that although humans have many universities they can attend, cows have none ...
- Codeforces Round #532 (Div. 2) F 线性基(新坑) + 贪心 + 离线处理
https://codeforces.com/contest/1100/problem/F 题意 一个有n个数组c[],q次询问,每次询问一个区间的子集最大异或和 题解 单问区间子集最大异或和,线性基 ...
- Command Network OpenJ_Bailian - 3436(最小有向生成树模板题)
链接: http://poj.org/problem?id=3164 题目: Command Network Time Limit: 1000MS Memory Limit: 131072K To ...
随机推荐
- 九度OJ 1143:Primary Arithmetic(初等数学) (进位)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:616 解决:254 题目描述: Children are taught to add multi-digit numbers from ri ...
- 九度OJ 1133:学分绩点 (加权平均数)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:1333 解决:702 题目描述: 北京大学对本科生的成绩施行平均学分绩点制(GPA).既将学生的实际考分根据不同的学科的不同学分按一定的公式 ...
- TTimer源码研究
TTimerProc = procedure of object; IFMXTimerService = interface(IInterface) ['{856E938B-FF7B-4E13-85D ...
- 最全的Android源码目录结构详解【转】
本文转载自:http://blog.csdn.net/yangwen123/article/details/8055025 Android 2.1|-- Makefile|-- bionic ...
- UVA11892 ENimEN —— 博弈
题目链接:https://vjudge.net/problem/UVA-11892 题意: 两人玩游戏,有n堆石子,每堆有ai块石子,两人轮流取,要求一次只能选择一堆石子取任意块.最后取完的获胜. 题 ...
- maven项目所遇到的问题解决
1.在Eclipse中创建Maven的Web项目时出现错误:An internal error occurred during: "Retrieving archetypes:". ...
- swoole异步redis安装前置条件和流程
---恢复内容开始--- 1.redis服务 确认redis在服务器中已经安装了 2.hiredis库 第二步安装hiredis 下载位置 2.1获取 安装包https://github.com/re ...
- 在线判题系统hustoj的搭建
摘要:ACM/ICPC程序设计竞赛,越来越受到各个高校的重视,是程序设计竞赛中的奥林匹克.Hustoj是搭建在linux系统上的判题系统.能够判断代码的正确性.会及时返回通过或者不通过,如果不通过会返 ...
- [SDOI 2015] 星际战争
[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=3993 [算法] 首先发现问题具有单调性 , 不妨二分答案mid 考虑网络流 : 将源 ...
- NMS 原理 了解
NMS 原理:对于Bounding Box的列表B及其对应的置信度S,采用下面的计算方式.选择具有最大score的检测框M,将其从B集合中移除并加入到最终的检测结果D中.通常将B中剩余检测框中与M的I ...