uva11491 奖品的价值(贪心)

uva11491 奖品的价值(贪心)

给你一个n位的整数,请你删除其中的d个数字,使得整数尽可能大。1<=d<n<=1e5。

首先因为前面的数位更重要,所以从左往右将每一位数字加入栈中。如果它比栈顶的大,就把栈顶的删掉,因为这样数肯定更大。如果删满了d个,就不再弹出栈顶了。如果全部扫完都删不满d个,只需舍弃最后的数位,使被删的数达到d即可。

#include <cstdio>
#include <cstring>
using namespace std;

const int maxn=1e5+5;
int n, m, lens, tail, dis;
char s[maxn], ans[maxn];

int main(){
    while (~scanf("%d%d", &n, &m)&&n){
        scanf("%s", s);
        tail=0; dis=0;
        for (int i=0; i<n; ++i){
            while (tail>0&&dis<m&&ans[tail-1]<s[i])
                --tail, ++dis;
            ans[tail++]=s[i];
        }
        for (int i=0; i<n-m; ++i)
            printf("%c", ans[i]);
        puts("");
    }
    return 0;
}

原文地址:https://www.cnblogs.com/MyNameIsPc/p/8454356.html

时间: 2024-10-28 23:55:46

uva11491 奖品的价值(贪心)的相关文章

UVA11491 奖品的价值

奖品的价值C804 运行时间限制:1000ms: 运行空间限制:51200KB 试题描述 你是一个电视节目的获奖嘉宾.主持人在黑板上写出一个 n 位非负整数(不以 0 开头),邀请你删除其中的 d 个数字,剩下的整数便是你所得到的奖品的价值.当然,你希望这个奖品价值尽量大.1<=d<=n<=10^5 输入 两行,第一行仅包含一个正整数d,第二行位一个符合题目要求的 n 位数. 输出 一个数,未奖品价值的最大值. 输入示例 4 23987921 输出示例 9921 很像万恶的小奥...(小

UVA 11491 Erasing and Winning 奖品的价值 (贪心)

题意:给你一个n位整数,让你删掉d个数字,剩下的数字要尽量大. 题解:因为最后数字位数是确定的,而且低位数字对答案的贡献是一定不及高位数字的,所以优先选择选最大且最靠左边的数字,但是有一个限制,选完这个数字以后右边剩下的数字要保证足够接下来的选择,所以我想到了优先队列,记录一个信息,选的数字所在的位置,以及上一个数字所在的位置,如果当前出队的数字在上一个选的位置前面就直接丢掉,每次选完一个以后剩下要选的数字就减少了,满足限制的条件的数字会增加,再把新的待选数字加入队列. #include<bit

UVa 11491 奖品的价值

https://vjudge.net/problem/UVA-11491 题意:一个n位整数,删除其中的d个数字,输出最大值. 思路:肯定从高位开始分析,代码如下. 1 #include<string> 2 #include<iostream> 3 using namespace std; 4 5 const int maxn = 100000 + 5; 6 7 int n, d; 8 char a[maxn]; 9 10 int main() 11 { 12 //freopen(

2014环球旅游小姐国际大赛

环球旅游小姐(Miss Toursim of the Globe)国际大赛于1971年由美国好莱坞美丽盛会组织(Festival Of Beauty)主席Charlie See先生创办,大赛的宗旨是评选本国或地区的旅游形象大使. 该项大赛在60多个国家得到国际的认可,是各国旅游小姐大赛优胜者的最终国际比赛,也是世界上历史最悠久,最具权威性的旅游小姐赛事之一,是各国有权派出选手参与的旅游形象选美大赛之一,与全球旅游小姐.国际旅游小姐和世界城市旅游小姐齐名,并称为世界四大顶级旅游选美赛事. Miss

POJ 3111 K Best 二分 最大化平均值

1.题意:给一共N个物品,每个物品有重量W,价值V,要你选出K个出来,使得他们的平均单位重量的价值最高 2.分析:题意为最大化平均值问题,由于每个物品的重量不同所以无法直接按单位价值贪心,但是目标值有界且能判断与最后答案的大小关系,所以用二分来做 3.代码: 1 # include <iostream> 2 # include <cstdio> 3 # include <cmath> 4 # include <algorithm> 5 using names

聊聊“扭蛋”,即常规的付费抽奖

文中说的扭蛋,即是常规的付费抽奖. 1. 如何设定免费抽奖的冷却 有不少游戏,免费抽奖的冷却,会设定为24小时整或48小时整. 以24小时为例.如果冷却为24小时整,今天抽奖是在10点整.那么,几乎所有玩第二天抽奖是在10点以后.部分玩家会觉得难受.不如设定成22小时或者23小时,给予玩家一小时左右的缓冲时间,会让体验提升很多. 也有游戏干脆设定为夜间更新时,同步刷新免费抽奖的机会.个人并不推荐.因为在夜间更新重置免费抽奖,会大大抹杀玩家对于抽奖的牵挂.玩家只需要第二天上线抽奖即可,至于几点完全

51nod 1257 背包问题 V3(这不是背包问题是二分)

题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1257 题解:不能按照单位价值贪心,不然连样例都过不了 要求的r=sum(x[i]*p[i])/sum(x[i]*w[i])不妨设一个辅助函数 z(l)=sum(x[i]*p[i])-l*sum(x[i]*w[i]), 如果z(l) > 0 即sum(x[i]*p[i])-l*sum(x[i]*w[i])>0-->sum(x[i]*p[i])/sum(

【很容易趣味征集】国庆餐桌上的那些景儿

十月国庆黄金周倒计时7天,除了探访家人朋友,旅游,宅在家里是不是应该做点什么? 对,没错!亲,赶紧用您手中可爱的手机晒出你的"菜",无论你在哪里?很容易论坛邀请您和我们一起分享,只要分享就有礼品哦!超给力的有木有? [活动帖征集]:2014年9月22日---2014年10月16日 [参与方式]: 1.在主体贴跟贴回复 2.跟贴内容       图片(妈妈做的美食,自己做的美食,出游遇到的美食统统欢迎)+文字(食物名称.此时心得等,文字内容不低于50个文字o) [奖品分布]: 一等奖:(

华为机试—物品放箩筐(高级题160分,含体积价值:贪心算法)

#include <iostream> using namespace std; int m[100][100]; int min(int a,int b) { return (a<b)?a:b; } int max(int a,int b) { return (a>b)?a:b; } void knapsack(int v[],int w[],int c,int n) { int jMax=min(w[n],c); for(int j=0;j<=jMax;j++) m[n]