SICAU-OJ: 数字游戏
2024-10-21 05:52:22
数字游戏
题意:
给出一个长度为n的数字,然后抹去k个数,使得剩下的数最大。
题解:
贪心的思想:让答案串中每一位尽可能大。
我们肯定要用完这k次的,假设有一个答案字符串ans,我们现在遍历给出的串,假设当前遍历到第i位,设其值为a。
我们现在将a与答案串的每一位进行比较,如果a大于答案串中末尾的数,就删去这个末尾的数让a代替它,容易证明这样肯定能使答案更优。
就一直进行这样的操作使k用完为止。
如果k没用完,那么我们就直接删除答案串的最后几位就好了~
代码如下:
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 1e5;
int n,m;
int main(){
while(scanf("%d%d",&n,&m)!=EOF){
if(!n && !m) break ;
string s;
cin>>s;
int tmp = n-m;
int k = ;
for(int i=;i<n;i++){
if(i==) continue ;
int a=s[i-]-'',b=s[i]-'';
if(b>a && k<m ){
k++;
s.erase(i-,);
i-=;
n--;
}
}
cout<<s.substr(,tmp)<<endl;
}
return ;
}
最新文章
- Android http Request / Response ContentType
- SQL SERVER 2008 评估期已过
- 洛谷P1410 子序列
- iOS开发---百度地图配置流程,2.6.0 版本 支持64位
- java 流
- Android代码优化工具——Android lint
- 卸载Linux内置的AMP软件
- HDOJ(HDU) 1587 Flowers(水、、)
- [js高手之路]es6系列教程 - 解构详解
- 高通ASOC中的codec驱动
- ajax 返回Json方法
- scala for spark
- poj 2886 ";Who Gets The Most Candies?";(树状数组)
- Tesseract训练
- 使用vmimeNET解析账单邮件
- 开发app前需要提前准备的资料
- Spring Boot 2.0(七):Spring Boot 如何解决项目启动时初始化资源
- hdu 3864 D_num Pollard_rho算法和Miller_Rabin算法
- mybatis Condition查询
- 虚拟机virtualBox安装linux系统 xshell远程连接linux