传送门

# 4.24一个重要的日子.
我人生中第一道7个测试点下载了5个的题目被我发现了,第一次用光下载数据点机会,真心坑点重重.

这题是一道很经典的贪心题目,可能是因为我太蒻了,导致我一直以为最少普及难度.

我用了几乎从未用过的"指针"(加这->  ""  <-个的原因是这个“指针”是模拟指针);

这个题的贪心策略应该都明白:找第一个开始下降的那个数删,如果一直上升删最后一个。原理就不解释了;

这个题每个字符设一个指针,指向他的下一个(不是下一个字符而是下一个非空字符),这样形成了一个伪链表;

不说了,上带注释代码(有一点点瑕疵)

#include<bits/stdc++.h>
using namespace std;
struct po {//结构体(别问我po什么意思)
char sh;//字符(该序号)
int z;//指针(后继)
};
po a[];
int u;//记录字符串长度
int main() {
int s;
while() {
++u;
a[u-].z=u;//初始化后继
a[u].sh = getchar();//读入
if(a[u].sh == '') {//这里也可以不处理
a[u].sh = '!';
} if(a[u].sh == '\n')//换行的时候结束
break;
}
u--;//减去'\n'的长度
scanf("%d",&s);//输入要减去的个数
if(a[].sh ==''&&a[].sh =='!'&&s==){//最后一个数据点我自己本地测过了,但提交就WA
cout<<;//于是就打表了....大家可以屏蔽这几行把下面某几行的注释去掉,本地可以过
return ;
}
int uu=;//记录是否一直上升趋势
for(int i=; i<=s; i++) {//循环s次
for(int j=; j<u;) {//循环u-i个,至于为什这样写留给大家思考
if(a[j].sh > a[a[j].z].sh &&a[j].sh!='-'&&a[a[j].z].sh!='-') {//标记过的不要管,如果某突然个下降了
a[j].sh = '-';//标记
int pp=j-;
while(a[pp].sh == '-')//拆开链表,重新接上
pp--;
a[pp].z = a[j].z ;
uu++;//标记
break;//每次只能去掉一个
}
j = a[j].z ;//找下一个非空字符
}
if(uu==) {//若一直上升,去掉最后一个
a[u].sh = '-';
}
uu=;
// for(int k=1; k<=u; k++) {//如果不理解过程可以"解封"这些然后体会一下
// cout<<k<<"->"<<a[k].z <<" ";
// }
// for(int k=1; k<=u; k++) {
// cout<<a[k].sh ;
// }
// cout<<endl;
}
int oo=;//输出每个非空字符
int uuu=;//去除前导0
for(int i=; i<=u-s; i++) {//循环u-s次
oo = a[oo].z ;//每次找他的后继
if(uuu!=||a[oo].sh !='!'){//之前写过'!'代表0
uuu++;
if(a[oo].sh !='!')
cout<<a[oo].sh ;
else //如果是'!'就输出0
cout<<;
}
}
// if(uuu==0)//如果什么也没输出
// cout<<"0";//补0
return ;
}

