单调栈--删除一串数字的k个数使最后结果最小

题目:http://betterang.club/problem.php?id=1205

单调栈--删除一串数字的k个数使最后结果最小_第1张图片

#include
#define ll long long
using namespace std;
ll t,k,p=1,len;
void slove(){
    stack m,n;//单调栈 
    string c;
    vector s;//为什么用vector? 因为数太多-_- 
    cin>>c;
    cin>>k;
    len=c.length();
    for(ll i=0;ic[i] && len-k-m.size()len-k) m.pop();//保证栈中有len-k个元素 
	while(!m.empty()){//由于栈元素的先进后出 所以要把栈中元素倒置才能将所求结果存在数组s中 
		//cout<3){
		s[p-1]+=3;
		s[p-2]+=3;
		s[p-3]+=2;
	    
		for(ll i=p-1;i>0;i--){
			if(s[i]>9) {
				s[i-1]+=s[i]/10;s[i]%=10;
			}
		}
		if(s[0]>9) {//考虑最高位进位 
			cout<

 

你可能感兴趣的:(补,C++)