题意:给你一个长度为n的b[]数组和长度为n的a[]数组,b[]是1到n的全排列,a[]初始全为0,有两种操作:①add l r:a[]数组从l到r全部+1,②query l r:查询∑a[i]/b[i](l≤i≤r,向下取整)

  1. 因为b[]是n的一个全排列,并且对于所有的a[i]/b[i]很显然只会变化n/b[i]次,所以总共只会有n/1+n/2+…+n/3≈nlogn次变化
  2. 可以直接暴力每个位置上的每次变化(从0到n/b[i])会在第几次add操作之后
  3. 可以用二分,如果第k次add操作不会影响当前位置,那么这次操作就相当于0,否则相当于1,这里用前缀和处理,不过是要带修改的,所以可能要用树状数组,看前缀的1的数量s是否满足条件即可
  4. 总复杂度O(nlog²n)(好像还会多一个log,不过到不了极端情况)
#include<stdio.h>
#include<algorithm>
#include<string.h>
#include<vector>
using namespace std;
typedef struct
{int l, r;int id, t;
}Que;
Que s[100005];
int len, b[100005], tre[100005];
char str[8];
vector<int> L[100005], R[100005], A[100005];
void Update(int k, int x)
{while(k<=len){tre[k] += x;k += k&-k;}
}
int Query(int k)
{int ans = 0;while(k){ans += tre[k];k -= k&-k;}return ans;
}
int main(void)
{int n, i, j, l, r, m, last, mid, ans;while(scanf("%d%d", &n, &m)!=EOF){for(i=1;i<=n;i++)scanf("%d", &b[i]);len = m;for(i=1;i<=m;i++){scanf("%s%d%d", str+1, &s[i].l, &s[i].r);s[i].id = i;if(str[4]==0){s[i].t = 1;L[s[i].l].push_back(s[i].id);R[s[i].r+1].push_back(s[i].id);}elses[i].t = 0;}for(i=1;i<=n;i++){for(j=0;j<L[i].size();j++)Update(L[i][j], 1);for(j=0;j<R[i].size();j++)Update(R[i][j], -1);last = 1;for(j=1;j<=n/b[i];j++){l = last, r = m+1;while(l<r){mid = (l+r)>>1;if(Query(mid)<j*b[i])l = mid+1;elser = mid;}//printf("%d\n", r);if(r==m+1)break;A[r].push_back(i);last = r+1;}}ans = 0, len = n;memset(tre, 0, sizeof(tre));for(i=1;i<=m;i++){for(j=0;j<A[i].size();j++)Update(A[i][j], 1);if(s[i].t==0)printf("%d\n", Query(s[i].r)-Query(s[i].l-1));A[i].clear();}for(i=1;i<=n;i++){L[i].clear();R[i].clear();tre[i] = 0;}}return 0;
}
/*
5 4
1 5 2 4 3
add 1 4
query 1 4
add 2 5
query 2 5
*/

2018 Multi-University Training Contest 2: 1007. Naive Operations相关推荐

  1. HDU 6356.Glad You Came-线段树(区间更新+剪枝) (2018 Multi-University Training Contest 5 1007)...

    6356.Glad You Came 题意就是给你一个随机生成函数,然后从随机函数里确定查询的左右区间以及要更新的val值.然后最后求一下异或和就可以了. 线段树,区间最大值和最小值维护一下,因为数据 ...

  2. 2019 Multi-University Training Contest 9 1007 Rikka with Travels

    HDU 6686 Rikka with Travels 题意: 在一颗树上选择两条不相交的路径的可能性有多少,路径长度定义为路径的顶点数. 题解: 初步思考,观察样例可以发现,求的是两条路径的有序对, ...

  3. Sichuan University Programming Contest 2018 Preliminary

    嗯为了防止大家AK,所以这次的A题和K题我们就当做不存在好了! 经历了昨天写了两个多小时的博客没保存的心态炸裂,今天终于下了个Markdown.所以我猜这篇的格式应该会更好看一点! 好吧废话不多说 题 ...

  4. 2018 Multi-University Training Contest 3 Problem F. Grab The Tree 【YY+BFS】

    传送门:http://acm.hdu.edu.cn/showproblem.php?pid=6324 Problem F. Grab The Tree Time Limit: 2000/1000 MS ...

  5. 2018 Multi-University Training Contest 4 Problem E. Matrix from Arrays 【打表+二维前缀和】

    任意门:http://acm.hdu.edu.cn/showproblem.php?pid=6336 Problem E. Matrix from Arrays Time Limit: 4000/20 ...

  6. 2021 HZNU Winter Training Day 17 (2018 German Collegiate Programming Contest (GCPC 18))

    2021 HZNU Winter Training Day 17 (2018 German Collegiate Programming Contest (GCPC 18)) 题目 A B C D E ...

  7. 2018 Multi-University Training Contest 7 Age of Moyu

    Age of Moyu 来追梦 Problem Description Mr.Quin love fishes so much and Mr.Quin's city has a nautical sy ...

  8. 2018 Multi-University Training Contest 2

    1003:Cover 巧妙的构造,先找出所有奇数点,再成对连边,在新图里面跑欧拉回路(dfs边到底),切开之前连的边就是划分方案,这样能得到答案是max(d/2,1) (d为奇数点的个数) 1 #in ...

  9. 题解:2018 Multi-University Training Contest 2

    Game 先手的人可以通过选1,不选1的方式操纵游戏的进程,因此有必胜策略. #include<stdio.h> int main() {for(int n; ~scanf("% ...

最新文章

  1. HEOI 2012 旅行问题
  2. 软件工程实践2017第二次作业
  3. 访问者模式讨论篇:java的动态绑定与双分派
  4. Scala与Java差异(五)之Map与Tuple
  5. 设置第一个字母字体变大并且所有字母大小写 及下划线
  6. detours安装和使用
  7. PyQt5教程 - QtDesigner窗口设计工具的使用
  8. mysql 两个日期加减_mysql加减时间-函数-时间加减
  9. windows如何在局域网下共享文件(传输文件、修改文件)
  10. DBC2000是什么?DBC2000数据库文件超详细讲解
  11. python开根_python如何开根号
  12. win10把AppData目录挪到其他盘的方法
  13. mistake of android
  14. 无线路由器怎么显示远端服务器,路由器远端服务器无响应是怎么回事
  15. cents7 mysql数据库安装和配置
  16. 外卖跑腿app开发功能分析
  17. 计算机主机前后,电脑cpu后面的字母是什么意思
  18. CleanMyMacX.dmg4.11版最新Mac电脑智能清理软件
  19. 如何通过MES实现机床联网?
  20. uniapp 苹果支付注意事项(前端)

热门文章

  1. python软件下载3版本-Python3.9下载
  2. 学python需要什么基础-学Python需要什么基础知识?零基础可以学Python吗?
  3. python创意实用案例-精心整理!9个 Python 实用案例分享
  4. python读音有道-centos7安装有道词典(不能发音和取词)
  5. python和c 的区别-python和C语言的差别
  6. 全球最大语音识别公司Nuance的衰落与自我救赎
  7. 成都高新税务推出智能电话语音咨询服务 24小时在线答复
  8. JavaScript-this指向问题
  9. 计算机漏洞为什么无法避免,雷电3接口漏洞影响数百万计算机:5分钟解锁设备,无法修复...
  10. 【深度优先搜索】牛客网:剪绳子