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. Netlink 内核实现分析 3

    Netlink IPC 数据结构 #define NETLINK_ROUTE 0 /* Routing/device hook */ #define NETLINK_UNUSED 1 /* Unuse ...

  2. binary hacks读数笔记(共享库)

    共享库从文件结构上来讲,与共享对象没什么区别.Linux下,共享库就是普通的ELF共享对象. 1.共享库命名: libname.so.x.y.z :其中最前面使用前缀lib,中间是库的名字和后缀&qu ...

  3. 在一个递增数组的rotate变换中找target

    Search in Rotated Sorted Array Suppose an array sorted in ascending order is rotated at some pivot u ...

  4. maven pom.xml 报错

    首先介绍背景,在eclipse中导入一个maven的项目,在我之前的电脑上导入好用,在自己的电脑上导入居然pom报错了Missing artifact junit:junit:jar:4.11,还会有 ...

  5. CSS属性(CSS盒子模型)

    1.CSS盒子模型 <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset=&q ...

  6. Java 的反射机制你了解多少?

    不知道多少次听说过了Java反射机制的使用,比如:Spring 框架如何实例化IoC容器中的Bean,编码过程中如何动态的清理对象中的字段信息等等.工作中只是听说.看同事们编码实践,但是自己却只是概念 ...

  7. git设置个人信息

    git config --global user.name "username" 设置下自己提交的用户名 git config --global user.email " ...

  8. Vegas视频的音频叠加效果怎么实现,可以用其他软件吗

    有时我们会用Vegas为某段影片配音,我们要怎么把配音和背景声融合在一起呢?想必马上会有人反应过来:让配音和背景声分别置于两条轨道上就好了.这当然是一个相当好的方式. 可是,如果我想要把两段音频合成一 ...

  9. Ⅶ. Policy Gradient Methods

    Dictum:  Life is just a series of trying to make up your mind. -- T. Fuller 不同于近似价值函数并以此计算确定性的策略的基于价 ...

  10. Java设计模式——观察者模式的灵活应用

    灵感来源于一个猪队友给我的题目 看到这个,我抓住的关键字是:任何子任务失败,要通知所有子任务执行取消逻辑. 这不就是消息广播吗?观察者模式! 干活 首先是收听者 package com.example ...