| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> Codeforces Round #747 (Div. 2);AtCoder Beginner Contest 222;Educational Codeforces Round 115 (Div.2) -> 正文阅读 |
|
[数据结构与算法]Codeforces Round #747 (Div. 2);AtCoder Beginner Contest 222;Educational Codeforces Round 115 (Div.2) |
今天是2020.10.10,记录一下这三天的刷题。 前天晚上有场cf: Codeforces Round #747 (Div. 2)A. Consecutive Sum Riddle(思维)题意:给出数n,求两个数x和y,使得x+ x+1 + x+2 + … + y-1 + y = n。 思路:x和y都可以取负数,所以可以让0左右两边的数都抵消掉,只剩下n就可。 B. Special Numbers(思维,二进制)题意:给出一个数x,问由 x 0 , x 1 , x 2 , x 3 . . . x^0, x^1, x^2, x^3... x0,x1,x2,x3...组成的 第 k 大 数 第k大数 第k大数 mod 1 e 9 + 7 1e9+7 1e9+7 后为多少? 思路:
x
a
+
x
a
=
x
a
+
1
x^a + x^a = x^{a+1}
xa+xa=xa+1—— 存在进位关系。 Code:
C. Make Them Equal(思维)题意:给出长度为n的字符串,要转化为元素都为字符a的串。最小执行多少次下述操作? 思路:
Code:
E1. Rubik’s Cube Coloring (easy version)(组合)题意:需要给一个深度为n的满二叉树的节点染色,需要满足: 思路:好像和著名的四色定理差不多。
4
2
n
?
2
4^{2^{n}-2}
42n?2 可以用快速幂,边乘边取模。但是需要注意的是,求
2
n
?
2
2^n-2
2n?2不能取模! Code:
D. The Number of Imposters (代更。。)… 昨天上午有场人工智能编程大赛的初赛,A题有个技巧没能想起来。。 题意:给出n个数,给出m次询问,每次询问有k个数。n≤50。 思路:当时脑子一片空白,只能打了个暴力。。 一共m*k个数需要判断,暴力的话是 m ? k ? n ? n ? n m*k*n*n*n m?k?n?n?n。。铁定超。。 但是n很小,所以完全可以预处理出n个数从中取4个能够组成哪些数,map标记下来,然后O(1)查询。。 。。 昨晚Atcoder有场ABC: AtCoder Beginner Contest 222C - Swiss-System Tournament(模拟)题意:2 * n个人进行比赛,一共m局,每局两两pk,位置为2i的人和位置2i-1的人pk。 思路:就是结构体存储下位置和胜利局数,每局结束后排序就行。 一开始题读错了,然后这道题折腾了一个多小时。。 有个需要注意的点: Code:
D - Between Two Arrays(dp,前缀和)题意:给出两个不下降数列a和b,其中每个位置满足
a
[
i
]
≤
b
[
i
]
a[i]≤b[i]
a[i]≤b[i]。 思路:把每个位置上能放下的值列出来,发现是这样的:
那么以当前位置 i 上的数 j 结尾的数列c的个数 就可以由上一位置的所有不超过 j 的所有状态转移过来。 Code:
今晚有场cf: Educational Codeforces Round 115 (Rated for Div. 2)B. Groups(暴力,思维)题意:一共n个同学(n为偶数),给出一个n*5的矩阵 ,表示每名同学在周一到周五是否有空。 思路:遍历枚举选择的两天x和y:判断这两天合不合适。 如果满足: 那就说明:有n/2在周x有空闲时间,并且另外n/2个人在周y有时间。 Code:
C. Delete Two Elements (map)题意:给出n个数,所有数之和为sum。现在要从中选择两个位置上的数删掉。 思路:设删掉位置上的两个数之和为 x。 那么,
s
u
m
′
=
s
u
m
?
x
sum' = sum - x
sum′=sum?x . 所以遍历所有位置,判断有多少个 x ? a [ i ] x-a[i] x?a[i] 在数列中就行了。 如果当前x-a[i]=a[i]的话,记得减掉一次。 注意x可能为小数! Code:
D. Training Session (代更。。)… 明天加油! |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 6:29:41- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |