题目链接:Round #590

题目答案:官方EditorialMy 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位精度。但是floatdouble默认都只显示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的更多相关文章

  1. Codeforces Round #590 (Div. 3) Editorial

    Codeforces Round #590 (Div. 3) Editorial 题目链接 官方题解 不要因为走得太远,就忘记为什么出发! Problem A 题目大意:商店有n件商品,每件商品有不同 ...

  2. Codeforces Round #590 (Div. 3)

    A. Equalize Prices Again 题目链接:https://codeforces.com/contest/1234/problem/A 题意:给你 n 个数 , 你需要改变这些数使得这 ...

  3. Codeforces Round #590 (Div. 3) E. Special Permutations

    链接: https://codeforces.com/contest/1234/problem/E 题意: Let's define pi(n) as the following permutatio ...

  4. 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 ...

  5. Codeforces Round #590 (Div. 3) C. Pipes

    链接: https://codeforces.com/contest/1234/problem/C 题意: You are given a system of pipes. It consists o ...

  6. 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 ...

  7. 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 ...

  8. Codeforces Round #590 (Div. 3)(e、f待补

    https://codeforces.com/contest/1234/problem/A A. Equalize Prices Again #include<bits/stdc++.h> ...

  9. Codeforces Round #590 D. Distinct Characters Queries

    CF上给的标签是数据结构.但给的题解里的方法是很巧的暴力,用vector<set>维护每个字母出现的下标,每次修改加下标,擦下标.每次询问对每个字母分别lower_bound查找区间内是否 ...

随机推荐

  1. 【翻译】OpenVINO Pre-Trained 预训练模型介绍

    OpenVINO 系列软件包预训练模型介绍 本文翻译自 Intel OpenVINO 的  "Overview of OpenVINO Toolkit Pre-Trained Models& ...

  2. (js描述的)数据结构[哈希表1.3](10)

    1.哈希表的完善 1.容量质数(limit):需要恒为质数,来确保元素的均匀分布. 1)普通算法: 判断一个数是否为质数 function isPrime(num) { for (var i = 2; ...

  3. leetcode c++做题思路和题解(1)——常规题总结

    常规题总结 0. 目录 两数之和 1. 两数之和 耗时4ms(98.82%),内存6.2m. 两数之和--寻找中值向两边扩散法 1.1 思路 思路很简单,就是先找数组中target/2的前后两个值,然 ...

  4. IKAnalyzer修改支持lucene8.0

    源码已经上传GitHub. 如果直接使用jar:IKAnalyzer-5.0.2. 在这我只是在原有代码结构上做了微调,让代码支持lucene8.0.

  5. AJ学IOS 之控制器view显示中view的父子关系及controller的父子关系_解决屏幕旋转不能传递事件问题

    AJ分享,必须精品 一:效果 二:项目代码 这个Demo用的几个控制器分别画了不通的xib,随便拖拽了几个空间,主要是几个按钮的切换,主要代码展示下: // // NYViewController.m ...

  6. AJ学IOS(43)之网易彩票底部自定义TabBar实现切换

    AJ分享,必须精品 效果: 代码: NYTabBarController // // NYTabBarController.m // 彩票lottery // // Created by apple ...

  7. android学习笔记——使用QuickContactBadge关联联系人

    本文大部分内容来自<疯狂android讲义>. QuickContactBadge继承了ImageView,因此它的本质也是图片,也可以通过android:src属性指定它显示的图片.Qu ...

  8. Crossing River POJ过河问题

    A group of N people wishes to go across a river with only one boat, which can at most carry two pers ...

  9. Co-prime 杭电4135

    Given a number N, you are asked to count the number of integers between A and B inclusive which are ...

  10. linux常用命令--文件和目录

    cd /home 进入 '/ home' 目录' cd .. 返回上一级目录 cd ../.. 返回上两级目录 cd 进入个人的主目录 cd ~user1 进入个人的主目录 cd - 返回上次所在的目 ...