传送门


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)的更多相关文章

  1. Educational Codeforces Round 63 (Rated for Div. 2) 题解

    Educational Codeforces Round 63 (Rated for Div. 2)题解 题目链接 A. Reverse a Substring 给出一个字符串,现在可以对这个字符串进 ...

  2. Educational Codeforces Round 63 (Rated for Div. 2) D. Beautiful Array (简单DP)

    题目:https://codeforces.com/contest/1155/problem/D 题意:给你n,x,一个n个数的序列,你可以选择一段区间,区间的数都乘以x,然后求出最大字段和 思路: ...

  3. 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 ...

  4. Educational Codeforces Round 63 (Rated for Div. 2) D dp(最大连续子序列)

    https://codeforces.com/contest/1155/problem/D 题意 一个n个数的数组\(a[i]\),可以选择连续的一段乘x,求最大连续子序列的值 题解 错误思路:贪心, ...

  5. Educational Codeforces Round 63 (Rated for Div. 2) B. Game with Telephone Numbers 博弈思维+模拟+贪心思维

    题意:博弈题面  给出一个数字序列 (>=11)  有两个人任意删除数字 直到 数字只剩下11位 如果删除后的数字串开头是8那么就是第一个赢 否则就是第二个人赢 第一个人先手  数字序列一定是奇 ...

  6. Educational Codeforces Round 63 (Rated for Div. 2) C. Alarm Clocks Everywhere gcd

    题意:给出一个递增的时间序列a  给出另外一个序列b  (都是整数) 以b中任选一个数字作为间隔  自己从1开始任选一个时间当成开始时间 输出选择的数字标号以及 开始时间 思路  直接求间隔的公共gc ...

  7. Educational Codeforces Round 63 (Rated for Div. 2) D. Beautiful Array 分类讨论连续递推dp

    题意:给出一个 数列 和一个x 可以对数列一个连续的部分 每个数乘以x  问该序列可以达到的最大连续序列和是多少 思路: 不是所有区间题目都是线段树!!!!!! 这题其实是一个很简单的dp 使用的是分 ...

  8. Educational Codeforces Round 63 (Rated for Div. 2) D. Beautiful Array(动态规划.递推)

    传送门 题意: 给你一个包含 n 个元素的序列 a[]: 定义序列 a[] 的 beauty 为序列 a[] 的连续区间的加和最大值,如果全为负数,则 beauty = 0: 例如: a[] = {1 ...

  9. 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 ...

随机推荐

  1. MySQL字段操作与数据处理

    一,对字段的操作 1.拼接字段:Concat()函数 多数DBMS使用 + 或者 || 来实现拼接,而MySQL使用 Concat() 函数来实现拼接. 实例: Concat()函数拼接时加上的字符需 ...

  2. Android视频录制从不入门到入门系列教程(三)————视频方向

    运行Android视频录制从不入门到入门系列教程(二)————显示视频图像中的Demo后,我们应该能发现视频的方向是错误的. 由于Android中,Camera给我们的视频图片的原始方向是下图这个样子 ...

  3. 解决SVN Cleanup错误: Failed to run the WC DB work queue associated with

    [内容来源自https://www.cnblogs.com/ANCAN-RAY/p/8961832.html] 在svn本地目录更新文件夹时,更新失败. 然后svn提示我,让我cleanup一下,于是 ...

  4. Java关于字符串工具类~持续汇总~

    /** * 01 * 描述:String的substring和replace方法使用 * [时间 2019年3月5日下午3:22:08 作者 陶攀峰] */ public static void te ...

  5. mssql sqlserver 将字段null(空值)值替换为指定值的三种方法分享

    摘要: 下文将分享两种将字段中null值替换为指定值的方法分享,如下所示: 实验环境:sqlserver 2008 R2 例: )) go insert into test(info)values(' ...

  6. 猴子选大王 (约瑟夫环)(c#)

    猴子选大王问题: 一堆猴子都有编号,编号是1,2,3 ...m ,这群猴子(m个)按照1到m的顺序围坐一圈, 从第1开始数,每数到第n个,该猴子就要离开此圈,这样依次下来,直到圈中只剩下最后一只猴子, ...

  7. Centos7 安装mysql-8.0.13(rpm)

    yum or rpm? yum安装方式很方便,但是下载mysql的时候从官网下载,速度较慢. rpm安装方式可以从国内镜像下载mysql的rpm包,比较快.rpm也适合离线安装. 环境说明 操作系统: ...

  8. linux杀毒软件ClamAV的安装使用

    1.安装依赖环境 yum install -y zlib openssl-devel yum groupinstall -y "Development Tools" apt ins ...

  9. 我的Windows日常——Excel 打开.xls .xlsx 文件格式或文件扩展名无效

    就问下各位,这个图,熟不熟?!! 不熟? 好吧当我没问,遇到过的没遇到过的都让我继续写下去吧.... 很多时候,我们新建了一个word文件,但是打开却会弹出这个小窗口,新建的文件出现这个问题,是什么原 ...

  10. kvm虚拟化

    1.kvm虚拟化介绍 什么是虚拟化 虚拟化就是通过模拟计算机硬件(cpu,内存,硬盘,网卡)来实现在一台物理服务器上运行同时多个不同的操作系统,并且使每个操作系统之间都是互相隔离的 为什么要学习虚拟化 ...