Codeforces Round #590
题目链接:Round #590
题目答案:官方Editorial、My Solution
A. Equalize Prices Again
签到题还WA了一发,向上取整有点问题:
//my wrong code, 1.0 * sum返回double
ceil(1.0 * sum / n);
//right code
(int)ceil(1.0 * sum / n);
//ceil()原型
double ceil(double x);
float
能保证6位精度(有效数字),double
能保证15位精度。但是float
和double
默认都只显示6位有效数字,所以一旦1.0 * sum / n
大于6位,函数返回的double
就显示不全,造成精度损失(比如结果应该是5336844
,但返回5.33684e+006
),故进行强制类型转换。
B1. Social Network (easy version)
题意:屏幕可以容纳\(k\)条短信,有若干朋友发来\(n\)条短信。如果某个朋友已经在屏幕上,不做改变;否则将其他朋友下移,新收到的朋友置顶。求最终自顶向下显示在屏幕上的朋友。
思路:按照题意模拟,我搞得有些繁琐(用queue + set
来考虑是否将新来的短信放入屏幕,再用queue.size()
和\(k\)判断是否需要将旧短信pop()
,最后将队列中的元素逆序输出)。
B2. Social Network (hard version)
数据量变到了\(10^5\)级别,官方题解和我在B1中的思路一致。不过最后输出我是先压栈,题解是先存入vector
,再用reverse()
函数逆序,复杂度\(O(nlogk)\)。
C. Pipes
模拟题:比赛时候发现了既然可以无限旋转,那么管道一共有2类:\(12\)一样,\(3456\)一样。
水流到\(12\)这类,只能水平向右流;
流到\(3456\)这类,那么另一行对应的位置也必须是\(3456\)类,水就会换一行流动(异或即可换行),否则水没法继续流动。
最后判断水能否流到第二行第\(n\)列。
D. Distinct Characters Queries
题意:给一字符串和\(q\)次查询,查询分为两类:一类是替换字符串中某个字母,另一类是求子串中非重复字符的个数。
比赛时的思路是:遇到第一类查询就按规则替换,第二类先拿到子串,依次把子串的每个字符放入set
中,最后返回set.size()
即是非重复字符个数。
此题的教训就是要学会根据数据量级猜算法:1s/2s时限,C++运算次数大约在\(10^7\),本题的数据范围\(10^5\),我傻傻地把\(O(n^2)\)的算法交了三次,TLE了三次,我还以为是cin
的问题。。。
参考下大佬经验:由数据范围反推算法复杂度。
Codeforces Round #590的更多相关文章
- Codeforces Round #590 (Div. 3) Editorial
Codeforces Round #590 (Div. 3) Editorial 题目链接 官方题解 不要因为走得太远,就忘记为什么出发! Problem A 题目大意:商店有n件商品,每件商品有不同 ...
- Codeforces Round #590 (Div. 3)
A. Equalize Prices Again 题目链接:https://codeforces.com/contest/1234/problem/A 题意:给你 n 个数 , 你需要改变这些数使得这 ...
- Codeforces Round #590 (Div. 3) E. Special Permutations
链接: https://codeforces.com/contest/1234/problem/E 题意: Let's define pi(n) as the following permutatio ...
- Codeforces Round #590 (Div. 3) D. Distinct Characters Queries(线段树, 位运算)
链接: https://codeforces.com/contest/1234/problem/D 题意: You are given a string s consisting of lowerca ...
- Codeforces Round #590 (Div. 3) C. Pipes
链接: https://codeforces.com/contest/1234/problem/C 题意: You are given a system of pipes. It consists o ...
- Codeforces Round #590 (Div. 3) B2. Social Network (hard version)
链接: https://codeforces.com/contest/1234/problem/B2 题意: The only difference between easy and hard ver ...
- Codeforces Round #590 (Div. 3) A. Equalize Prices Again
链接: https://codeforces.com/contest/1234/problem/A 题意: You are both a shop keeper and a shop assistan ...
- Codeforces Round #590 (Div. 3)(e、f待补
https://codeforces.com/contest/1234/problem/A A. Equalize Prices Again #include<bits/stdc++.h> ...
- Codeforces Round #590 D. Distinct Characters Queries
CF上给的标签是数据结构.但给的题解里的方法是很巧的暴力,用vector<set>维护每个字母出现的下标,每次修改加下标,擦下标.每次询问对每个字母分别lower_bound查找区间内是否 ...
随机推荐
- 【php】面向对象(五)
一. 类型约束: a) 约束函数可传入的参数类型二. 类的遍历 a) Foreach b) 可以将类当中的所有成员属性遍历出来三. 关于操作类与对象的一些函数: a) 判断函数 i. Function ...
- 曹工说Redis源码(4)-- 通过redis server源码来理解 listen 函数中的 backlog 参数
文章导航 Redis源码系列的初衷,是帮助我们更好地理解Redis,更懂Redis,而怎么才能懂,光看是不够的,建议跟着下面的这一篇,把环境搭建起来,后续可以自己阅读源码,或者跟着我这边一起阅读.由于 ...
- 如何增加Tomcat内存
有时候在开发中,常常遇到内存溢出问题,很有可能项目过大,导致Tomcat内存不足问题,那么此时就要给Tomcat添加内存了,如,操作如下 1. 先找到Tomcat目录下的catalina.bat文件
- "字符反向拼接"组件:<reverse> —— 快应用组件库H-UI
 <import name="reverse" src="../Common/ui/h-ui/text/c_text_reverse"></ ...
- idea打包报错Cleaning up unclosed ZipFile for archive D:\m2\commons-beanutils\commons-beanutils\1.9.2\...
关于idea的打包报错:Cleaning up unclosed ZipFile for archive D:\m2\commons-beanutils\commons-beanutils\1.9.2 ...
- 如何练习python?有这五个游戏,实操经验就已经够了
现在学习python的人越来越多了,但仅仅只是学习理论怎么够呢,如何练习python?已经是python初学者比较要学会的技巧了! 其实,最好的实操练习,就是玩游戏. 也许你不会信,但这五个小游戏足够 ...
- 2019-05-12 Python之模拟体育竞赛
一.简介 可以选择任意规则,模拟不同的两个队伍进行球赛的模拟比赛 二.源代码 函数介绍: from random import * #输出介绍信息 def printIntro(): print(&q ...
- L23模型微调fine tuning
resnet185352 链接:https://pan.baidu.com/s/1EZs9XVUjUf1MzaKYbJlcSA 提取码:axd1 9.2 微调 在前面的一些章节中,我们介绍了如何在只有 ...
- python圆周率计算小程序(非常慢)
源码: from math import fabs #导入数学模块 from time import perf_counter #导入时间模块 from numba import jit @jit d ...
- Xshell 中文提示乱码
1.Alt+P 打开配置对话框,点击终端->编码,选择Unicode(utf-8)编码