【Virt.Contest】CF1155(div.2)
CF 传送门
T1:Reverse a Substring
只有本身单调不减的字符串不能转换为字典序更小的字符串。否则肯定会出现
所以只要从头到尾扫一遍,找到
Code:
#include<bits/stdc++.h>
using namespace std;
string s;
int n;
int main(){
scanf("%d",&n);
cin>>s;
for(int i=0;i<s.size()-1;i++){
if(s[i]>s[i+1]){
printf("YES\n");
printf("%d %d",i+1,i+2);
return 0;
}
}
printf("NO");
return 0;
}
T2:Game with Telephone Numbers
洛谷上是蓝题,感觉虚高
首先得知 Vasya
应该删掉靠前的 Petya
应该删掉靠前的但不是
所以只需要处理前面的 Petya
必胜。
Code:
#include<bits/stdc++.h>
using namespace std;
string s;
int n,cnt;
int main(){
scanf("%d",&n);
cin>>s;
for(int i=0;i<s.size()-10;i++){
if(s[i]=='8') cnt++;
else cnt--;
}
if(cnt>0) printf("YES");
else printf("NO");
return 0;
}
T3:Alarm Clocks Everywhere
首先容易想到,要使闹钟在
所以只要先求出所有
注意要开
Code:
#include<bits/stdc++.h>
using namespace std;
long long n,m,jg,a[300005],p;
int main(){
scanf("%lld%lld",&n,&m);
for(int i=1;i<=n;i++){
scanf("%lld",&a[i]);
if(i>1){
jg=__gcd(jg,a[i]-a[i-1]);
}
}
for(int i=1;i<=m;i++){
scanf("%lld",&p);
if(jg%p==0){
printf("YES\n");
printf("%lld %d",a[1],i);
return 0;
}
}
printf("NO");
return 0;
}
T4:Beautiful Array
定义
得出三个转移方程:
因为每次产生的都可能是最优答案,所以每次处理完
注意要开
#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll n,x,f[3][300005],a[300005],tmp,ans;
int main(){
scanf("%lld%lld",&n,&x);
for(int i=1;i<=n;i++){
scanf("%lld",&a[i]);
tmp=f[0][i-1]+a[i];
f[0][i]=max(tmp,max(a[i],0ll));
ans=max(ans,f[0][i]);
tmp=max(f[0][i-1],f[1][i-1])+a[i]*x;
f[1][i]=max(tmp,max(a[i]*x,0ll));
ans=max(ans,f[1][i]);
tmp=max(f[0][i-1],max(f[1][i-1],f[2][i-1]))+a[i];
f[2][i]=max(tmp,max(a[i],0ll));
ans=max(ans,f[2][i]);
}
printf("%lld",ans);
return 0;
}
T5:Guess the Root
首先可以得知,十次多项式得知十一组
结果在
——来自
如果某次交互给出的答案是
Code:
#include<bits/stdc++.h>
#define ll long long
#define mod 1000003
using namespace std;
int y;
ll qpow(ll x,int p){
ll ans=1;
while(p) {
if(p&1) ans=ans*x%mod;
x=x*x%mod;
p>>=1;
}
return ans;
};
int main() {
vector< vector <ll> > a(20,vector <ll> (20));
for(int i=1;i<=11;i++){
cout<<"? "<<i-1<<endl;
cin>>y;
if(y==0){
cout<<"! "<<i-1<<endl;
return 0;
}
ll P=1ll;
for(int j=1;j<=11;j++){
a[i][j]=P;
P=P*1ll*(i-1)%mod;
}
a[i][12]=y;
}
for(int i=1;i<=11;i++){
for(int j=i+1;j<=12;j++){
a[i][j]=a[i][j]*qpow(a[i][i],mod-2)%mod;
}
a[i][i]=1ll;
for(int j=1;j<=11;j++){
if(i!=j){
for(int k=i+1;k<=12;k++){
a[j][k]=(a[j][k]-a[j][i]*a[i][k]%mod+mod)%mod;
}
a[j][i]=0;
}
}
}
for(int i=0;i<mod;i++){
ll sum=0,P=1ll;
for(int j=1;j<=11;j++){
sum=(sum+P*a[j][12])%mod;
P=P*1ll*i%mod;
}
if(sum==0){
cout<<"! "<<i<<endl;
return 0;
}
}
cout<<"! -1";
return 0;
}
T6:Delivery Oligopoly
黑题,告辞
分类:
模拟赛
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话