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查找区间内是否 ...
随机推荐
- node.js代码
// 1. 引入 express var express = require('express'); var formidable = require('formidable'); var mysql ...
- django-rest-framework限流
django-rest-framework限流 在项目根目录下新建utils的文件 新建throttling.py from django_redis import get_redis_connect ...
- MTK Android Driver :Camera
MTK Android Driver :camera 1.相关代码位置:mediatek\config\XXXX(红色字为具体的项目名) 文件:ProjectConfig.mk CUSTOM_KERN ...
- tcp协议:三次握手四次挥手详解-转
https://www.cnblogs.com/welan/p/9925119.html
- view事件分发源码理解
有些困难无法逃避,没办法,那就只有去解决它.view事件分发对我而言是一块很难啃的骨头,看了<安卓开发艺术探索>关于这个知识点的讲解,看了好几遍,始终不懂,最终通过调试分析结果,看博客,再 ...
- 亲测可以使用的Axmath和MathPix插入word公式
Axmath破解版链接 链接:https://pan.baidu.com/s/1Phak8mc3msKAMQ6H_5EN5g 提取码:glti MathPixTool和Axmath共同使用向word插 ...
- 学习Salesforce | Einstein业务机会评分怎么玩
Einstein 业务机会评分(Opportunity Scoring)是销售团队的得力助手,通过分数以及研究影响分数的因素,确定业务机会的优先级,赢得更多交易. Einstein 业务机会评分可以给 ...
- 教你如何在工作中“偷懒”,python优雅的帮你解决
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取htt ...
- Python的6种方式实现单例模式
单例模式是一个软件的设计模式,为了保证一个类,无论调用多少次产生的实例对象,都是指向同一个内存地址,仅仅只有一个实例(只有一个对象). 实现单例模式的手段有很多种,但总的原则是保证一个类只要实例化一个 ...
- Spring Cloud 系列之 Gateway 服务网关(四)
本篇文章为系列文章,未读第一集的同学请猛戳这里: Spring Cloud 系列之 Gateway 服务网关(一) Spring Cloud 系列之 Gateway 服务网关(二) Spring Cl ...