传送门:>Here<

从来没打过\(CF\)(由于太晚了)…… 不知道开学了以后有没有机会能够熬夜打几场,毕竟到现在为止都是\(unrated\)好尴尬啊~

今天早上打了几题前几天的比赛题……

A. \(Doggo \ Recoloring\)

此题应当是签到题,但我还是傻了很久。很容易发现只要有任意一种狗的颜色超过\(1\),那么这种狗就是可以变色的。那么它永远只需要变为任意一个与他相邻的狗的颜色,数量不会减少反而增多。因此可以不停变下去。于是我们只需要统计一下是否有一种颜色是大于等于两个的

代码就不贴了

B. \(Weakened \ Common \ Divisor\)

题意为给出\(N\)个整数对,要求找出任意一个数,能够被任意一对中的其中一个数整除。称为\(WCD\)

我的想法是先预处理出第一对的两个数的所有因子,然后遍历所有处理出来的因子,遍历后面的每一对——如果当前因子合法就输出。最后留下来的因子里随便取一个即可。\(T\)了第\(45\)个点……

事实上慢就慢在我们不能够处理因子,而是应当处理素因子。因为如果一个非素数\(x\)能够作为\(WCD\),那么\(x\)的所有素因子肯定都可以满足。

/*By DennyQi 2018*/
#include <cstdio>
#include <queue>
#include <cstring>
#include <algorithm>
#include <cmath>
#define r read()
using namespace std;
typedef long long ll;
const int MAXN = 10010;
const int MAXM = 20010;
const int INF = 1061109567;
inline int Max(const int a, const int b){ return (a > b) ? a : b; }
inline int Min(const int a, const int b){ return (a < b) ? a : b; }
inline int read(){
int x = 0; int w = 1; register char c = getchar();
for(; c ^ '-' && (c < '0' || c > '9'); c = getchar());
if(c == '-') w = -1, c = getchar();
for(; c >= '0' && c <= '9'; c = getchar()) x = (x<<3) + (x<<1) + c - '0'; return x * w;
}
int N,lim,t1;
ll f[200010],a[200010],b[200010];
inline void Fenjie(ll a){
for(ll i = 2; i * i <= a; ++i){
if(a % i == 0){
f[++t1] = i;
while(a % i == 0){
a /= i;
}
}
}
if(a > 1){
f[++t1] = a;
}
}
int main(){
N = r;
for(int i = 1; i <= N; ++i){
a[i] = r, b[i] =r ;
}
Fenjie(a[1]);
Fenjie(b[1]);
bool flg = 0;
for(int i = 1; i <= t1; ++i){
flg = 0;
for(int j = 2; j <= N; ++j){
if((a[j]%f[i] != 0) && (b[j]%f[i] != 0)){
flg = 1;
break;
}
}
if(!flg){
printf("%lld", f[i]);
return 0;
}
}
printf("-1");
return 0;
}

C. \(Plasticine \ zebra\)

给出一个字符串,每个字符不是\(b\)就是\(w\)。每一次操作可以选择一个断点,然后让断点两边的全部翻转。无论操作几次。定义一个斑马串,其相邻元素不重复、问最大的斑马串是多长?也就是要通过若干次操作找到最长的\(bwbwbw..\)或\(wbwbwb...\)

找到一个断点然后两边都翻转实际上是可以等价的。例如一个字符串\(abcdefgh\),在\(c\)后面断了,那么就变为\(abc \ | \ defgh\),翻转后得到\(cbahgfed\)。我们发现其等价于\(abc\)放到\(defgh\)后面,然后整个翻转。而如果我们找到了一个斑马串,其翻过来依然是斑马串。因此我们只需要把字符串本身复制一遍接在后面,然后在这个两倍的字符串中找到最长的斑马串。(长度不能超过\(N\))。

为什么这样就好了呢?依然距离,将\(abcdefg\)复制一遍得到\(abcdefgabcdefg\)。任取一段长度为\(N\)的连续的子序列,其头尾相当于断点。因此这就相当于枚举了断点了

/*By DennyQi 2018*/
#include <cstdio>
#include <queue>
#include <cstring>
#include <algorithm>
#define r read()
using namespace std;
typedef long long ll;
const int MAXN = 10010;
const int MAXM = 20010;
const int INF = 1061109567;
inline int Max(const int a, const int b){ return (a > b) ? a : b; }
inline int Min(const int a, const int b){ return (a < b) ? a : b; }
inline int read(){
int x = 0; int w = 1; register char c = getchar();
for(; c ^ '-' && (c < '0' || c > '9'); c = getchar());
if(c == '-') w = -1, c = getchar();
for(; c >= '0' && c <= '9'; c = getchar()) x = (x<<3) + (x<<1) + c - '0'; return x * w;
}
int N,ans;
char s[200010];
int f[200010];
int main(){
scanf("%s", s);
N = strlen(s);
for(int i = N; i < 2 * N; ++i) s[i] = s[i-N];
for(int i = 0; i < 2 * N; ++i){
if(i - 1 >= 0){
if(s[i] != s[i-1]){
f[i] = f[i-1] + 1;
}
else{
f[i] = 1;
}
}
else{
f[i] = 1;
}
if(f[i] <= N){
ans = Max(ans, f[i]);
}
}
printf("%d", ans);
return 0;
}

