2018 Multi-University Training Contest 2: 1007. Naive Operations
题意:给你一个长度为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,向下取整)
- 因为b[]是n的一个全排列,并且对于所有的a[i]/b[i]很显然只会变化n/b[i]次,所以总共只会有n/1+n/2+…+n/3≈nlogn次变化
- 可以直接暴力每个位置上的每次变化(从0到n/b[i])会在第几次add操作之后
- 可以用二分,如果第k次add操作不会影响当前位置,那么这次操作就相当于0,否则相当于1,这里用前缀和处理,不过是要带修改的,所以可能要用树状数组,看前缀的1的数量s是否满足条件即可
- 总复杂度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相关推荐
- HDU 6356.Glad You Came-线段树(区间更新+剪枝) (2018 Multi-University Training Contest 5 1007)...
6356.Glad You Came 题意就是给你一个随机生成函数,然后从随机函数里确定查询的左右区间以及要更新的val值.然后最后求一下异或和就可以了. 线段树,区间最大值和最小值维护一下,因为数据 ...
- 2019 Multi-University Training Contest 9 1007 Rikka with Travels
HDU 6686 Rikka with Travels 题意: 在一颗树上选择两条不相交的路径的可能性有多少,路径长度定义为路径的顶点数. 题解: 初步思考,观察样例可以发现,求的是两条路径的有序对, ...
- Sichuan University Programming Contest 2018 Preliminary
嗯为了防止大家AK,所以这次的A题和K题我们就当做不存在好了! 经历了昨天写了两个多小时的博客没保存的心态炸裂,今天终于下了个Markdown.所以我猜这篇的格式应该会更好看一点! 好吧废话不多说 题 ...
- 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 ...
- 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 ...
- 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 ...
- 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 ...
- 2018 Multi-University Training Contest 2
1003:Cover 巧妙的构造,先找出所有奇数点,再成对连边,在新图里面跑欧拉回路(dfs边到底),切开之前连的边就是划分方案,这样能得到答案是max(d/2,1) (d为奇数点的个数) 1 #in ...
- 题解:2018 Multi-University Training Contest 2
Game 先手的人可以通过选1,不选1的方式操纵游戏的进程,因此有必胜策略. #include<stdio.h> int main() {for(int n; ~scanf("% ...
最新文章
- HEOI 2012 旅行问题
- 软件工程实践2017第二次作业
- 访问者模式讨论篇:java的动态绑定与双分派
- Scala与Java差异(五)之Map与Tuple
- 设置第一个字母字体变大并且所有字母大小写 及下划线
- detours安装和使用
- PyQt5教程 - QtDesigner窗口设计工具的使用
- mysql 两个日期加减_mysql加减时间-函数-时间加减
- windows如何在局域网下共享文件(传输文件、修改文件)
- DBC2000是什么?DBC2000数据库文件超详细讲解
- python开根_python如何开根号
- win10把AppData目录挪到其他盘的方法
- mistake of android
- 无线路由器怎么显示远端服务器,路由器远端服务器无响应是怎么回事
- cents7 mysql数据库安装和配置
- 外卖跑腿app开发功能分析
- 计算机主机前后,电脑cpu后面的字母是什么意思
- CleanMyMacX.dmg4.11版最新Mac电脑智能清理软件
- 如何通过MES实现机床联网?
- uniapp 苹果支付注意事项(前端)
热门文章
- python软件下载3版本-Python3.9下载
- 学python需要什么基础-学Python需要什么基础知识?零基础可以学Python吗?
- python创意实用案例-精心整理!9个 Python 实用案例分享
- python读音有道-centos7安装有道词典(不能发音和取词)
- python和c 的区别-python和C语言的差别
- 全球最大语音识别公司Nuance的衰落与自我救赎
- 成都高新税务推出智能电话语音咨询服务 24小时在线答复
- JavaScript-this指向问题
- 计算机漏洞为什么无法避免,雷电3接口漏洞影响数百万计算机:5分钟解锁设备,无法修复...
- 【深度优先搜索】牛客网:剪绳子