CF Round #530 Div2
A.
尛你 \(\%\%\%\)
B.
题意:你需要在平面上画 \(n(n \le 10 ^ 9)\) 个 \(1 \times 1\) 的正方形,且顶点都在整点上,每次可以画一条长度为 \(1\) 的线段,画过的线段可以新生成一条并且可以平移(跟原线段构成矩形的对边)且不算画的数量,问最少需要画多少次。
首先我们发现我们画的线段数量其实是整个大图形的水平宽度加长度,那么根据均值不等式画的越正越优,因此我们从一个正方体开始不断往上累加拼成大正方体这样一定最优,打个表发现答案应该是 \(2 \ 3 \ 4 \ 4 \ 5 \ 5 \ 6 \ 6 \ 6 \ 7 \ 7 \ 7 \ 8 \ 8 \ 8 \ 8 \cdots\) 不难发现相同答案的长度从 \(1\) 开始一次递增每次加一,并且每段重复两边,于是可以使用等差数列求和直接输出答案了。
C.
题意:给你一串长度为 \(n(n \le 200)\) 的字符串,由小写字母,\(*\) 和 \(?\) 组成,保证每个 \(*, ?\) 之前都有一个小写字母。给定一个 \(k\) 你需要构造一个长度为 \(k\) 的字符串,满足下列条件:
如果在原序列中后面没有 \(*, ?\) 那么这个字符必须留下来。
\(*\) 前的字符可以留下也可以不留下,或者能重复若干次写入你构造的序列。
\(?\) 前的字符可以留下也可以不留下。
首先我们判断不合法的情况,如果必须保留的字母数量大于 \(k\) 显然不可能,如果没有 \(*\) 且字母数量小于 \(k\) 显然不可能。剩下的情况我们直接把 \(?\) 前面的字母全不加进来,随意选一个 \(*\) 之前的字母重复放入知道满足条件即可。
D.
题意:给定一颗大小为 \(n(n \le 10 ^ 5)\) 的树,每个点有非负点权,我们定义一个点的 \(s_u\) 为 \(u\) 到根节点的点权之和。现在你只知道奇数层的 \(s_u\),需要你构造出每个点的点权满足条件且所有点点权和最小。
首先判断不合法的情况,对于任意一个点 \(u\) 如果在 \(u\) 的子树内存在一点 \(v\) 满足 \(s_v > s_u\) 那么显然不合法。接下来我们有一个贪心,每个不确定的点放点权为 \(0\) 但这样是错的,因为我们越往上放点权所需要的花费最小,那么我们就只需要把能往上放的点权尽可能往上放即可,即对每个不确定的点 \(u\) 放 \(\min{s_v - s_{fa}}, v, fa\) 是 \(u\) 的儿子和父亲,对每个确定的点放 \(s_u - s_{fa}\) 就一定可以保证答案最小。
E.
题意:给你一个 \(n \times m(n \times m \le 3 \times 10 ^ 5)\) 的矩阵,由 \(A, G, C, T\) 组成,现在问你最少需要改变多少个位置,使得每个 \(2 \times 2\) 的矩阵中都恰好包含 \(A, G, C, T\) 四种字符。
首先我们假设确定了左上角一个 \(3 \times 2\) 的矩阵,那么我们就能把整个矩阵推出来,显然我们直接暴力枚举这个 \(3 \times 2\) 的矩阵就可以做了,但还可以跑得更快,只需要枚举左上角 \(2 \times 2\) 的矩阵,那么第三行的前两个元素就一定和第一行的前两个元素相同,这样枚举的复杂度可以降到 \(4! \times 2 = 48\)。注意特判 \(n = 2\) 的情况。
F.
题意:给你一颗大小为 \(n(n \le 10 ^ 5)\) 的有根树,每个节点上有一些饼干,第 \(i\) 个节点上有 \(x_i\) 块饼干,小 \(A\) 在第 \(i\) 个节点上吃一块饼干需要花费 \(t_i\) 的时间。现在小 \(S\) 想阻止小 \(A\) 继续吃饼干,最开始小 \(A\) 在 \(1\) 号点,每次小 \(A\) 可以往当前点的任意一个儿子走,接着小 \(S\) 会摧毁当前小 \(A\) 所在节点和一个儿子之间的连边。最终小 \(A\) 可以选择在任意一个点停下,她会沿着先前的路径回到 \(1\) 号点并吃掉一些饼干,要求小 \(A\) 走到一个点,回去,吃饼干的总时间不超过 \(T\) 问小 \(A\) 最终最多能吃到多少饼干。小 \(A\) 和小 \(S\) 每次都会进行当前的最优操作。
首先小 \(A\),小 \(S\) 都会进行最优操作,那么小 \(S\) 一定会找到一个最优的儿子然后把边删掉,那么小 \(A\) 每次就只能选择次优的儿子。那么我们可以直接 \(dp\),令 \(dp_i\) 为在 \(i\) 子树内的点包括 \(i\) 停止返回能吃到的最多饼干。那么每次我们就直接从儿子的最大值转移即可,而到点 \(i\) 直接折返的答案我们显然可以直接贪心吃这条路径上花费时间最小的饼干,这个答案可以使用权值线段树二分来做。最终答案就是 \(dp_1\),要注意的是小 \(A\) 是先手,那么在 \(1\) 号点一定会往最优的儿子走。
CF Round #530 Div2的更多相关文章
- CF Round #580(div2)题解报告
CF Round #580(div2)题解报告 T1 T2 水题,不管 T3 构造题,证明大约感性理解一下 我们想既然存在解 \(|a[n + i] - a[i]| = 1\) 这是必须要满足的 既然 ...
- CF round #622 (div2)
CF Round 622 div2 A.简单模拟 B.数学 题意: 某人A参加一个比赛,共n人参加,有两轮,给定这两轮的名次x,y,总排名记为两轮排名和x+y,此值越小名次越前,并且对于与A同分者而言 ...
- [CF Round #295 div2] C. DNA Alignment 【观察与思考0.0】
题目链接:C. DNA Alignment 题目大意就不写了,因为叙述会比较麻烦..还是直接看英文题面吧. 题目分析 经过观察与思考,可以发现,构造的串 T 的每一个字符都与给定串 S 的每一个字符匹 ...
- [CF Round #294 div2] E. A and B and Lecture Rooms 【树上倍增】
题目链接:E. A and B and Lecture Rooms 题目大意 给定一颗节点数10^5的树,有10^5个询问,每次询问树上到xi, yi这两个点距离相等的点有多少个. 题目分析 若 x= ...
- [CF Round #294 div2] D. A and B and Interesting Substrings 【Map】
题目链接:D. A and B and Interesting Substrings 题目大意 给定26个小写字母的权值,一共26个整数(有正有负). 给定一个小写字母组成的字符串(长度10^5),求 ...
- A. Grasshopper And the String(CF ROUND 378 DIV2)
A. Grasshopper And the String time limit per test 1 second memory limit per test 256 megabytes input ...
- A. Alyona and Numbers(CF ROUND 358 DIV2)
A. Alyona and Numbers time limit per test 1 second memory limit per test 256 megabytes input standar ...
- CF Round#436 div2
额,这次的题目其实挺智障的.所以通过这次比赛,我也发现了自己是一个智障.... 不说太多,说多是泪... A. Fair Game 题意:给你一个数组,看你能否把它均分为两个所有元素均相同的子数组. ...
- CF Round #569 Div2(contest1180)
比赛链接:http://codeforces.com/contest/1180 Problem A 题意:给出n,问方块数.看图理解... Solution: 找一找规律就可以了,发现方块数为2n*( ...
随机推荐
- Codeforces 450D:Jzzhu and Cities(最短路,dijkstra)
D. Jzzhu and Cities time limit per test: 2 seconds memory limit per test: 256 megabytes input: stand ...
- ZOJ 3870:Team Formation(位运算&思维)
Team Formation Time Limit: 2 Seconds Memory Limit: 131072 KB For an upcoming programming contest, Ed ...
- C++ switch 语句的用法
C++ 判断 一个 switch 语句允许测试一个变量等于多个值时的情况.每个值称为一个 case,且被测试的变量会对每个 switch case 进行检查. C++ 中 switch 语句的语法: ...
- element ui el-tree回显问题及提交问题(当后台返回的el-tree相关数组的时候,子菜单未全部选中,但是只要父级菜单的id在数组中,那么他的子菜单为全部选中状态)
1:问题原因:我们可能使用 this.$refs.tree.setCheckedKeys(this.defalutArr);或者使用:default-expanded-keys="treeD ...
- 编写Java程序_输入三个整数x,y,z,请把这三个数由小到大输出,请写出实现代码。(3种方法)
要求说明: 输入三个整数x,y,z,请把这三个数由小到大输出. 实现代码: 第1种方法: import java.util.Scanner; public class xyzMaxMin{ publi ...
- jsp:useBean的scope属性
目录 1.分类 2.page 3.request 4.session 5.application 1.分类 对于jsp:useBean创建的对象,由jsp:useBean的可选属性scope指定,可以 ...
- 深入 Laravel 内核之 PHP 反射机制和依赖注入
结论: PHP中提供了反射类来解析类的结构: 通过反射类可以获取到类的构造函数及其参数和依赖: 给构造函数的参数递归设置默认值后,即可使用这些带默认值的参数通过 newInstanceArgs 实例化 ...
- hadoop 之 hadoop2.7.7升级到hadoop2.8.5
服务器规划 准备阶段 停服务 stop-yarn.sh stop-dfs.sh 备份 备份NameNode目录 ---------- 101,102操作 ----------------- hdfs- ...
- 初识python: 自定义函数
什么是函数? 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段.函数能提高应用的模块性,和代码的重复利用率. 函数的定义方法: def test(x): '函数定义方法' x+=1 r ...
- antd递归渲染左侧菜单