code4906 删数问题】的更多相关文章

题目: 键盘输入一个高精度的正整数n(<=240位), 去掉任意s个数字后剩下的数字按原左右次序将组成一个新的正整数. 编程对给定的n和s,寻找一种方案,使得剩下的数最小. Simple Input  178543  4 Simple Output  13   思路: 每一步总是选择一个使剩下的数最小的数字删除,即按高位到低位的顺序搜索,若各位数字递增,则删除最后一个数字:否则删除第一个递减区间的首字符,这样删一位便形成了一个新的数字串.然后回到串首,按上述规则再删除下一个数字   代码: #i…
题目描述 Description 键盘输入一个高精度的正整数N,去掉其中任意S个数字后剩下的数字按原左右次序将组成一个新的正整数.编程对给定的N 和S,寻找一种方案使得剩下的数字组成的新数最小. 输入数据均不需要判错. 输出组成的新的正整数.(N不超过240位) 输入描述 Input Description 第一行,输入一正整数N(N<=10240),表示要删的数: 第二行,输入一正整数S,表示删去的个数,当然S小于N的位数. 输出描述 Output Description 仅一行,输出删数后形…
1145: 零起点学算法52--数组中删数II Time Limit: 1 Sec  Memory Limit: 64 MB   64bit IO Format: %lldSubmitted: 2935  Accepted: 793[Submit][Status][Web Board] Description 在给定的数组中删除数 Input 多组测试,每组第一行输入1个整数n(n<20),然后是n个整数 第二行输入1个整数m Output 删除在第一行的n个整数中的数字m(多个的话都要删除),…
[题目描述] 给出一个正整数序列 a,长度为 n,cyb 不喜欢完美,他要删掉一些数(也可以不删,即删掉0个),但是他不会乱删,他希望删去以后,能将 a 分成 2 个集合,使得两个非空集合的数的和相同,现在他希望你能帮他算出删数的方案数. [输入文件] 第一行 n 个正整数 以下有 n行,每行1个 正整数表示整数序列a [输出文件] 一个整数表示答案 [输入样例] 4 1 2 3 4 [输出样例] 3 [数据范围] 30%:n<=5 100%:n<=20 100%:a 中每个元素<=10…
[BJOI2019]删数(线段树) 题面 洛谷 题解 按照值域我们把每个数的出现次数画成一根根的柱子,然后把柱子向左推导,\([1,n]\)中未被覆盖的区间长度就是答案. 于是问题变成了单点修改值,即修改两根柱子的长度.全体修改就可以理解为询问区间的平移. 那么只需要拿线段树维护这个东西就行了. #include<iostream> #include<cstdio> using namespace std; #define MAX 150150 #define lson (now&…
(洛谷t2755暂时过不去了) 删数问题[传送门] 洛谷算法标签: emmmm……删数问题又牵扯到了字符串.因为毕竟高精度的数240位呢!要是输入一个整型,要码240行来求出每一位……怕是还没求出来就tel了.所以我们又用到了字符串(真的很常用哎).这个题ac起来还是比较easy的,毕竟一本通上有题.BUT——一本通上本没有考虑删后的数是零的情况啊!我也没考虑,所以没有一遍a[桑心](下课辽要,直接附ac代码吧) #include<iostream> #include<cstdio>…
http://acm.sdut.edu.cn/onlinejudge2/index.php/Home/Index/problemdetail/pid/2072.html 删数问题 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Discuss Problem Description 键盘输入一个高精度的正整数n(≤100位),去掉其中任意s个数字后剩下的数字按照原来的左右次序组成一个新的正整数.编程对给定的n与s,寻找一种方案,…
删数问题(NOI94) 输入一个高精度的正整数N,去掉其中任意S个数字后剩下的数字按原左右次序组成一个新的正整数.编程对给定的N和S,寻找一种方案使得剩下的数字组成的新数最小.输出新的正整数.(N不超过240位)输入数据均不需判错.[输入] n s[输出]最后剩下的最小数.[样例输入] 175438 4[样例输出] 13 分析: 由于正整数n的有效数位为240位,所以很自然地采用字符串类型存贮n. 那么如何决定哪s位被删除呢?是不是最大的s个数字呢?显然不是,大家很容易举出一些反例. 为了尽可能…
P2426 删数 题目描述 有N个不同的正整数数x1, x2, ... xN 排成一排,我们可以从左边或右边去掉连续的i(1≤i≤n)个数(只能从两边删除数),剩下N-i个数,再把剩下的数按以上操作处理,直到所有的数都被删除为止. 每次操作都有一个操作价值,比如现在要删除从i位置到k位置上的所有的数.操作价值为|xi – xk|*(k-i+1),如果只去掉一个数,操作价值为这个数的值. 问如何操作可以得到最大值,求操作的最大价值. 输入输出格式 输入格式: 第一行为一个正整数N: 第二行有N个用…
题目描述 键盘输入一个高精度的正整数N,去掉其中任意k个数字后剩下的数字按原左右次序将组成一个新的正整数.编程对给定的N和k,寻找一种方案使得剩下的数字组成的新数最小. 输出应包括所去掉的数字的位置和组成的新的整数.(N不超过250位) 输入数据均不需判错. 输入输出格式 输入格式: n (高精度的正整数) k (需要删除的数字个数) 输出格式: 最后剩下的最小数. 输入输出样例 输入样例#1: 175438 4 输出样例#1: 13分析:贪心思想,我们每次删数肯定是要找前面的大数给删掉,并且这…
删数 题目链接 一道裸的区间DP,f[l][r]表示剩下区间[l,r]时的最大价值 可以由f[1~l-1][r]和f[l][r+1~n]转移过来 详见代码: #include<algorithm> #include<iostream> #include<cstdio> #include<cmath> using namespace std; #define N 105 int n,x[N],f[N][N],ans; int main() { scanf(&q…
删数问题 题目链接 首先找出最小的k个数:用堆每次取出最小的元素p,将p*2+1和p*4+5压入堆. 贪心求最大数:从前往后找第一个data[j+1]>data[j],删除data[j].(链表应该是比较快的,然而蒟蒻懒得写链表,用了一个数组瞎搞..不开氧气优化会T一个点) #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<cmat…
1321:[例6.3]删数问题(Noip1994) 时间限制: 1000 ms         内存限制: 65536 KB提交数: 5127     通过数: 1595 [题目描述] 输入一个高精度的正整数n,去掉其中任意s个数字后剩下的数字按原左右次序组成一个新的正整数.编程对给定的n和s,寻找一种方案使得剩下的数字组成的新数最小. 输出新的正整数.(n不超过240位) 输入数据均不需判错. [输入] n s [输出] 最后剩下的最小数. [输入样例] 175438 4 [输出样例] 13逐…
本文索引目录: 一.PTA实验报告题1 : 程序存储问题 1.1 实践题目 1.2 问题描述 1.3 算法描述 1.4 算法时间及空间复杂度分析 二.PTA实验报告题2 : 删数问题 2.1 实践题目 2.2 问题描述 2.3 算法描述 2.4 算法时间及空间复杂度分析 三.PTA实验报告题3 : 最优合并问题 3.1 实践题目 3.2 问题描述 3.3 算法描述 3.4 算法时间及空间复杂度分析 四.实验心得体会(实践收获及疑惑) 一.PTA实验报告题1 : 程序存储问题 1.1 实践题目:…
洛谷 P1106 删数问题 https://www.luogu.org/problemnew/show/P1106 JDOJ 2898: 删数问题 https://neooj.com:8082/oldoj/problem.php?id=2898 Description 输入一个高精度的正整数N,去掉其中任意S个数字后剩下的数字按原左右次序组成一个新的正整数.编程对给定的N和S,寻找一种方案使得剩下的数字组成的新数最小. 输出新的正整数.(N不超过240位)输入数据均不需判错. Input [输入…
删数问题 Time Limit: 1000 msMemory Limit: 65536 KiB Problem Description 键盘输入一个高精度的正整数n(≤100位),去掉其中任意s个数字后剩下的数字按照原来的左右次序组成一个新的正整数.编程对给定的n与s,寻找一种方案,使得剩下的数字组成的新数最小. Input 输入有多组 每组包括原始数n,要去掉的数字数s: Output 输出去掉s个数后最小的数 Sample Input 178543 4 Sample Output 13 Hi…
LOJ#3094. 「BJOI2019」删数 之前做atcoder做到过这个结论结果我忘了... em,就是\([1,n]\)之间每个数\(i\),然后\([i - cnt[i] + 1,i]\)可以放一条线段,没被线段放的地方就是需要改的数的总和 之后我们线段树维护区间最小值以及个数 我们要注意如果+1后使得一个本来在\([1,N]\)的点越出了范围,那么就要把这个区间给删掉,-1同理,要加进来 值域开成\(N + 2M\)也就是\(4.5*10^{5}\)即可 #include <bits/…
P2426 删数 题目描述 有N个不同的正整数数x1, x2, ... xN 排成一排,我们可以从左边或右边去掉连续的i(1≤i≤n)个数(只能从两边删除数),剩下N-i个数,再把剩下的数按以上操作处理,直到所有的数都被删除为止. 每次操作都有一个操作价值,比如现在要删除从i位置到k位置上的所有的数.操作价值为|xi – xk|*(k-i+1),如果只去掉一个数,操作价值为这个数的值. 问如何操作可以得到最大值,求操作的最大价值. 输入输出格式 输入格式: 第一行为一个正整数N: 第二行有N个用…
删数问题(需知道的数学定理) 给定n位正整数a,去掉其中任意k≤n 个数字后,剩下的数字按原次序排列组成一个新 的正整数.对于给定的n位正整数a和正整数 k,设计一个算法找出剩下数字组成的新数最 小的删数方案. 定理: ex:1 2 3 9 5:删掉一个数: 从第一个数开始遍历,到寻找到单调递减的第一个数(即单调递增的最后一个数),则删除,若无单调递减子序列,则删掉最后一个非递减序列的数:每找到一个就又从头开始.即每做一次删数,就是一次贪心选择,删掉此数剩下的数为组成最小,经过证明,此结论正确.…
先考虑对于一个序列,能使其可以删空的的修改次数. 首先可以发现,序列的排列顺序是没有影响的,所以可以将所有数放到桶里来处理. 尝试对一个没有经过修改的可以删空的序列来进行删数,一开始删去所有的\(n\),然后序列长度变为\(x_1\),删去所有的\(x_1\),然后序列长度变为\(x_2\),删去所有的\(x_2\)--直到对于一个长度为\(x_i\)的序列,其中没有\(x_i\)这个数,那么此时就要对序列执行修改操作了. 考虑过程,当不能连续的删数时,就需要通过修改来填补空缺.实际上,对\([…
描述 有N个不同的正整数数x1, x2, ... xN 排成一排,我们可以从左边或右边去掉连续的i个数(只能从两边删除数),1<=i<=n,剩下N-i个数,再把剩下的数按以上操作处理,直到所有的数都被删除为止.每次操作都有一个操作价值,比如现在要删除从i位置到k位置上的所有的数.操作价值为|xi – xk|*(k-i+1),如果只去掉一个数,操作价值为这个数的值.任务如何操作可以得到最大值,求操作的最大价值.  输入格式 输入文件remove.in 的第一行为一个正整数N,第二行有N个用空格隔…
传送门 不如先考虑暴力,能删的序列首先有\(1,2,3...n\),还有就是升序排序后从后往前放数,第\(i\)位要么放\(i\),要么放\(i+1\)位置的数,例如\(1,2,4,4,5,6,9,9,9\) 如果一个数\(i\)出现了若干次,假如是\(num_i\)次,我们发现是可以在\(i,i-1,i-2...i-num_i+1\)上放\(i\)的,这样放完之后,如果有的位置没有用到现有的数放上去,那么就要从没用的数里改一个放过来,问题也就是用一堆数,最多能放多少个位置.考虑从后往前放,然后…
题目描述 题目描述 键盘输入一个高精度的正整数N,去掉其中任意k个数字后剩下的数字按原左右次序将组成一个新的正整数.编程对给定的N和k,寻找一种方案使得剩下的数字组成的新数最小. 输出应包括所去掉的数字的位置和组成的新的正整数.(N不超过250位) 输入数据均不需判错. 输入格式 n (高精度的正整数) k (需要删除的数字个数) 输出格式 最后剩下的最小数. 输入样例 175438 4 输出样例 13 分析 由于正整数n的有效位数最大可达240位,所以可以采用字符串类型来存储n.那么,应如何来…
题目大意:一个数列若能在有限次数内删空,则称这个数列可以删空,一次删除操作定义如下: 记当前数列长度为$k$,则删掉数列中所有等于$k$的数. 现在有一个长度为$n$的数列$a$,有$m$次修改操作,为单点变值/整体增加或者减少$1$,问每次修改后,最少需要修改序列中多少个数,使得序列可以被删除. 数据范围:$n≤150000$. 我们首先考虑下最少需要修改的次数,我们设$b[i]$为数列$a$中填写了i的值得数量. 对于每一个$i$,我们可以用$b[i]$这么多数,覆盖区间$[i-b[i]+1…
题面 传送门 思路 dp部分 以下称合法序列为原题面中可以删空的序列 这个是我在模拟考场上的思路 一开始我是觉得,这个首先可以写成一个dp的形式:$dp[i][j]$表示用$j$个数字填满了目标序列的前$i$需要的步数 然后,发现只有$dp[i][i]$有意义,所以优化为$dp[i]$表示达成了构成长度为$i$的序列需要的最小步数 猜一个转移方程:$dp[i]=min_{j\in[1,i-1]}(dp[j]+max(0,(i-j)-num[i])$ 这里$num[i]$表示当前询问的序列中数字$…
一个人的码风好坏究竟会影响多少…
题目 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 11506 通过数: 3852 [题目描述] 输入一个高精度的正整数n,去掉其中任意s个数字后剩下的数字按原左右次序组成一个新的正整数.编程对给定的n和s,寻找一种方案使得剩下的数字组成的新数最小. 输出新的正整数.(n不超过240位) 输入数据均不需判错. [输入] n s [输出] 最后剩下的最小数. [输入样例] 175438 4 [输出样例] 13 分析 不多说,就是删掉递减序列的第一个元素 测试样例是比较水的,这…
洛谷题目传送门 一眼看去:区间DP 数据范围:三重循环 好了不装B了,开始说正事 这题非常明显是区间DP. 按照惯例,先定义状态. 分析题目,发现除了区间左端点和右端点之外,什么也不需要加进状态里.因为显而易见除了区间左右端点,没有什么能够影响答案. 所以我们定义状态\(dp[l][r]\)为区间\([l,r]\)的最大答案. 这个"操作价值"可以两重循环预处理出来,所以用\(pre[l][r]\)代表删除区间\([l,r]\)的最大价值.非常明显的,甚至题目里已经直接写明白了, 其实…
[问题描述] 一个集合有如下元素:1是集合元素:若P是集合的元素,则2 * P +1,4*P+5也是集合的元素,取出此集合中最小的K个元素,按从小到大的顺序组合成一个多位数,现要求从中删除M个数位上的数字,使得剩下的数字最大,编程输出删除前和删除后的多位数字. 注:不存在所有数被删除的情况. [样例输入] 5 4 [样例输出] 137915 95 [解题思路] 首先,我们可以将该问题转化为两个子问题: 1:求2*p+1与4*p+5两个集合中前k个数组成的数. 2:求如何删去m个数字使留下的数最大…
https://www.luogu.org/problemnew/show/P5324 题解 首先我们需要弄清这个答案是什么. 对于一个长度为n的序列,那么它先删的肯定是\(n\),删完之后它就会跳到\(n-cnt[n]\)位置,然后变成子问题继续做 . 于是我们把每个数看做一条覆盖\(n-cnt[n]+1 \sim n\)的一条线段,那么有解的前提是\(1\sim n\)中的每个数都被覆盖了. 如果没有,需要调整多少次呢? 可以发现,我们可以花费一的代价将一条线段的长度-1,再将另一条线段长度…