题目链接: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. 典型的MVC架构图

    通常,当使用MVC时,应用程序中的每个逻辑部分都有一个单一的控制器.在这些控制器的前面还有一个Router:这是一个看门人,用于确定用户请求的内容,以便应用程序满足用户需要.常用php的mvc框架:Y ...

  2. kali2016&2019的安装使用

    先解释一下,为什么要说2016&2019哪,这是因为有一些测试靶机环境在2016以上的系统安装不通过,所以有时候会特意找2016的镜像来用. 一.下载镜像 1.下载镜像当然要到官方去下载了: ...

  3. go 内置函数

    一.什么是内置函数? 二.内置函数有哪些? 名称 说明 close 用于管道通信 len.cap len 用于返回某个类型的长度或数量(字符串.数组.切片.map 和管道):cap 是容量的意思,用于 ...

  4. 搭建环境-git常见使用总结

    Descripton:git 一.Git安装和本地用户全局配置 官网下载并且安装 查看是否安装成功win + R输入git,出现git命令指南,则安装成功 全局配置本地用户,在git Bash中进行下 ...

  5. JS入门系列(2)-原型-实例属性

    下面的例子中,在构造器内部定义了like,然后再原型上也定义了like.通过下面的测试表明: 在构造器内部创建的实例方法会阻挡原型上定义的同名方法 初始化操作的优先级如下: 首先,通过原型给对象实例添 ...

  6. Maybatis的一些总结(三:增删改查)

    回顾一个点 之前不懂这句: UserMapper userMapper = sqlSession.getMapper(UserMapper.class); 现在理解了一点点,相当于实现了userMap ...

  7. mysql添加,授权,删除用户以及连接数据库Can't connect to MySQL server on '192.168.31.106' (113)错误排查

    centos7下面操作mysql添加,授权,删除用户 添加用户 以root用户登录数据库,运行以下命令: create user test identified by '; 上面创建了用户test,密 ...

  8. AJ学IOS 之微博项目实战(9)微博模型之时间相关重要操作,判断刚刚,昨天,今年等等

    AJ分享,必须精品 一:效果 二:实现代码 /** 1.今年 1> 今天 * 1分内: 刚刚 * 1分~59分内:xx分钟前 * 大于60分钟:xx小时前 2> 昨天 * 昨天 xx:xx ...

  9. 漫谈LiteOS之开发板-LiteOS移植(基于GD32450i-EVAL)

    1 为什么移植? 嵌入式设备的芯片型号和外设的差异较大,资源有限.而RTOS无法适配集成所有的驱动,因此会先适配部分开发板,然后通过移植使得适配更多的开发板. 可移植性是嵌入式操作系统与普通操作系统的 ...

  10. C++创建动态库

    [C++]创建动态库 有很多方法,这个只是其中一种 比较简洁的方法. char* __stdcall correction(char* str) char *_result = new char[se ...