训练日记7.21

一、训练赛题目

  1. D - CodeForces 1234A. Equalize Prices Again(AC)(水)
    题意:
    为了省去记住价格的麻烦,将所有物品的价格进行统一,然后要我们找出最小的那个价格,使得卖完当前所有物品的价值总和要大于等于原来的价值总和
    思路实现:
    一眼就能看出来,直接求平均值,向上取整

  2. C - CodeForces 1234B. Social Network(AC)(补)
    题意:
    有一个智能机,有n条信息,屏幕只能放下k条信息 (1 ≤ n,k ≤ 200) ,每次新来的消息总会置顶,相同的消息位置会不变,超出屏幕的消息会被挤掉,问最终屏幕上的消息数量和从顶到底的消息顺序
    思路实现:
    easy:
    n和k很小,直接模拟就好了
    hard:
    此时如果模拟会超出时间,所以要用数据结构简化查询的时间, 不能像上面的操作一步一步查,看了别人的思路是用一个 set记录此元素是否在队列中,因为官方说set的查询时间复杂度很低

  3. A - CodeForces - 1234C. Pipes(AC)
    题意:
    有6种管子,分布在两行,管子可以旋转,问水是否能从管子的左上角流通出右下角
    思路实现:
    说是6种管子,其实就只有2种管子,其他的可以由这两种旋转得到。这个题我是分析得到的小规律,看别人都是直接用dfs,用很短的时间就能解决,我傻傻的分析了好久…说说思路,分析路线图,因为只有两行,所以1号管子用不着,只能用2号管子进行左右流通,还可以看出只要从入口出发,碰到3,4,5,6号管子必拐弯,但如果上面的管子往下拐弯后碰到1号或2号管子必不可能进行下一步的流通,下面的管子同理,但是往右碰到1号或2号管子是没有问题的。

  4. 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个字母即可。

  5. B - CodeForces 1234E. Special Permutations(补)
    题意:
    给m个数,每个数在1-n之间,有n个排列,求n次排列中,这m个数的相邻两个数之间的位置的绝对值之差。
    思路实现

二、总结

c题竟然不是最简单的题了,爷青结!!今天状态还可以,感觉能出的题都出了吧,就是可能思路没那么好,花的时间比较久。知识储备还是不够啊,今天又get到了 树状数组 ,每天进步一点点。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值