1.可以排序后判断字母和字符串长度
#include<bits/stdc++.h>
using namespace std;
int t;
string s;
int main()
{     cin>>t;
  for(int i=1;i<=t;++i)
  {
    cin>>s;
    sort(s.begin(),s.end());
    if(s.size()==5&&s[0]=='B'&&s[1]=='a'&&s[2]=='d'&&s[3]=='i'&&s[4]=='u')
    cout<<"Yes";
    else 
    cout<<"No";
    cout<<"\n"; 
  }
  
}
2.模拟染色,注意判断合法性’
#include<bits/stdc++.h>
using namespace std;
#define maxx 600
int n,a,b,m,k;
char c;
char all[maxx][maxx];
void ran(int i,int j,char ra)
{
  if(i<1||i>n) return;
  if(j<1||j>m) return;
  all[i][j]=ra;
}
int main()
{
	cin>>n>>m>>k;
    for(int i=1;i<=n;++i)
   for(int j=1;j<=m;++j)
    all[i][j]='.';
  for(int i=1;i<=k;++i)
  {
    cin>>a>>b>>c;
    for(int i=-2;i<=2;++i) ran(a+i,b,c);
    for(int i=-2;i<=2;++i) ran(a,b+i,c);
  }

  for(int i=1;i<=n;++i)
   {for(int j=1;j<=m;++j)
    cout<<all[i][j];
    cout<<"\n";
   }
  
}
3.可以计算每一项除了本项的和对x取模,后计算x与此值的差,即s%x=差(s<=p)就可以保证倍数,即(p-差)%x=0,个数为p-差/x+1,同时判断不修改是否合法。

#include<bits/stdc++.h>
using namespace std;
#define maxx 100600
int n,p,x,sum,a;
int all[maxx];

int main()
{
	cin>>n>>p>>x;
  for(int i=1;i<=n;++i)
  {cin>>all[i];
  sum=(sum+all[i])%x;
  }
  for(int i=1;i<=n;++i)
  {
    a=(sum-all[i]%x+x)%x;
    a=x-a;
    a=p-a;
    if(a<0) continue;
    ans=ans+a/x+1;
    if(sum%x==0&&all[i]<=p) --ans;
  }
  cout<<ans;
  
}
4.计算最近匹配括号,用栈来模拟,最近匹配括号同时成为了所有最长权值的匹配括号下的子括号,因为贪心的想,最近匹配括号对整体的影响最小。
#include<bits/stdc++.h>
using namespace std;
int a,ans;
string s;
stack<int> S;
int main()
{
	cin>>s;
  for(int i=0;i<s.size();++i)
  {
    if(s[i]=='(') S.push(i);
    else 
    {
      if(S.size()!=0)
      {a=S.top();
      S.pop();
      ans=ans+(s.size()-i)*(a+1);
      }
    }
  }
  
  cout<<ans*2;
}