Prime Subtraction
给出 x,y,判断 y 加上多个素数后能否变成 x
int main()
{IOS;rush(){ll x,y;cin>>x>>y;ll res=x-y;if(res==1) cout<<"NO"<<endl;else cout<<"YES"<<endl;}//PAUSE;
}
B - Kill `Em All (贪心)
给出 n 个坐标,可以发射多枚导弹,导弹打在 坐标 x 上,x 上的怪物被消灭,大于 x 的怪物被打到 x+d 处,小于 x 的怪物被打到 x-d 处,若被打倒 坐标 x 处,且 x<=0,这怪物血量清零,问最少要多枚导弹
const int N=1e5+5;int n,m,t;int i,j,k;int a[N];map<int,int> mp;int main()
{IOS;rush(){int r;cin>>n>>r;int cur=0;mp.clear();for(i=1;i<=n;i++){//unique 操作int x;cin>>x;if(!mp[x]){ a[++cur]=x,mp[x]=1; }}sort(a+1,a+1+cur);int ans=0,pos=cur;int num=0;while(true){if(pos==0) break;//debug(pos);ans++;num+=r;//debug(a[pos-1]-num);if(a[pos-1]-num>0) pos--;else break;}cout<<ans<<endl;}//PAUSE;
}
C - Standard Free2play (模拟)
有一座山有 1~h 个台阶,现有 n 个台阶凸出来,当处于 x 坐标处,x,x-1 的状态会反转,当掉到 x-2 处不会有问题,但是掉到 x-3处就会摔倒,但是可以花费 1 元钱改变任意台阶的状态,求最小花费
例如有台阶 100 50 那么可以直接 0 花费到达 51 处的台阶
const int N=2e5+5;int n,m,t;int i,j,k;int a[N];map<int,int> mp;int main()
{IOS;rush(){int h;cin>>h>>n;for(i=1;i<=n;i++) cin>>a[i];a[n+1]=0;int now=a[1];int ans=0;for(i=2;i<=n+1;i++){if(now-a[i]!=1) now=a[i]+1;if(now==1) break;if(a[i]-a[i+1]==1) now=a[i+1],i++;else{now=a[i+1]+1;ans++;}}cout<<ans<<endl;}PAUSE;
}
D - AB-string
给定一个长度为 n 的字符串,且仅由A、B组成,从中寻找回文子串,字串长度大于 1
只有类似于 ABBB,BAAA,AAAB,BBBA 不含回文段,其他均含回文段,所以只要统计这四种非目标字串即可
int main()
{IOS;while(cin>>n){string s;cin>>s;ll ans=0;for(i=0;i<n;i++){if(s[i]=='A'){for(j=i-1;j>=0;j--){if(s[j]=='B') ans++;else break;}for(j=i+1;j<n;j++){if(s[j]=='B') ans++;else break;}}else{for(j=i-1;j>=0;j--){if(s[j]=='A') ans++;else break;}for(j=i+1;j<n;j++){if(s[j]=='A') ans++;else break;}}}for(i=1;i<n;i++){if(s[i]!=s[i-1]) ans--;}cout<<n*1ll*(n-1)/2-ans<<endl;}//PAUSE;
}
Adilbek and the Watering System
一个容量为 c 升的浇水机器,一开始有 c0 升水,它每分钟会消耗 1 升水,有 n 个人,第 i 个人会在第 ti 时刻,带来 ai 升水,并每升卖 bi 元,求使抽水机在 m 时刻水量 >0 的最少花费,