【Virt.Contest】CF1155(div.2)
CF 传送门
T1:Reverse a Substring
只有本身单调不减的字符串不能转换为字典序更小的字符串。否则肯定会出现 \(s_i>s_{i+1}\) 的情况。
所以只要从头到尾扫一遍,找到 \(s_i>s_{i+1}\) 的位置,输出 \(i+1\) 与 \(i+2\) 即可(从 \(0\) 开始)。
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;
}
\(3min\) 速切
T2:Game with Telephone Numbers
洛谷上是蓝题,感觉虚高
首先得知 Vasya 应该删掉靠前的 \(8\),而 Petya应该删掉靠前的但不是 \(8\) 的数字(比如样例1中的 \(3\)),这样才能让剩余的 \(8\) 往前靠。
所以只需要处理前面的 \(s.size()-11+1\) 位即可(虽然只删到 \(s.size()-11\) 为止,但如果剩下第一位刚好是 \(8\) 也可以,如样例1,所以多判一位)。若 \(8\) 比非 \(8\) 多,则 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;
}
\(12min\) \(AC\)
T3:Alarm Clocks Everywhere
首先容易想到,要使闹钟在 \(x_1,x_2,x_3...x_n\) 分钟都响一次,其时间间隔必须是所有 \(x_i-x_{i-1}\) $(1<i \le n) $ 的公因数。开始时间设为 \(x_1\) 即可。
所以只要先求出所有 \(x_i-x_{i-1}\) $(1<i \le n) $ 的最大公因数,再判断其是否能整除 \(p_i\) 即可。若可以整除,则答案就是 \(x_1\),\(i\)。
注意要开 \(long long\)
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;
}
\(20min\) \(AC\)
T4:Beautiful Array
定义 \(f[0/1/2][i]\) 表示当前在第 \(i\) 位,\(0\) 代表还没用过 \(\times x\),\(1\) 代表正在用 \(\times x\),\(2\) 代表 \(\times x\) 已经用过了。
得出三个转移方程:
- \(f[0][i]=\max(f[0][i-1]+a[i],\max(a[i],0))\)
- \(f[1][i]=\max(\max(f[0][i-1],f[1][i-1])+a[i]*x,\max(a[i]*x,0))\)
- \(f[2][i]=\max(\max(f[0][i-1],\max(f[1][i-1],f[2][i-1]))+a[i],\max(a[i],0))\)
因为每次产生的都可能是最优答案,所以每次处理完 \(ans\) 取 \(\max\) 即可。
注意要开 \(long long\)
#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;
}
\(1h\) \(03min\) \(AC\) \(qwq\)
T5:Guess the Root
首先可以得知,十次多项式得知十一组 \(i,j\) 就一定可以确定,所以和交互库进行十一次询问,再用高斯消元法求出多项式,最后暴力代入即可。
结果在 \(mod(10^6+3)\) 下,除法就可以改成逆元。
——来自 \(\color{red}{Fido\_Puppy}\) 巨佬的 题解
如果某次交互给出的答案是 \(0\),就可以直接输出。
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
黑题,告辞 \(qwq\)
【Virt.Contest】CF1155(div.2)的更多相关文章
- 【Virt.Contest】CF1321(div.2)
第一次打虚拟赛. CF 传送门 T1:Contest for Robots 统计 \(r[i]=1\) 且 \(b[i]=0\) 的位数 \(t1\) 和 \(r[i]=0\) 且 \(b[i]=1\ ...
- 【Virt.Contest】CF1215(div.2)
第二次打虚拟赛. CF 传送门 T1:Yellow Cards 黄色卡片 中规中矩的 \(T1\). 首先可以算出一个人也不罚下时发出的最多黄牌数: \(sum=a1*(k1-1)+a2*(k2-1) ...
- 【小瑕疵】在div里插入img后在底部留有缝隙怎么解决
[本文转载自http://blog.sina.com.cn/s/blog_9fd5b6df01013mld.html] 图片IMG与容器下边界之间有空隙怎么办?这里介绍3中简单的解决方法. 第一,给图 ...
- 【Codeforces Round】 #432 (Div. 2) 题解
Codeforces Round #432 (Div. 2, based on IndiaHacks Final Round 2017) A. Arpa and a research in Mexi ...
- 【Codeforces Round】 #431 (Div. 2) 题解
Codeforces Round #431 (Div. 2) A. Odds and Ends time limit per test 1 second memory limit per test ...
- 【CSS基础】实现 div 里的内容垂直水平居中
方案一: 所有内容垂直水平居中 兼容性:IE8+. 条件:内容宽度和高度可以未知,可以是多行文字.图片.div. 描述:使用table-cell + vertical-align , html代码见文 ...
- 【java web】--css+div总结
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/ ...
- 【网摘】监控 div 的内容变化
数据是动态加载而来,而当无数据时,提示一下暂无数据.而数据是可以动态在当前页面即时添加的,故在无数据时所做提示,需要隐藏,所以找了这个方法.成功在动态添加数据后,暂无数据的提示没有了. if($(&q ...
- 两种隐藏元素方式【display: none】和【visibility: hidden】的区别
此随笔的灵感来源于上周的一个面试,在谈到隐藏元素的时候,面试官突然问我[display: none]和[visibility: hidden]的区别,我当时一愣,这俩有区别吗,好像有,但是忘记了啊,因 ...
随机推荐
- 面试突击78:@Autowired 和 @Resource 有什么区别?
@Autowired 和 @Resource 都是 Spring/Spring Boot 项目中,用来进行依赖注入的注解.它们都提供了将依赖对象注入到当前对象的功能,但二者却有众多不同,并且这也是常见 ...
- JavaScript之数组常用API
这篇文章主要帮助大家简单理解数组的一些常用API用法,许多小伙伴常用方法记不住?别急,看完下面的介绍您一定就会明白各个方法是如何用的了.该文章适合新手小白看,大佬可以多多指点️! 1.数组的创建以及A ...
- 离线方式安装高可用RKE2 (版本: v1.22.13+rke2r1)记录
说明: 想要了解RKE2可以到官网(https://docs.rke2.io 或 https://docs.rancher.cn/docs/rke2/_index/)看最新资料 用官网给出的离线安装( ...
- Hive数据仓库工具基本架构和入门部署详解
@ 目录 概述 定义 本质 特点 Hive与Hadoop关系 Hive与关系型数据库区别 优缺点 其他说明 架构 组成部分 数据模型(Hive数据组织形式) Metastore(元数据) Compil ...
- .NET Core Web APi类库如何内嵌运行?
话题 我们知道在.NET Framework中可以嵌入运行Web APi,那么在.NET Core(.NET 6+称之为.NET)中如何内嵌运行Web Api呢,在实际项目中这种场景非常常见,那么我们 ...
- Elasticsearch : alias数据类型
就像其他的很多语言一样,我们可以给已有的变量取一个别名(alias).即便是对高级语言一样,比如我们定义不同的指针变量,指向同一个内存空间.这个有些类似别名的概念. 在Elasticsearch中,我 ...
- centos7.2 安装MongoDB
1.配置阿里云yum仓库 #vim /etc/yum.repos.d/mongodb-org-4.0.repo [mngodb-org] name=MongoDB Repository baseurl ...
- KubeOperator界面,集群详情中的存储,存储提供商
点击"添加",假设选择的类型是rook-ceph,表示的是在这个k8s集群里创建rook-ceph集群,而不是显示已经存在的集群 意味着可以使用这种办法在k8s集群里创建rook- ...
- Logstash:使用Logstash将电子邮件导入到Elasticsearch
- PAT (Basic Level) Practice 1013 数素数 分数 20
令 Pi 表示第 i 个素数.现任给两个正整数 M≤N≤104,请输出 PM 到 PN 的所有素数. 输入格式: 输入在一行中给出 M 和 N,其间以空格分隔. 输出格式: 输出从 PM 到 ...