A. Diverse Substring

找普遍性(特殊解即可)。

最简单的便是存在一个区间\([i, i + 1] (1 <= i < n)\),且$str[i] $ $ != str[i + 1]$,就满足题意了。

对于其他的有可能满足的序列,必须存在:

这个字母的出现次数 $ <= $ 除这个字母之外的出现次数总和。

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
const int N = 1010;
int n;
char str[N];
int main(){
cin >> n >> (str + 1);
for(int i = 1; i < n; i++){
if(str[i] != str[i + 1]){
printf("YES\n%c%c\n", str[i], str[i + 1]);
return 0;
}
}
puts("NO");
return 0;
}

B. Vasya and Books

设 \(dep\) 为已知取出的层数,初始化为\(0\),\(cnt[i]\)代表i数字出现的位置

每次处理一个数字\(x\):

1、若$cnt[x] <= dep $,意味着这个数已经被清理了,直接输出\(0\)即可

2、否则,则将\(x - dep\)的数全部清理。

#include <iostream>
#include <cstdio>
using namespace std;
const int N = 200010;
int n, a[N]; int main(){
scanf("%d", &n);
for(int i = 1, x; i <= n; i++)
scanf("%d", &x), a[x] = i;
int dep = 0;
for(int i = 1; i <= n; i++){
int x; scanf("%d", &x);
if(a[x] <= dep) printf("0 ");
else printf("%d ", a[x] - dep), dep = a[x];
}
return 0;
}

C. Vasya and Robot

显然,如果修改长度为\(len\)可以成功,那么修改长度$ > len$的也都可以成功。

(可以让修改的那部分不变,剩下的照搬)

满足单调性,既可二分。

可以处理前缀和,来预处理除了\([l ,l + len - 1]\)区间外另外的部分走到的部分。

因为符合交换律(先走$[1, l - 1] 与 [l + len, n] \(的路径,再走\)[l ,l + len - 1]$ 结果不变),所以一次前缀和即可完成任务。

\(check()\)函数的书写需要注意,不单单需要曼哈顿距离(即从$(nx, ny) -> (tx, ty) \(的最短路径​ )\) >= len$,而且哈密尔路径的奇偶性必须和曼哈顿距离一样,否则无论怎样都到不了。

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
const int N = 200010;
int n, tx, ty, x[N], y[N];
char str[N];
bool inline check(int len){
for(int l = 1, r = len; r <= n; l++, r++){
int nx = x[n] - (x[r] - x[l - 1]);
int ny = y[n] - (y[r] - y[l - 1]);
int dist = abs(tx - nx) + abs(ty - ny);
if(len >= dist && (dist & 1) == (len & 1)) return true;
}
return false;
}
int main(){
scanf("%d%s%d%d", &n, str + 1, &tx, &ty);
for(int i = 1; i <= n; i++){
x[i] = x[i - 1], y[i] = y[i - 1];
if(str[i] == 'U') y[i]++;
else if(str[i] == 'D') y[i]--;
else if(str[i] == 'L') x[i]--;
else if(str[i] == 'R') x[i]++;
}
if(!check(n)) puts("-1");
else{
int l = 0, r = n;
while(l < r){
int mid = (l + r) >> 1;
if(check(mid)) r = mid;
else l = mid + 1;
}
printf("%d", r);
} return 0;
}

D. Berland Fair

可以预处理每次\(m\)对应的买的糖果,对其取模,因为这几次的行为是相同的,可以加快速度。

存在两数\(a\)、\(b\)且吗满足\(a >= b\),则一定满足$a % b <= a / 2 $。

#include <iostream>
#include <cstdio>
using namespace std;
typedef long long LL;
const int N = 200010;
int n, a[N], cnt;
LL T, s = 2, ans = 0;
int main(){
cin >> n >> T;
for(int i = 1; i <= n; i++) scanf("%d", a + i);
while(s){
s = cnt = 0;
for(int i = 1; i <= n; i++)
if(s + a[i] <= T) s += a[i], cnt++;
ans += (T / s) * cnt;
T %= s;
}
return 0;
}

