Codeforces Round #297 (Div. 2)
发布日期:2021-06-30 15:14:30
浏览次数:2
分类:技术文章
本文共 897 字,大约阅读时间需要 2 分钟。
题目不难,访问次数越多的点让其权重越大即可。要累计每个点的访问次数,因为是区间,所以每次输入l,r,区间内的每个点都要增加一次。倘若利用for循环遍历相加,会出现超时Time limit exceeded on test的情况(如下图代码)
for (i = 0; i> l >> r; for (j = l - 1; j < r; j++) t[j]++; }
所以,可设置一个数组存储,由于从左往右加,为了避免重复相加,所以每次右端要自减避免下次重复相加。为了好理解,可以将代码展开写一写。行4中的自减原因在于行7和行8的代码,举个例子比如说l=1,r=3若是第一次访问那么t[1]=t[2]=t[3]=1,即区间内的每个元素都只访问了一次。此时如果套用行7,8的代码就会发现t[1]=1,t[2]=t[1]+t[2]=2,t[3]=t[2]+t[3]=3,所以每次输入l,r,都要t[r]--,避免下边t[i] += t[i - 1]造成的多次相加,最好是展开自己动手写一写帮助理解,这也算一个避免计算超时的技巧吧!
for (i = 0; i完整代码如下> l >> r; t[l - 1]++; t[r]--; } for (i = 1; i
#include#include using namespace std;typedef long long ll;ll a[200010], t[200010], ans;int main(){ int n, q, l, r, i; cin >> n >> q; for (i = 0; i > a[i]; sort(a, a + n); for (i = 0; i > l >> r; t[l - 1]++; t[r]--; } for (i = 1; i
转载地址:https://jianzhuwang.blog.csdn.net/article/details/45030535 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
表示我来过!
[***.240.166.169]2024年04月29日 13时00分58秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
webview加载网页或富文本oom
2019-05-01
机器学习-评价分类、回归算法模型指标
2019-05-01
Azkaban体系结构
2019-05-01
Azkaban2.5环境搭建及测试
2019-05-01
Synchronized与ReentrantLock区别
2019-05-01
机器学习之重头戏-特征预处理
2019-05-01
synchronized底层实现及锁的升级、降级
2019-05-01
Java线程生命周期之旅
2019-05-01
机器学习-简单逻辑回归实现
2019-05-01
如何快速定位JVM相关GC问题
2019-05-01
java线程相关概念之解析
2019-05-01
Python清洗常用工具
2019-05-01
java内存模型及线程案例分析
2019-05-01
小议创建线程的若干方式
2019-05-01
ThreadLocal应用场景分析
2019-05-01
线程池原理及应用之个人心得
2019-05-01
线程池excute方法执行底层过程
2019-05-01
线程池同步异步调用callable和Future
2019-05-01
梯度算法之初见
2019-05-01
解决python安装库较慢的方式
2019-05-01