一、训练赛题目
-
D - CodeForces 1234A. Equalize Prices Again(AC)(水)
题意:
为了省去记住价格的麻烦,将所有物品的价格进行统一,然后要我们找出最小的那个价格,使得卖完当前所有物品的价值总和要大于等于原来的价值总和
思路实现:
一眼就能看出来,直接求平均值,向上取整 -
C - CodeForces 1234B. Social Network(AC)(补)
题意:
有一个智能机,有n条信息,屏幕只能放下k条信息 (1 ≤ n,k ≤ 200) ,每次新来的消息总会置顶,相同的消息位置会不变,超出屏幕的消息会被挤掉,问最终屏幕上的消息数量和从顶到底的消息顺序
思路实现:
easy:
n和k很小,直接模拟就好了
hard:
此时如果模拟会超出时间,所以要用数据结构简化查询的时间, 不能像上面的操作一步一步查,看了别人的思路是用一个 set记录此元素是否在队列中,因为官方说set的查询时间复杂度很低 -
A - CodeForces - 1234C. Pipes(AC)
题意:
有6种管子,分布在两行,管子可以旋转,问水是否能从管子的左上角流通出右下角
思路实现:
说是6种管子,其实就只有2种管子,其他的可以由这两种旋转得到。这个题我是分析得到的小规律,看别人都是直接用dfs,用很短的时间就能解决,我傻傻的分析了好久…说说思路,分析路线图,因为只有两行,所以1号管子用不着,只能用2号管子进行左右流通,还可以看出只要从入口出发,碰到3,4,5,6号管子必拐弯,但如果上面的管子往下拐弯后碰到1号或2号管子必不可能进行下一步的流通,下面的管子同理,但是往右碰到1号或2号管子是没有问题的。 -
E - CodeForces 1234D - Distinct Characters Queries(补)
题意:
给定一个字符串,进行2种操作
1 pos c:用字符c替代字符串pos位置上的字符。
2 l r:计算字符串[l,r]区间上不同字符的数量,并输出。
思路实现:
此题的关键是如何计算给定区间上不同字符的数量。可以考虑树状数组。
遍历字符串,对于每一个字符将它分配到树状数组对应的区间,并计算它出现的次数。所以引入了book数组。book[i][j]:对于区间i,字符转化为j,原字符出现的次数。
此题之所以可以这样做,关键题上说明字符串全部为小写字母。总共有26个小写字母,对于求给定区间不同字符的数量,只需要遍历26个字母即可。 -
B - CodeForces 1234E. Special Permutations(补)
题意:
给m个数,每个数在1-n之间,有n个排列,求n次排列中,这m个数的相邻两个数之间的位置的绝对值之差。
思路实现
二、总结
c题竟然不是最简单的题了,爷青结!!今天状态还可以,感觉能出的题都出了吧,就是可能思路没那么好,花的时间比较久。知识储备还是不够啊,今天又get到了 树状数组 ,每天进步一点点。