首页 > TAG信息列表 > 删数
NOI1994 删数问题
【问题描述】键盘输入一个高精度的正整数n(≤240位),去掉其中任意s个数字后剩下的数字按原左右次序将组成一个新的正整数。编程对给定的n和s,寻找一种方案,使得剩下的数字组成的新数最小。 输入 两行第一行:n第二行:s 输出 最后剩下的最小数。 样例输入 175438 4 样例输出 13 对删数问题
题目链接:https://www.luogu.com.cn/problem/P1106 试题分析:题目要求删除一串数字中k个数字,并使删除后的数字最小。让这个数字变小,我们有两种可行的方法:1.减小位数,数字位数越少,数字越小;2.数字中有较大的数字,删去后也会变小。 例如:10071 对于这个数,我们要先选择删除1,因为删除1P1106 删数问题 [好题]
https://www.luogu.com.cn/problem/P1106字符串,贪心,ST算法黄色题 思路一:删数 /洛谷 P1106 删数问题 //此题与 1231 最小新整数 基本雷同 //1231 最小新整数 //感觉题目比较简单,将最大的数由大到小删除 //样例通过,但提交,未通过 //总觉得算法不对,因为删的是最大的数,但又举不删数问题(一个数删去几个位上的数后最小)
https://www.luogu.com.cn/problem/P1106 将字符串中出现递减的数删去(s[i]>s[i+1])此时删去i位置的那个比较大的数 使用erase函数快 循环操作n次结束 #include <bits/stdc++.h> using namespace std; string s; int n, min_idx; char min_first; int main() { cin >> s;删数问题
题目: 删数问题 题目链接:https://www.luogu.com.cn/problem/T241086?contestId=69902 题目描述 一个集合有如下元素:11 是集合元素;若 PP 是集合的元素,则 2\times P+12×P+1,4\times P+54×P+5 也是集合的元素。 取出此集合中最小的 kk 个元素,按从小到大的顺序组合成一个多CF792C题解
题面 Description: 给你一个数 \(n\),在其中删除尽可能少的数码,使得得到的数不含前导零且被 \(3\) 整除。 \(n\leq10^{10^5}\) 暴力分类讨论做法。 首先,我们将 \(n\) 的每一位用这一位 \(\bmod3\) 代替,明显的这样不会产生任何影响。 首先关于 \(n\bmod3\) 可以分成三类: \(n\bmod3P1323 删数问题
题目描述 一个集合有如下元素:1 是集合元素;若 P 是集合的元素,则 2×P+1,4×P+5 也是集合的元素。 取出此集合中最小的 k 个元素,按从小到大的顺序组合成一个多位数,现要求从中删除 m 个数位上的数字,使得剩下的数字最大,编程输出删除前和删除后的多位数字。 注:不存在所有数被删数问题 贪心算法
删数问题 描述: 给定一个高精度正整数a, 去掉其中k个数字后按原左右次序将组成一个新的正整数。对给定的a, k寻找一种方案,使得剩下的数字组成的新数最小。 应用贪心算法设计求解 设计要点 操作对象为n位高精度数,存储在数组a中。 在整数的位数固定的前提下,让高位的数字尽量P370【基础】删数问题 题解
题意 键盘输入一个高精度的正整数n(n<=1000位),去掉其中任意s个数字后剩下的数字按原左右顺序将组成一个新的正整数。 编程对给定的n和s(s<n的位数,且数据保证n删除s个数之后不为0,还是一个非0的整数),寻找一种方案,使得剩下的数字组成的数最小。 例如:153748要删除2个数,使得剩下的数字最小,【删数问题贪心算法解决】
算法与设计基础 键盘输入一个高精度的正整数n,去掉任意s个数字后剩下的数字按原左右次序将组成一个新的正整数。编程对给定的n和s,寻找一种方案,使得剩下的数最小。 如输入: 178543 4 输出: 13 #include; #include; using namespace std; int shanshu(char *a,int k) { int n = strle贪心策略------删数问题
4-2 删数问题 (30 分) 给定n位正整数a,去掉其中任意k≤n 个数字后,剩下的数字按原次序排列组成一个新的正整数。对于给定的n位正整数a和正整数 k,设计一个算法找出剩下数字组成的新数最小的删数方案。如果数字最前面有0不输出。 输入格式: 第 1 行是1 个正整数 a。第 2 行是正整数k。贪心-P1106删数问题题解
题目描述 键盘输入一个高精度的正整数 NN(不超过 250250 位),去掉其中任意 kk 个数字后剩下的数字按原左右次序将组成一个新的非负整数。编程对给定的 NN 和 kk,寻找一种方案使得剩下的数字组成的新数最小。 输入格式 n(高精度的正整数 )。 k(需要删除的数字个数 )。 输出格式 最后1321:【例6.3】删数问题(Noip1994)
删数问题 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 using namespace std; 5 const int N=245; 6 char t[N]; 7 int tt[N],s; 8 int main(){ 9 scanf("%s%d",t,&s); 10 int len=strlen(t); 11 for(iloj#3094. 「BJOI2019」删数
Description loj#3094 Solution 首先肯定是考虑在没有修改的情况下,直接给定序列该如何计算该序列需要修改几个数才能删空: 首先,该序列的顺序对答案是没有任何影响的,影响答案的只有某个数的出现次数,这令我们想到在值域数轴上用桶维护每个数的出现次数。 接下来考虑模拟删边的过程,一【题解】[BJOI2019]删数
Problem \(\text{Solution:}\) 记 \(cnt_x\) 表示数 \(x\) 的出现次数。 那么,一个数 \(x\) 能删去的范围应该是: \([x-cnt_x+1,x].\) 考虑一个序列能被删去,当且仅当它的范围被完全覆盖到。 所以最小修改次数就是 没有被覆盖的区间的长度 。 那么我们可以把每一个数抽象成一条线段,进用贪心解决删数问题
任务描述 有一个长度为n(n <= 240)的正整数,从中取出s(s < n)个数,使剩余的数保持原来的次序不变,求这个正整数经过删数之后最小是多少。 输入格式 第一行输入n和s 输出格式 输出一个整数 输入样例 178543 4 输出样例 13 1 #include<stdio.h> 2 #include<string.h> 3 4 /* 5洛谷P1106 删数问题(字符串,贪心)
【题目描述】 键盘输入一个高精度的正整数N(不超过250位),去掉其中任意k个数字后剩下的数字按原左右次 序将组成一个新的非负整数。编程对给定的N和k,寻找一种方案使得剩下的数字组成的新数最小。 【输入格式】 n(高精度的正整数)。 k(需要删除的数字个数)。 【输出格式】 最后(贪心)删数算法:删的越小(大)越好
删数算法 题意:N位数删除K个数字,使剩下的数字串最小 思路: string a; 若a [ i ] > a [ i + 1 ] 则删除 a [ i ],如果按此规则遍历完数串但没有删够k个数字,那么从数串尾部依次删除。 细节: 1. 注意前导0的处理(若N==K那也要输出0) 2. erase后数组下标的变化 3. 从头到尾遍历,每次遍历删数问题(贪心算法)
题目描述 键盘输入一个高精度的正整数 NN(不超过 250250 位),去掉其中任意 kk 个数字后剩下的数字按原左右次序将组成一个新的非负整数。编程对给定的 NN 和 kk,寻找一种方案使得剩下的数字组成的新数最小。 输入格式 n(高精度的正整数 )。 k(需要删除的数字个数 )。 输出格式 最后P1106 删数问题
#include <iostream> #include <cstring> using namespace std; char a[260]; int main() { int len,k; cin>>a; cin>>k; len=strlen(a); while(k--) { for(int i=0;i<=len-2;i++) { if(a[i]BJOI2019 删数
删数 对于任意一个数列,如果能在有限次进行下列删数操作后将其删为空数列,则称这个数列可以删空。一次删数操作定义如下: 记当前数列长度为 \(k\),则删掉数列中所有等于 \(k\) 的数。 现有一个长度为 \(n\) 的数列 \(a\),有 \(m\) 次修改操作,第 \(i\) 次修改后你要回答:经过 \(i\) 次P1106 删数问题
题目描述 键盘输入一个高精度的正整数NN(不超过250250位) ,去掉其中任意kk个数字后剩下的数字按原左右次序将组成一个新的正整数。编程对给定的NN和kk,寻找一种方案使得剩下的数字组成的新数最小。 输入格式 nn (高精度的正整数) kk(需要删除的数字个数) 输出格式 最后剩下的最第四章上机实践报告
1.实践题目 4-2 删数问题 2.问题描述 给定n位正整数a,去掉其中任意k≤n 个数字后,剩下的数字按原次序排列组成一个新 的正整数。对于给定的n位正整数a和正整数 k,设计一个算法找出剩下数字组成的新数最 小的删数方案。 3.算法描述 先从第一位开始往后看,若出现逆序的情况,删掉逆序的P1323 删数游戏(技巧)
技巧:给你一个数,要求你删去\(m\)位使得剩下的数最大 这是一个贪心问题,假设原来的数字是\(k\)位,那么相当于要保留\(k-m\)位。 有下面几种贪心策略 \(1.\)每次找最大的保留,直到\(k-m\)个,这样显然是错的,因为要求删除后顺序不能改变。 \(2.\)找到最大的且最靠前的位置,保留它,再从它后华为编程题思考--------删数
有一个数组a[N]顺序存放0~N-1,要求每隔两个数删掉一个数,到末尾时循环至开头继续进行,求最后一个被删掉的数的原始下标位置。以8个数(N=7)为例:{0,1,2,3,4,5,6,7},0->1->2(删除)->3->4->5(删除)->6->7->0(删除),如此循环直到最后一个数被删除。 输入描述:每组数据为一行一个整数n(小于等于10