另外的几道题暂时还没做,有时间再更吧……

Codeforces Round #505 Div. 1 + Div. 2的更多相关文章

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

  2. Educational Codeforces Round 60 (Rated for Div. 2) - D. Magic Gems(动态规划+矩阵快速幂)

    Problem   Educational Codeforces Round 60 (Rated for Div. 2) - D. Magic Gems Time Limit: 3000 mSec P ...

  3. Educational Codeforces Round 43 (Rated for Div. 2)

    Educational Codeforces Round 43 (Rated for Div. 2) https://codeforces.com/contest/976 A #include< ...

  4. Educational Codeforces Round 35 (Rated for Div. 2)

    Educational Codeforces Round 35 (Rated for Div. 2) https://codeforces.com/contest/911 A 模拟 #include& ...

  5. Codeforces Educational Codeforces Round 44 (Rated for Div. 2) F. Isomorphic Strings

    Codeforces Educational Codeforces Round 44 (Rated for Div. 2) F. Isomorphic Strings 题目连接: http://cod ...

  6. Codeforces Educational Codeforces Round 44 (Rated for Div. 2) E. Pencils and Boxes

    Codeforces Educational Codeforces Round 44 (Rated for Div. 2) E. Pencils and Boxes 题目连接: http://code ...

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

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

  8. Educational Codeforces Round 39 (Rated for Div. 2) G

    Educational Codeforces Round 39 (Rated for Div. 2) G 题意: 给一个序列\(a_i(1 <= a_i <= 10^{9}),2 < ...

  9. Educational Codeforces Round 48 (Rated for Div. 2) CD题解

    Educational Codeforces Round 48 (Rated for Div. 2) C. Vasya And The Mushrooms 题目链接:https://codeforce ...

  10. Educational Codeforces Round 60 (Rated for Div. 2) 题解

    Educational Codeforces Round 60 (Rated for Div. 2) 题目链接:https://codeforces.com/contest/1117 A. Best ...

随机推荐

  1. H5 40-CSS精灵图

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  2. Python-类的封装

    1:封装数据 将数据隐藏起来这不是目的.隐藏起来然后对外提供操作该数据的接口,然后我们可以在接口附加上对该数据操作的限制,以此完成对数据属性操作的严格控制. class Teacher: def __ ...

  3. Python—time模块介绍

    time 模块 在平常的代码中,我们常常需要与时间打交道.在Python中,常用的与时间处理有关的模块就包括:time,datetime,下面来介绍time模块. 在开始之前,首先要说明几点: 一.在 ...

  4. prime算法

    参考博客:https://blog.csdn.net/lqcsp/article/details/14118871 复杂度:O(n*n) #include <iostream> #incl ...

  5. 关于XLL加载项动态加载、卸载的演示及XLL函数自定义类型注册的演示

    1.在XLL中,把函数定义成不同的类型,在Excel中的实际效果也不同,具体如下: pxMacroType value                                          ...

  6. 如何使用RSS

    (转载: http://www.ruanyifeng.com/blog/2006/01/rss.html) 一. 自从我发现很多人不知道什么是RSS以后,我就一直想向大家介绍它,因为它太有用了,将来会 ...

  7. spring AOP源码分析(一)

    对于springAOP的源码分析,我打算分三部分来讲解:1.配置文件的解析,解析为BeanDefination和其他信息然后注册到BeanFactory中:2.为目标对象配置增强行为以及代理对象的生成 ...

  8. 打印module查看参数

    module1下的index.js require('./test2') main.js require('./module1')和require('./module2') 打印每个文件的module ...

  9. 用mescroll实现无限上拉增加数据,下拉刷新数据 (学习笔记)

    最近自己做一个web app需要用到上拉查询下页数据,网上看了很多很多帖子,发现并不能快速的套用,总是会出现各种问题无法使用,于是无奈自己跑去看了官方api文档,终于做了出来,至此做个笔记,以后用到可 ...

  10. linux ps命令用法

    -A    列出所有的进程-w    显示加宽可以显示较多的资讯-au    显示较详细的资讯-aux    显示所有包含其他使用者的行程 -A 显示所有进程(等价于-e)(utility)-a 显示 ...