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 ...
随机推荐
- Dynamics 365中显示格式为URL的字段极少部分URL值录入了不显示怎么回事?
微软动态CRM专家罗勇 ,回复318或者20190315可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me!我的网站是 www.luoyong.me . 对于如下类型的字段, ...
- google zxing android扫描优化&解析
这里先给出zxing包的源码地址 zip包:https://codeload.github.com/zxing/zxing/zip/master Github:https://github.com/z ...
- Java递归方法遍历二叉树的代码
将内容过程中经常用的内容做个记录,如下内容内容是关于Java递归方法遍历二叉树的内容. package com.wzs; public class TestBinaryTree { public st ...
- dede二级导航
{dede:channelartlist} {dede:field name='typeurl'/}'——{dede:field name='typename'/} {dede:channel typ ...
- SQLServer 日期函数及日期转换数据类型
一.统计语句 1.--统计当前[>当天00点以后的数据] SELECT * FROM 表 WHERE CONVERT(Nvarchar, dateandtime, 111) = CONVERT( ...
- Rx响应式编程
RX响应式编程就是异步数据流编程:单击事件或事件总线;(观察者模式) 有一堆的函数能够创建流,也能将任何流-,也能将任何流进行组合和过滤.一个流能够作为另一个流的输入,能够将两个流合并,可以通过过滤流 ...
- mybatis常见错误
1.传入单个参数为list时 List<Objects> query(@param("list") List<String> list) <selec ...
- HTML基础-------HTML标签(2)
HTML标签(2) a标签(容器级单标签) 语义:跳转到指定的连接 属性 列表系列 1.无序列表 该列表由两部分组成:ul标签嵌套li标签(ul标签是典型的容器级标签) 图示: 2.有序列表 该列表由 ...
- python接口自动化-传 json 参数
一.post请求有两种方法传json参数: 1.传json参数(自动转 json ) 2.传data参数(需 json 转换) 代码参考: payload = { "Jodie": ...
- golang 实现HTTP代理和反向代理
正向代理 package main import ( "fmt" "io" "net" "net/http" " ...