C. Poman Numbers 题解(思维+贪心)
题目链接
题目思路
玄学打表发现规律,即最后一个元素一定是正贡献,倒数第二个为负贡献
前面的正负随意分配,然后参考这个题目链接贪心即可
代码
#include<bits/stdc++.h>
#define fi first
#define se second
#define debug cout<<"I AM HERE"<<endl;
using namespace std;
typedef long long ll;
const int maxn=1e5+5,inf=0x3f3f3f3f,mod=1e9+7;
const double eps=1e-6;
ll base[30],c[30];
ll n,t;
char s[maxn];
signed main(){
base[0]=1;
for(int i=1;i<=26;i++){
base[i]=base[i-1]*2;
}
cin>>n>>t>>s+1;
t-=base[s[n]-'a']-base[s[n-1]-'a'];
n-=2;
for(int i=1;i<=n;i++){
t+=base[s[i]-'a'];
c[s[i]-'a'+1]++;
}
for(int i=26;i>=0;i--){
while(c[i]--){
if(t>=base[i]){
t-=base[i];
}
}
}
printf(t==0?"Yes\n":"No\n");
return 0;
}
不摆烂了,写题