针对第一个题解这样修改可以吗?蒟蒻求解
查看原帖
针对第一个题解这样修改可以吗?蒟蒻求解
361035
graspppp楼主2024/10/12 13:28

基本思路就是判断一下删了元素后的外层循环次数,针对不下降子序列而已。如果有更多的hack数据就好了

eg1 input: 8 11

eg1 output:9

eg2 input:9 12

eg2 output:99

#include<bits/stdc++.h>// hack 8 11
using namespace std;
//#define ture true  建议载入史册
typedef long long ll;
const int maxn = 1e6+5;
bool flag;
priority_queue<int,vector<int>,greater<int> > q;
int main()
{
	int n,m;
	string s,ans;
	q.push(1);
	cin>>n>>m;
	for(int i = 1;i <= n;i++)
	{
		int b = q.top();
		q.pop();
		q.push(b*2+1);
		q.push(b*4+5);
		string s2;
		stringstream s1;
		cout<<b;
		s1 << b;
		s1 >> s2;
		s += s2;
	}
	cout<<endl;
	int len = s.size();
	int cnt = 0;
	int num = 0;
	while(flag == 0 && num <= m)
	{
		for(int i = 0;i < s.size()-1;i++)
		{
			if(s[i] < s[i+1])
			{
				cnt++;
				s.erase(i,1);
				break;
			}
			if(cnt >= m)
			{	
			    flag = 1;
				cout<<s;
				return 0;
			}
		}		
		num++;
	}
	if(flag == 0)
	{
		for(int i = 0;i < len-m;i++)
		{
			cout<<s[i];
		}
	}
	return 0;
}

2024/10/12 13:28
加载中...