Codeforces Edu Round 57 A-D
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 + n) * n / 2\)
- 前缀字母与后缀字母一样,则要么留下前缀,要么留后缀,还有就是都去掉。
- 否则,则两者可以都选,独立事件可以相乘。
#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", °);
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的更多相关文章
- Codeforces Beta Round #57 (Div. 2)
Codeforces Beta Round #57 (Div. 2) http://codeforces.com/contest/61 A #include<bits/stdc++.h> ...
- Codeforces Educational Round 57
这场出题人好像特别喜欢998244353,每个题里都放一个 A.Find Divisible 考察选手对输入输出的掌握 输出l 2*l即可(为啥你要放这个题,凑字数吗 #include<cstd ...
- 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 ...
- Codeforces Beta Round #57 (Div. 2) E. Enemy is weak
求满足条件的三元组的个数,可以转换求一元组和二元组组成的满足条件的三元组的个数,且对于(x),(y,z),x > y,且x出现的p_x < p_y. x可直接枚举O(n),此时需要往后查询 ...
- Codeforces Beta Round #80 (Div. 2 Only)【ABCD】
Codeforces Beta Round #80 (Div. 2 Only) A Blackjack1 题意 一共52张扑克,A代表1或者11,2-10表示自己的数字,其他都表示10 现在你已经有一 ...
- 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]中有多少个数 ...
- Codeforces Beta Round #83 (Div. 1 Only)题解【ABCD】
Codeforces Beta Round #83 (Div. 1 Only) A. Dorm Water Supply 题意 给你一个n点m边的图,保证每个点的入度和出度最多为1 如果这个点入度为0 ...
- Codeforces Beta Round #13 C. Sequence (DP)
题目大意 给一个数列,长度不超过 5000,每次可以将其中的一个数加 1 或者减 1,问,最少需要多少次操作,才能使得这个数列单调不降 数列中每个数为 -109-109 中的一个数 做法分析 先这样考 ...
- CH Round #57 - Story of the OI Class 凯撒密码
很有意思的一道题目 考场上想的是HASH成一个整数,把末位asicc码值*1,依次乘*10,得到一个整数,然后利用等差性.唯一性快排Nlogn乱搞的 证明如下: 对于明文abcde 密文 bcdef ...
随机推荐
- uboot——初始化阶段
start.S |-------------设置cpu状态 |--------------开cache |--------------获得启动方式 |------------------------- ...
- centos6 安装 terminator
yum install terminator 报错: No package terminator available. 解决: yum install epel-release 报错 Cannot r ...
- vue 切换主题(换肤)功能
一:先写好两个css样式放在static文件夹中 二:在index.html中添加css link链接 <link rel="stylesheet" id="sty ...
- linux文件cat/tac/more/less/head/tail/find/vimdiff
ls查看目录文件里的文件: [root@localhost test]# ls a aa b c -d选项查看目录文件自身信息: [root@localhost test]# ll -d drw ...
- ubuntu无法关机
在/etc/default/halt 增加下面 INIT_HALT = POWEROFF 另一种方法: I have the same problem and found a solution whi ...
- 建议收藏,从零开始创建一个Activiti工作流,手把手教你完成
环境配置 项目环境: JDK1.8 tomcat7 maven3.5 开发工具: IDEA activiti7 创建项目 目标:创建一个maven项目,集成Activiti,并自动生成25张数据库表 ...
- JS中 `=+` 是什么?
JS中 =+ 是什么? 依然是赋值 =是赋值,+代表后面的数字为正数,同理=-代表后面的数字为负数 用处 相当于告诉编译器,即将赋值的数值类型为数字类型,不要把数字当作字符串去拼接 示例 functi ...
- SpringBoot 之 @ControllerAdvice 拦截异常并统一处理
在spring 3.2中,新增了@ControllerAdvice 注解,可以用于定义@ExceptionHandler.@InitBinder.@ModelAttribute,并应用到所有@Requ ...
- NO.A.0002——Git简史及安装教程/创建本地仓库/提交项目到本地仓库/误删还原
一.Git简史及同类产品对比: 1.git简史: 同生活中的许多伟大事件一样,Git 诞生于一个极富纷争大举创新的年代.Linux 内核开源项目有着为数众广的参与者.绝大多数的 Linu ...
- SHEIN:Java开发面经
SHEIN面经 我觉得除技术外,自信是一个非常关键的点. 一面 自我介绍: 谈谈实习经历: 讲讲你实习的收获: 如何设计规范的接口?(简历上有写,所以问到) 当你需要修改两个月前的代码时,如何去整理以 ...