Educational Codeforces Round 63 (Rated for Div. 2)
A. Reverse a Substring
题意:
给你一串 s,让你判断能否通过反转区间[l,r]的元素,使得反转后的串的字典序小于 s;
如果能,输出 "YES",并输出任意的 l,r,并不需要所输出的 l,r 是所有满足条件的 l',r' 中的字典序最小的;
反之,输出"NO";
例如,如果串 s = "abaa"
你可以反转[2,3]得到 "aaba"
也可以反转[2,4]得到字典序更小的 "aaab"
输出其中一个答案即可;
AC代码:
#include<bits/stdc++.h>
using namespace std;
#define INF 0x3f3f3f3f
#define INFull ~0ULL
#define ll long long
#define ull unsigned long long
#define mem(a,b) memset(a,b,sizeof(a))
const int maxn=3e5+; int n;
char s[maxn]; void Solve()
{
int len=strlen(s+);
int ans=len+;
for(int i=;i <= len;++i)
if(s[i] < s[i-])//求出第一个下降的位置
{
ans=i;
break;
}
if(ans == len+)//如果没找到下降的位置
printf("NO\n");
else
{
printf("YES\n");
printf("%d %d\n",ans-,ans);//反转区间[ans-1,ans]
}
}
int main()
{
// freopen("C:\\Users\\hyacinthLJP\\Desktop\\in&&out\\contest","r",stdin);
scanf("%d",&n);
scanf("%s",s+);
Solve();
return ;
}
思考:
如果题干改为求反转区间[l,r]使得得到的串的字典序最小呢?
该怎么求呢?
B. Game with Telephone Numbers
题意:
给出你一个包含 n 个数字的串 s(n为奇数);
Vasya 和 Petya 个从中选取 (n-11)/2 个数字,删去,游戏从Vasya开始;
问 Vasya 能否必胜,必胜的条件是,删除后的串,s[0]='8';
AC代码:
#include<bits/stdc++.h>
using namespace std;
#define INF 0x3f3f3f3f
#define INFull ~0ULL
#define ll long long
#define ull unsigned long long
#define mem(a,b) memset(a,b,sizeof(a))
const int maxn=3e5+; int n;
char s[maxn]; char* Solve()
{
int len=strlen(s);
int need=(n-)/;//每人需要删除need元素
int tot8=;//s中'8'的总个数 for(int i=;i < len;++i)
if(s[i] == '')
tot8++;
if(tot8 <= need)//8的个数小于等于删除的个数
return "NO"; //最坏的情况是,Petya删除need个8
//那么,Vasya就需要将第need+1个8前的其他数字都删去
int tot=;//第need+1个8前的非'8'得个数
int cur=need+;
for(int i=;cur > && i < len;++i)
{
if(s[i] != '')
tot++;
else
cur--;
}
if(tot <= need)//可以删除这tot个非'8'数
return "YES";
else
return "NO";
}
int main()
{
// freopen("C:\\Users\\hyacinthLJP\\Desktop\\in&&out\\contest","r",stdin);
scanf("%d",&n);
scanf("%s",s);
printf("%s\n",Solve());
return ;
}
C. Alarm Clocks Everywhere
题意:
Ivan 在睡觉前定了闹铃;
闹铃在 a 时刻开始出声,每隔 b 时刻响一次;
Ivan 需要闹铃在 x1,x2,....,xn 时刻提醒他;
给出你 x1,x2,....,xn 和闹铃的间隔时刻 p1,p2,....,pm;
假设闹钟在 a 开始出声,能否在给出的时间间隔内使闹钟响的时刻满足Ivan的需求;
如果能,输出开始出声的时刻a和时间间隔对应在在p中的下标;
AC代码:
#include<bits/stdc++.h>
using namespace std;
#define INF 0x3f3f3f3f
#define INFull ~0ULL
#define ll long long
#define ull unsigned long long
#define mem(a,b) memset(a,b,sizeof(a))
const int maxn=3e5+; int n,m;
ll x[maxn];
ll p[maxn]; ll GCD(ll a,ll b)
{
return a == ? b:GCD(b%a,a);
} char* Solve()
{
ll gcd=x[]-x[];
for(int i=;i <= n;++i)
gcd=GCD(gcd,x[i]-x[i-]);//求所有时间间隔的GCD
int ans=;
for(int i=;i <= m;++i)
if(gcd%p[i] == )//如果找到gcd的因子
{
ans=i;
break;
}
if(ans == )
printf("NO\n");
else
{
printf("YES\n");
printf("%I64d %d\n",x[],ans);//从x[1]时刻开始,每隔p[ans]时刻提醒一次可以满足条件
}
}
int main()
{
// freopen("C:\\Users\\hyacinthLJP\\Desktop\\in&&out\\contest","r",stdin);
scanf("%d%d",&n,&m);
for(int i=;i <= n;++i)
scanf("%lld",x+i);
for(int i=;i <= m;++i)
scanf("%lld",p+i);
Solve();
return ;
}
Educational Codeforces Round 63 (Rated for Div. 2)的更多相关文章
- Educational Codeforces Round 63 (Rated for Div. 2) 题解
Educational Codeforces Round 63 (Rated for Div. 2)题解 题目链接 A. Reverse a Substring 给出一个字符串,现在可以对这个字符串进 ...
- Educational Codeforces Round 63 (Rated for Div. 2) D. Beautiful Array (简单DP)
题目:https://codeforces.com/contest/1155/problem/D 题意:给你n,x,一个n个数的序列,你可以选择一段区间,区间的数都乘以x,然后求出最大字段和 思路: ...
- Educational Codeforces Round 63 (Rated for Div. 2) E 带模高斯消元
https://codeforces.com/contest/1155/problem/E 题意 \(f(x)=a_0+a_1x+a_2x^2+...+a_kx^k,k \leq 10,0 \leq ...
- Educational Codeforces Round 63 (Rated for Div. 2) D dp(最大连续子序列)
https://codeforces.com/contest/1155/problem/D 题意 一个n个数的数组\(a[i]\),可以选择连续的一段乘x,求最大连续子序列的值 题解 错误思路:贪心, ...
- Educational Codeforces Round 63 (Rated for Div. 2) B. Game with Telephone Numbers 博弈思维+模拟+贪心思维
题意:博弈题面 给出一个数字序列 (>=11) 有两个人任意删除数字 直到 数字只剩下11位 如果删除后的数字串开头是8那么就是第一个赢 否则就是第二个人赢 第一个人先手 数字序列一定是奇 ...
- Educational Codeforces Round 63 (Rated for Div. 2) C. Alarm Clocks Everywhere gcd
题意:给出一个递增的时间序列a 给出另外一个序列b (都是整数) 以b中任选一个数字作为间隔 自己从1开始任选一个时间当成开始时间 输出选择的数字标号以及 开始时间 思路 直接求间隔的公共gc ...
- Educational Codeforces Round 63 (Rated for Div. 2) D. Beautiful Array 分类讨论连续递推dp
题意:给出一个 数列 和一个x 可以对数列一个连续的部分 每个数乘以x 问该序列可以达到的最大连续序列和是多少 思路: 不是所有区间题目都是线段树!!!!!! 这题其实是一个很简单的dp 使用的是分 ...
- Educational Codeforces Round 63 (Rated for Div. 2) D. Beautiful Array(动态规划.递推)
传送门 题意: 给你一个包含 n 个元素的序列 a[]: 定义序列 a[] 的 beauty 为序列 a[] 的连续区间的加和最大值,如果全为负数,则 beauty = 0: 例如: a[] = {1 ...
- Educational Codeforces Round 60 (Rated for Div. 2) - C. Magic Ship
Problem Educational Codeforces Round 60 (Rated for Div. 2) - C. Magic Ship Time Limit: 2000 mSec P ...
随机推荐
- css3动画--位移加阴影
animation: name duration timing-function delay iteration-count direction; 值 描述 animation-name 规定需要绑定 ...
- 读书笔记之_Win10 与Jmeter5.1.1界面兼容:
读书笔记之win10 与jmeter5.1.1界面兼容: 调整前:
- Kali Linux入坑之基本配置(2018.1)
我在?天前就决心如Kali的坑,然而安装kali呀vm tools呀更新呀弄了好几天.期间出现的各种问题在此汇总一下. 1.Kali的安装版本选择 在官网上看到的这么多Kali版本应该怎么选呢,在网上 ...
- sql server REPLACE 替换文本中的回车和换行符
--替换回车符 REPLACE(exp, CHAR(13), '') --替换换行符 REPLACE(exp, CHAR(10), '') --水平制表符 REPLACE(exp, CHAR( ...
- sql语句修改字段类型和增加字段
/*修改字段类型*/ ) go /*增加字段和说明*/ ) EXECUTE sp_addextendedproperty N'MS_Description','说明文字',N'user',N'dbo' ...
- kubeadm快速搭建k8s集群
环境 master01:192.168.1.110 (最少2核CPU) node01:192.168.1.100 规划 services网络:10.96.0.0/12 pod网络:10.244.0.0 ...
- 配置安全的管理访问(GNS3)
实验拓扑: 实验目的: 尝试用R2/R3远程登陆R1路由器并进行管理,在此之前先在R1配置安全的管理访问 1.端口IP配置 R1: e1/0 192.168.1.1/24 e1/1 192.168.2 ...
- Linux命令大杂烩
查看linux出口IP curl ifconfig.me scp跨服务器转移文件命令 scp 文件 root@IP:/application/apache-tomcat-8.0.36 回车, ...
- ubunru18.04下面安装docker
sudo apt-get updat // 更新apt包索引 sudo apt-get remove docker docker-engine docker-ce docker.io // 卸载旧版本 ...
- Elasticsearch 通关教程(四): 分布式工作原理
前言 通过前面章节的了解,我们已经知道 Elasticsearch 是一个实时的分布式搜索分析引擎,它能让你以一个之前从未有过的速度和规模,去探索你的数据.它被用作全文检索.结构化搜索.分析以及这三个 ...