Codeforces Edu Round 53 A-D的更多相关文章

  1. Educational Codeforces Round 53 E. Segment Sum(数位DP)

    Educational Codeforces Round 53 E. Segment Sum 题意: 问[L,R]区间内有多少个数满足:其由不超过k种数字构成. 思路: 数位DP裸题,也比较好想.由于 ...

  2. Educational Codeforces Round 53 (Rated for Div. 2) (前五题题解)

    这场比赛没有打,后来补了一下,第五题数位dp好不容易才搞出来(我太菜啊). 比赛传送门:http://codeforces.com/contest/1073 A. Diverse Substring ...

  3. Codeforces Beta Round #49 (Div. 2)

    Codeforces Beta Round #49 (Div. 2) http://codeforces.com/contest/53 A #include<bits/stdc++.h> ...

  4. Codeforces Beta Round #80 (Div. 2 Only)【ABCD】

    Codeforces Beta Round #80 (Div. 2 Only) A Blackjack1 题意 一共52张扑克,A代表1或者11,2-10表示自己的数字,其他都表示10 现在你已经有一 ...

  5. Codeforces Beta Round #62 题解【ABCD】

    Codeforces Beta Round #62 A Irrational problem 题意 f(x) = x mod p1 mod p2 mod p3 mod p4 问你[a,b]中有多少个数 ...

  6. Codeforces Beta Round #83 (Div. 1 Only)题解【ABCD】

    Codeforces Beta Round #83 (Div. 1 Only) A. Dorm Water Supply 题意 给你一个n点m边的图,保证每个点的入度和出度最多为1 如果这个点入度为0 ...

  7. Codeforces Beta Round #13 C. Sequence (DP)

    题目大意 给一个数列,长度不超过 5000,每次可以将其中的一个数加 1 或者减 1,问,最少需要多少次操作,才能使得这个数列单调不降 数列中每个数为 -109-109 中的一个数 做法分析 先这样考 ...

  8. CodeForces Global Round 1

    CodeForces Global Round 1 CF新的比赛呢(虽然没啥区别)!这种报名的人多的比赛涨分是真的快.... 所以就写下题解吧. A. Parity 太简单了,随便模拟一下就完了. B ...

  9. Codeforces Global Round 1 - D. Jongmah(动态规划)

    Problem   Codeforces Global Round 1 - D. Jongmah Time Limit: 3000 mSec Problem Description Input Out ...

随机推荐

  1. Flink处理函数实战之二:ProcessFunction类

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  2. Python_scrapyRedis零散

    1. # Redis 1.解压,配环境变量 2.win上设置自启动 redis-server --service-install D:\redis\redis.windows.conf --logle ...

  3. Javaweb项目页面实时显示后台处理结果

    http://www.cnblogs.com/dong-xu/p/6701271.html 此博文甚好,项目参照博主代码可实现. 前端页面: <%@ page language="ja ...

  4. PHP代码审计入门(SQL注入漏洞挖掘基础)

    SQL注入漏洞 SQL注入经常出现在登陆页面.和获取HTTP头(user-agent/client-ip等).订单处理等地方,因为这几个地方是业务相对复杂的,登陆页面的注入现在来说大多数是发生在HTT ...

  5. python-基础入门-6快速入门总结

    快速入门 程序输出: 1.print语句,字符串用双引号括起来 _在解释器中表示最后一个表达式的值. print语句 与字符串格式(%)结合使用,能实现字符串替换功能. >>>pri ...

  6. 02python开发之基本运算符

    02 python开发之基本运算符 目录 02 python开发之基本运算符 2 基本运算符 2.1 算数运算符 2.1.1 种类 2.1.2 用法 2.2 比较运算符 2.2.1 种类 2.2.2 ...

  7. 如何在Visio 中插入各种数学公式?

    在Visio 2007老版本中,插入公式可以直接在插入图片中选择,但是在后来的Visio2013中却无法直接通过插入图片的方法插入,那么该如何在visio 2013中插入公式呢? 具体的操作步骤如下: ...

  8. 为什么思维导图软件MindManager成为了企业培训必备的工具

    企业培训,无论是前期准备.中间的演讲演示.还是后期的总结整理等.MindManager都可以以不同的形式,给你更好的培训方式.下面就来看看MindManager是怎么协助企业培训的吧: 前期准备--制 ...

  9. 从这三方面优化你的电脑,保持Mac运行流畅

    使用着Mac系统的用户都知道,Mac OS的各方面性能都很好,特别是流畅性,有人说不用清理垃圾也能流畅地使用Mac,但这的确是夸张了.电脑使用的时间长了,它的性能总会越来越退步,这其中有着系统垃圾拖累 ...

  10. 和功能相近的虚拟机软件相比,CrossOver的产品优势有哪些?

    很多用户其实并不喜欢虚拟机软件,他们只是想用回熟悉的Windows应用程序,因为苹果系统与许多软件并不兼容.无奈之下,他们只能安装虚拟机软件.可是虚拟机软件大多比较笨重并且也相对复杂一些,在后期维护上 ...