A. Find Divisible

符合条件的区间一定可以选择\(l, l * 2\)。

证明\(l * 2 <= r\)

假设存在一组解,\(x, x * d (l <= x <= r, 2 <=d )\)。

因为必定满足条件则:\(l * 2 <= l * d <= x * d <= r\)。

#include <cstdio>
#include <iostream>
using namespace std;
int main(){
int T; scanf("%d", &T);
while(T--){
int l, r; scanf("%d%d", &l, &r);
printf("%d %d\n", l, l * 2);
}
return 0;
}

B. Substring Removal

扫描字符串的前缀和后缀:

  1. 若所有字母一样,方案数为所有子串\((1 + n) * n / 2\)
  2. 前缀字母与后缀字母一样,则要么留下前缀,要么留后缀,还有就是都去掉。
  3. 否则,则两者可以都选,独立事件可以相乘。
#include <iostream>
#include <cstdio>
using namespace std;
typedef long long LL;
const int N = 200010, MOD = 998244353;
int n;
char s[N];
int main(){
scanf("%d%s", &n, s + 1);
int l = 1, r = n;
while(s[l] == s[l + 1]) l++;
while(s[r] == s[r - 1]) r--;
if(l == n && r == 1) printf("%lld\n", ((LL)(1 + n) * n / 2) % MOD);
else if(s[l] == s[r]) printf("%lld\n", ((LL)(l + 1) * (n - r + 2)) % MOD);
else printf("%d\n", (l + (n - r + 1) + 1) % MOD);
return 0;
}

C. Polygon for the Angle

一个圆周角、圆心角定理的运用…发现当\(n = 180\) 的时候,所有\(deg < 179\) 都可以表示出来,\(n = 360\)时,所有度数均可满足,于是就可以枚举惹...

#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
const int N = 190;
int a[N * 2];
int main(){
for(int i = 3; i <= 360; i++){
for(int j = 1; j <= i - 2; j++){
if(180 * j % i == 0 && (!a[180 * j / i]))
a[180 * j / i] = i;
}
}
int T; scanf("%d", &T);
while(T--){
int deg; scanf("%d", &deg);
printf("%d\n", a[deg]);
}
return 0;
}

D. Easy Problem

\(f[i][j]\)表示前\(i\)个字符 清理到\(hard\) -> 前$ j$ 位的最小花费

每次遇到一个\(hard\)中字符,考虑可以让前 j- 1位不存在,也可以保持之前的状态,删除这个字符。

#include <cstdio>
#include <iostream>
#include <cstring>
using namespace std;
const int N = 100010;
typedef long long LL;
char s[N];
int n, a[N];
LL f[N][4];
//f[i][j] 前i个字符 清理到"hard" -> j 位
int main(){
memset(f, 0x3f, sizeof f);
for(int i = 0; i < 4; i++) f[0][i] = 0;
scanf("%d%s", &n, s + 1);
for(int i = 1; i <= n; i++) scanf("%d", a + i);
for(int i = 1; i <= n; i++){
for(int j = 0; j < 4; j++) f[i][j] = f[i - 1][j];
if(s[i] == 'h') f[i][0] = f[i - 1][0] + a[i];
if(s[i] == 'a') f[i][1] = min(f[i - 1][0], f[i - 1][1] + a[i]);
if(s[i] == 'r') f[i][2] = min(f[i - 1][1], f[i - 1][2] + a[i]);
if(s[i] == 'd') f[i][3] = min(f[i - 1][2], f[i - 1][3] + a[i]);
}
printf("%lld\n", f[n][3]);
return 0;
}

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

  1. Codeforces Beta Round #57 (Div. 2)

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

  2. Codeforces Educational Round 57

    这场出题人好像特别喜欢998244353,每个题里都放一个 A.Find Divisible 考察选手对输入输出的掌握 输出l 2*l即可(为啥你要放这个题,凑字数吗 #include<cstd ...

  3. Codeforces Beta Round #57 (Div. 2) A,B,C,D,E

    A. Ultra-Fast Mathematician time limit per test 2 seconds memory limit per test 256 megabytes input ...

  4. Codeforces Beta Round #57 (Div. 2) E. Enemy is weak

    求满足条件的三元组的个数,可以转换求一元组和二元组组成的满足条件的三元组的个数,且对于(x),(y,z),x > y,且x出现的p_x < p_y. x可直接枚举O(n),此时需要往后查询 ...

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

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

  6. 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]中有多少个数 ...

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

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

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

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

  9. CH Round #57 - Story of the OI Class 凯撒密码

    很有意思的一道题目 考场上想的是HASH成一个整数,把末位asicc码值*1,依次乘*10,得到一个整数,然后利用等差性.唯一性快排Nlogn乱搞的 证明如下: 对于明文abcde 密文 bcdef ...

随机推荐

  1. 四、API Gateway相关------微服务构架设计模式

  2. 基于Docker UI 配置ceph集群

    前言 前一篇介绍了docker在命令行下面进行的ceph部署,本篇用docker的UI进行ceph的部署,目前来说市面上还没有一款能够比较简单就能直接在OS上面去部署Ceph的管理平台,这是因为OS的 ...

  3. 有关String的那点事

    (1)String str1 = "abc"; System.out.println(str1 == "abc"); 步骤: 1) 栈中开辟一块空间存放引用st ...

  4. 这行代码告诉你!为什么你地下城与勇士(DNF)的装备强化老是失败?

    模拟地下城与勇士(DNF)的装备强化 tip1: DNF装备强化在+1-+3 不会失败: +4-+7,失败后物品原有强化等级降低1级: +8-+10,失败后掉3级: 10上11或以上就爆了. tip2 ...

  5. 移动端调试Web页面

    移动端调试Web页面 虽然可以在PC下,通过开发者工具,模拟移动端,但是这样只能模拟页面样式,对于代码的执行情况是无法模拟的,所以在此结合实际调试经验,针对安卓与IOS设备,进行总结. IOS 安卓 ...

  6. 下载器Folx怎么安装使用

    应该使用哪个下载工具?这个如果是Windows上会有无数答案的问题,在Mac上却变得异常的纠结.比如Leech和Aria2,这两款软件,前者功能相对比较简单,后者的配置又稍微有点复杂,很难找到一款相对 ...

  7. 怎么理解虚拟 DOM?

    一.前言 现在web前端的开发,对于MVVM框架的运用,那是信手拈来,用的飞起.一个xxx-cli工具,就能初始化一套模板,再填充业务代码,打包部署即可.但是会用,是一个方面,大家有没有底层深入思考一 ...

  8. yii2.0 中数据查询中 or、in、between 及session的使用

    1 HTML: 2 3 <div> 4 <form class="form-inline " method="get" action=&quo ...

  9. Sysbench对Mysql进行基准测试

    前言 1.基准测试(benchmarking)是性能测试的一种类型,强调的是对一类测试对象的某些性能指标进行定量的.可复现.可对比的测试. 进一步来理解,基准测试是在某个时候通过基准测试建立一个已知的 ...

  10. LeetCode双周赛#33 题解

    5480. 可以到达所有点的最少点数目 #贪心 题目链接 题意 给定有向无环图,编号从0到n-1,一个边集数组edges(表示从某个顶点到另一顶点的有向边),现要找到最小的顶点集合,使得从这些点出发, ...