洛谷p1106 删数问题 题解的更多相关文章

  1. 洛谷P1106 删数问题

    题目描述 键盘输入一个高精度的正整数N,去掉其中任意k个数字后剩下的数字按原左右次序将组成一个新的正整数.编程对给定的N和k,寻找一种方案使得剩下的数字组成的新数最小. 输出应包括所去掉的数字的位置和 ...

  2. 洛谷 P1106 删数问题

    一定要认真审题   “去掉其中任意k个数字后剩下的数字按原左右次序将组成一个新的正整数”   也就是说 输入:7893400   4     输出:300  (00在原顺序中位于3后边) 输入:789 ...

  3. 洛谷——P1106 删数问题

    https://www.luogu.org/problem/show?pid=1106 题目描述 键盘输入一个高精度的正整数N,去掉其中任意k个数字后剩下的数字按原左右次序将组成一个新的正整数.编程对 ...

  4. (Java实现) 洛谷 P1106 删数问题

    题目描述 键盘输入一个高精度的正整数NN(不超过250250位) ,去掉其中任意kk个数字后剩下的数字按原左右次序将组成一个新的正整数.编程对给定的NN和kk,寻找一种方案使得剩下的数字组成的新数最小 ...

  5. 洛谷P2426 删数 [2017年4月计划 动态规划12]

    P2426 删数 题目描述 有N个不同的正整数数x1, x2, ... xN 排成一排,我们可以从左边或右边去掉连续的i(1≤i≤n)个数(只能从两边删除数),剩下N-i个数,再把剩下的数按以上操作处 ...

  6. 【题解】洛谷P2426删数

    链接 https://www.luogu.org/problemnew/show/P2426 念念碎 第一次接触到区间DP(瑟瑟发抖) 所以象征性地看了一下题解 这好像是一道比较基础的区间DP吧 但是 ...

  7. 洛谷 P1102 A-B数对 题解

    P1102 A-B 数对 题目描述 出题是一件痛苦的事情! 题目看多了也有审美疲劳,于是我舍弃了大家所熟悉的 A+B Problem,改用 A-B 了哈哈! 好吧,题目是这样的:给出一串数以及一个数字 ...

  8. 洛谷 P2426 删数

    题目传送门 解题思路: 区间DP,f[i][j]表示区间i~j可获得的最大值,因为本题的所有区间是可以直接一次性把自己全删掉的,所以所有区间初始化为被一次性删除的值,然后枚举断点,跑区间DP. AC代 ...

  9. 洛谷P1012 拼数 【题解】

    **原题链接** 题目描述 设有n个正整数(n ≤ 20),将它们联接成一排,组成一个最大的多位整数. 例如:n=3时,3个整数13,312,343联接成的最大整数为:34331213 又如:n=4时 ...

随机推荐

  1. Windows Server2012 R2 安装.NET Framework 3.5

    拿到手的虚拟机系统是Windows server 2012R2,本想着安装SQlserver2012轻轻松松,结果途中警告未安装.NET Framework 3.5.于是找了个.NET Framewo ...

  2. C#调用DLL文件提示试图加载格式不正确的程序

    最近在调用第三方的DLL遇到了一个问题:试图加载格式不正确的程序,找了好久发现都没有解决问题,一直报错,后来发现是程序编译时的配置错了,要将项目->属性->平台选中release-X86 ...

  3. .net core引用错误的Entity Framework而导致不能正常迁移数据的解决办法

    本人刚学.net core,因此在学习过程中会遇上许许多多的坑.每一位初学者最大的问题在于资料的查看不仔细或是没有正确理解里面的内容,导致在后面自己在不知道错误的情况下做了一个小动作.对于完全没有理解 ...

  4. Redis源码 - 事件管理

    Redis 的事件分类 分类 描述 定时器 线程内定时响应,更新缓存时间.关闭非活动的客户端连接等等 pipe 线程间通信,用于其他线程通知主线程退出aeApiPoll() unixsocket 本地 ...

  5. JGUI源码:prefixfree 这个库有时候会引起网页一直加载中(10)

    如题,大部分情况下正常,但是chrome频繁刷新时,会出现这个问题,控制台没有异常信息.最终放弃使用引用第三方库prefixfree.min.js

  6. solr7.5--win10--部署使用

    2018年8月份学习使用solr,当时下载的版本是solr7.5,写这篇博文的时候是2019年3月份,solr此时已经出到了8.0版本.一个大版本的变迁肯定有很多的改动,暂时还未研究就不赘述了. 此篇 ...

  7. 剑指Offer-翻转单词顺序列

    题目描述 牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上.同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思.例如,"st ...

  8. raw_input与input

    raw_input 不管用户输入的是什么,最后打印的类型都会是str字符串类型 input 会根据用户的输入变换成相应的类型,但是需要注意的是我们用户在输入字符或者字符串的时候,需要给他们加上双引号, ...

  9. Excel 将A表的基础数据拼接到B表中来-三种方法: ctrl+回车, VLOOKUP()函数,宏

    A表  基础信息表 B表 业务信息表 将a表中的基础数据 拼接到B表的后面, 应用场景是: B表很多数据,很繁乱,名字不一定全, A表也是比较多的行,B表乱:比如有8行有李晨的,却只有3行是范仲淹的, ...

  10. Could not find a package configuration file provided by "Qt5Widgets"

    解决: sudo apt install qttools5-dev