【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]的区别,我当时一愣,这俩有区别吗,好像有,但是忘记了啊,因 ...
随机推荐
- 2-2 selenium IDE自动化实战
Selenium IDE 自动化实战 任务1: 自动在百度搜索"我要自学网" 然后在搜索结果页面点击进入自学网主页 任务2 实现自学网自动登录个人账号 Test2017 12345 ...
- NSK DD马达 直驱电机 RS232通信连接
NSK DD马达 通信连接 通信测试平台 驱动器:NSK EDC系列 电机:NSK PS1006KN系列 电机线:UVW对应红白黑. 电源线:Main和Ctrl电路220V交流电供电即可. 测试软件: ...
- Android下的IPC通信方式
一.Bundle Android的Activity.Service.Receiver都支持在Intent传递Bundle数据,Bundle实现了Parcelable接口, 所以能很方便的在不同进程之间 ...
- 第四十四篇:Git分支(关键知识点)
好家伙, GIT分支 分支就像是平行宇宙,两个平行宇宙自己平行,不相干扰,平安无事, 某一天它想不开,合并了.然后就变成了我写这篇博客的动机了. 1.关于Git分支中常用的指令 列出所有分支 git ...
- KingbaseES的SQL语句-CTE递归
背景 从上下级关系表中,任意一个节点数据出发,可以获得该节点的上级或下级.CTE的递归语法,或者 connect by 与 start with的 查询语法,能够实现这个需求. 当我们需要制作上下级关 ...
- csp每日习题
欢迎加入:qq群号:1054587486 做题链接:https://csp.ccf.org.cn/csp/index.action?_access_code=1584494752035 点击模拟考试进 ...
- dp-位移模型(数字三角形演变)
由数字三角形问题演变而来下面的题: https://www.cnblogs.com/sxq-study/p/12303589.html 一:规定位移方向 题目: Hello Kitty想摘点花生送给她 ...
- SQL CASE语句的使用
SQL CASE语句的使用 CASE是一个控制流语句,其作用与IF-THEN-ELSE语句非常相似,可根据数据选择值. CASE语句遍历条件并在满足第一个条件时返回值. 因此,一旦条件成立,它将短路, ...
- 一步步搞懂MySQL元数据锁(MDL)
某日,路上收到用户咨询,为了清除空间,想删除某200多G大表数据,且已经确认此表不再有业务访问,于是执行了一条命令'delete from bigtable',但好长时间也没删完,经过咨询后,获知dr ...
- 【To B产品怎么做?】泛用户体验
目录 - 什么是泛用户体验? - 如何做好泛用户体验? - 泛用户体验有什么用? *预计阅读时间15分钟 不知道你有没有过这种体验,客服妹子的声音软糯,氛围微妙,用词标准,张口就是:给你带来了不好的体 ...