• 1321C


    (colorbox{Orange}{贪心策略:每次挑选字典序最大的删除.})

    (那为什么呢?)

    (回顾一下题目,当且仅当有比自己小1的字母在附近才能把自己删去)

    (color{Red}{字典序最大的字母永远不会作为其他字母的辅助字母删去其他字母})

    (比如当前最大字典序字母是d,因为d只能协助e,没有e,d就是废物)

    (d在中间,只会阻挡两边的字母相互消去,所以删去d)

    #include <bits/stdc++.h>
    using namespace std;
    int n;
    string s;
    bool sovle()
    {
    	for(int i=25;i>=0;i--)
    	{
    		char w=char(i+'a');
    		for(int j=0;j<s.length();j++)
    		{
    			if(s[j]!=w)	continue;
    			if(j!=0&&s[j-1]==w-1)
    			{
    				s.erase(j,1);
    				return true;	
    			}			
    			if(j!=s.length()-1&&s[j+1]==w-1)
    			{
    				s.erase(j,1);
    				return true;
    			}
    		}
    	}
    	return false;
    }
    int main()
    {
    	int ans=0;
    	cin>>n>>s;
    	//先从最大的开始消灭起 
    	while(sovle())	ans++;
    	cout<<ans;
    }
    
  • 相关阅读:
    KMP总结
    条件概率的计算
    EL和JSTL
    tomcat部署web项目
    web
    面试1
    面试可能会问的题
    简介
    建一个springboot项目
    刷题之牛客网
  • 原文地址:https://www.cnblogs.com/iss-ue/p/12862327.html
Copyright © 2020-2023  润新知