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 ...
随机推荐
- 小tips:使用rem+vw实现简单的移动端适配
首先设置meta属性,如下代码: <meta name="viewport" content="width=device-width, initial-scale= ...
- 5分钟掌握var,let和const异同
转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者.原文出处:https://dzone.com/articles/javascript-difference-b ...
- Odoo薪酬管理 公式配置
薪酬计算的一般原理是:在基本工资的基础上,加上各种津贴,减去社保.公积金.个税等各种扣除项之后,得出最终的实发工资.此外,还要计算社保.公积金等公司应该承担的部分. 在同一公司中,针对不同的地区.不同 ...
- spring javaconfig druidsource
package dataConfig; import java.sql.SQLException; import org.springframework.context.annotation.Bean ...
- Android 注解框架对比
Java的注解(Annotation)相当于一种标记,在程序中加入注解就等于为程序打上某种标记,标记可以加在包,类,属性,方法,本地变量上.然后你可以写一个注解处理器去解析处理这些注解(人称编译时注解 ...
- java:数据结构(二)栈的应用(括号匹配)
一.什么是括号匹配: 括号匹配就是利用计算机辨别表达式里面的括号是否书写成功 例如: {()((a)) }这就是一个正确 (()() 这就是一个错误的 二.括号匹配的算法: 众所周知,括号分为花括 ...
- Docker-通过docker-maven-plugin插件实现docker镜像构建并自动发布到远程docker服务器
我们知道,docker能实现应用打包隔离,实现快速部署和迁移.如果我们开发应用使用了spring cloud + spring boot架构,那么,通过docker-maven-plugin实现快速构 ...
- REST教程
REST教程 越来越多的人开始意识到,网站即软件,而且是一种新型的软件.这种"互联网软件"采用客户端/服务器模式,建立在分布式体系上,通过互联网通信,具有高延时(high late ...
- June 28th. 2018, Week 26th. Thursday
You cannot change the circumstances but you can change yourself. 既然改变不了环境,那就改变自己. From Jim Rohn. Rec ...
- IdentityServer4客户端如何获取自定义声明,了解一下?
前言 久违了各位,之前录制过IdentityServer4的基础视频(https://space.bilibili.com/319652230/#/),有兴趣了解的童鞋可以看一下,只不过未发表成博客. ...