题解-bzoj4320 Homework】的更多相关文章

Problem bzoj4320 Solution 前置技能:分块+线段树+卡常+一点小小的数学知识 考试时A的 这种题无论怎么处理总有瓶颈,套路分块,设\(k\)以下的插入时直接暴力预处理,查询时直接调用:\(k\)以上的插入时不管,查询时线段树查找每个模意义下的区间 核心代码: if(opt[0]=='A'){ for(rg int i=1;i<=k;++i)f[i]=min(f[i],x%i); update(1,n,1,x); } else if(x<=k)printf("%…
题面链接:https://www.lydsy.com/JudgeOnline/problem.php?id=4320 令M=sqrt(mx),把询问的Y按M 分成两种不同的处理方式. 1.对于>M的Y,我们发现它的倍数不超过M个,于是可以枚举倍数,找到往后第一个已经被加入集合的值,用差值更新答案. 这个东西我们可以离线,倒序枚举询问,然后用并查集维护. 单次查询O(M),更新O(1). 2.对于<M的Y,倍数肯定是>M,不过这样的Y也就M个,可以直接拿数组存,g[i]表示目前%i最小为多…
Description:给定\(n\)个操作,向集合中加入一个数(保证每个数不同)或者查询集合内\(\text{%Y}\)的最小值 Solution:对于小于\(\sqrt{300000}\)的直接暴力,大于它的跳1,Y,Y的倍数,离Y最近的数,这个可以用并查集维护,离线好维护,我们直接离线,对于加点直接变成删点 写的时候级邪,要么是爆栈,要么是本地对拍没过不敢交,结果网上A了 Code: #include<cstdio> #include<cstring> #include<…
[BZOJ4320]ShangHai2006 Homework Description   1:在人物集合 S 中加入一个新的程序员,其代号为 X,保证 X 在当前集合中不存在.    2:在当前的人物集合中询问程序员的mod Y 最小的值. (为什么统计这个?因为拯救过世界的人太多了,只能取模)  Input 第一行为用空格隔开的一个个正整数 N.  接下来有 N 行,若该行第一个字符为“A” ,则表示操作 1:若为“B”,表示操作 2:  其中 对于 100%的数据:N≤100000, 1≤…
HDU1789(Doing Homework again)题解 以防万一,题目原文和链接均附在文末.那么先是题目分析: [一句话题意] 给定任务分数和其截止日期,每日可完成一任务,输出当罚分尽可能小时的最小罚分. [题目分析] 由于写的时候就知道是贪心了(专项练习= =||),所以要设计贪心策略,但是应该先处理数据以便使用.由于要求罚分尽可能小,那么我们就根据罚分来排序.根据罚分从大到小排序,如果罚分相同则根据日期从小到大排序.(现在想想觉得似乎日期排不排都行..)那么我们的贪心策略应该尽可能保…
[题解]HDU Homework(倍增) 矩阵题一定要多多检查一下是否行列反了... 一百个递推项一定要存101个 说多了都是泪啊 一下午就做了这一道题因为实在是太菜了太久没写这种矩阵的题目... 设一个行向量\(e\),和一个增逛矩阵\(A\),他们咋定义的见我那篇讲线性递推博客 现在我们再预处理\(st\)矩阵数组,其中\(st_i=A^{2^i}\). 考虑这样一种做法,我们考虑让\(e\)总共有101个值,然后当第一个值被增逛为\(f_{q.n-100}\)时,暴力将\(e\)中的第\(…
Problem Description Ignatius has just come back school from the 30th ACM/ICPC. Now he has a lot of homework to do. Every teacher gives him a deadline of handing in the homework. If Ignatius hands in the homework after the deadline, the teacher will r…
对于<=sqrt(300000)的询问,对每个模数直接记录结果,每次加入新数时暴力更新每个模数的结果. 对于>sqrt(300000)的询问,枚举倍数,每次查询大于等于这个倍数的最小数是多少,这个操作通过将询问逆序使用并查集支持. #include<cstdio> #include<algorithm> #define rep(i,l,r) for (int i=(l); i<=(r); i++) using namespace std; ,M=,B=; char…
考虑根号分块.对于<√3e5的模数,每加入一个数就暴力更新最小值:对于>√3e5的模数,由于最多被分成√3e5块,查询时对每一块找最小值,这用一些正常的DS显然可以做到log,但不太跑得过.考虑并查集在序列上的奇技淫巧.加点不太能做,考虑离线改成删点.并查集维护下一个未删除的点即可. #include<iostream> #include<cstdio> #include<cmath> #include<cstdlib> #include<…
ShangHai2006 Homework Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 918  Solved: 460[Submit][Status][Discuss] Description   1:在人物集合 S 中加入一个新的程序员,其代号为 X,保证 X 在当前集合中不存在.    2:在当前的人物集合中询问程序员的mod Y 最小的值. (为什么统计这个?因为拯救 过世界的人太多了,只能取模)    Input 第一行为用空格隔开的…