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查找区间内是否 ...
随机推荐
- DG磁盘分区提示错误
文章更新于:2020-02-26 一.当你使用 DG 分区遇到错误时 1.错误复现 2.解决办法 以管理员身份打开cmd 运行 chkdsk /f /x g:(这里的 g 替换成你要检查的盘符) 然后 ...
- Java第十七天,Set接口
Set接口 1.特点 (1)不包含重复元素. (2)没有索引. (3)继承自Collection接口,所以Collection接口中的所有方法都适用于Set接口. 2.解析 (1)为什么不能包含重复元 ...
- 3.K均值算法
一.概念 K-means中心思想:事先确定常数K,常数K意味着最终的聚类类别数,首先随机选定初始点为质心,并通过计算每一个样本与质心之间的相似度(这里为欧式距离),将样本点归到最相似的类中,接着,重新 ...
- OS-DOS/CMD/Windows/各类软件快捷键等使用总结
一.快捷键 很多软件的快捷键使用相通,在不确定的情况下,先试试其他软件的快捷键的使用方法 Windows电脑快捷键 HP惠普笔记本 win+E 打开文件管器 win+D 显示桌面 win+L 锁计算机 ...
- django 前后台传递数据
前几天,我们完成了用django orm对数据进行操作.接下来,我们要把数据从后台放到前台. 1.用get方式传值 get:就是在URL拼接字符串,在后台,用request.get方式取 2.用pos ...
- Python Request-学习笔记(1)
#导入Requests模块:import requests # 然后,尝试获取某个网页.返回的是reaponse对象,可以从这个对象中获取所有我们想要的信息.response = requests.g ...
- AJ学IOS(45)之常用的小功能比如打电话、打开网址、发邮件、发短信打开其他应用。
AJ分享,必须精品 简介 iOS中的很多小功能都是非常简单的,几行代码就搞定了,比如打电话.打开网址.发邮件.发短信.打开其他应用等. 打电话 方法1 最简单最直接的方式:直接跳到拨号界面 NSURL ...
- Ant安装与配置
1. 到apache 官网去下载最新版本的ant,http://ant.apache.org/:下载后直接解压缩到电脑上,不需要安装: 2.环境变量配置: 2.1 ->计算机右键->属性- ...
- 【LeetCode】 99. Recover Binary Search Tree [Hard] [Morris Traversal] [Tree]
Two elements of a binary search tree (BST) are swapped by mistake. Recover the tree without changing ...
- SpringCloud(七)超时、重试
一.Ribbon(单独配置) 可以通过ribbon.xx来进行全局配置.也可以通过服务名.ribbon.xx来对指定服务配置 全局配置: ribbon: ConnectTimeout: 3000 #连 ...