07 2019 档案
摘要:优先队列 指使用STL库的priority_queue进行模拟,优点在于实现简单。可用于求区间最值,由于使用堆操作,时间复杂度在[n\log_2{n}~n^2\log_2{n}],当数据较大时容易TLE 单调队列 单调队列使用STL的deque进行模拟,也可以用数组和双指针$(head,tail
阅读全文
摘要:没看过一维ST表的可以移步 "https://www.cnblogs.com/tldr/p/11261351.html" 二维ST表的思路参考一维,每次维护一个step step的一个正方形 因此 洛谷P2216理想的正方形是一个很好的二维ST表 一般来说,二维ST表询问的是某一个状态,这样可以用一
阅读全文
摘要:A 完全k叉树 题意 已知完全k叉树有n个节点,求树上两个最远点的距离,节点之间的距离均为1。 基本思路 求树的深度h,则满k叉树的两点距离为(h 1) 2,对剩余一层的节点数rest做判断,若rest k^{h 1}/k则ans+2,否则若rest 0,ans+1
阅读全文
摘要:ST表简介 ST表示解决RMQ问题的一种暴力手段,处理时间O(n\log_{2}{n}),查询时间O(1),空间O(n\log_{2}{n}). 处理 ST表的第0列存放第一层数据,即原始数据; ST表的第1列存放第二层数据,即步长为2^0的min/max的数据; ST表的第2列
阅读全文
摘要:A题 原CF 438D The Child and Sequence 题意 给一串数字,m次操作,1.区间查询;2.区间取模;3.单点修改 基本思路 考虑到模如果大于区间的最大值,则取模没有意义。若小于则向下查询并修改,考虑到一个数每次取模最多为原数的1/2,则可认为修改次数不超过$\log{2
阅读全文
摘要:"P2278 [HNOI2003]操作系统" 基本思路 使用优先队列毋庸置疑,每次新来一个进程判断start =now+q.top().run,若大于,则队列头元素可在新元素到达前完成,直接到达完成状态即可; 若小于,且优先级不大于头元素,则插入队列;若优先级大于头元素,则需要中断,判断$sta
阅读全文
摘要:原hdu 2665 Kth number 题意 给n个数和m次查询,每个查询包含区间[x,y],求区间内第K大的数 思路 可持久化线段树,即主席树,第一次建立一个空的线段树,使用root下标表示访问第几次时间,数据离散化后。注意下标从1开始。 注意cnt可能是乱序的,但是$r
阅读全文
摘要:A题 DIY Wooden Ladder 签到题,求n 2和第二大的最小值 c++ include define FOR(i,a,b) for(int i=a;i n m k; for(int i=1;i arr[i]; } FOR(i,0,20)f[i]=0; f[0]= k; for(int i
阅读全文
摘要:A题 Drinks Choosing 判断奇偶 c++ include using namespace std; int arr[2000]; int main() { int n,k;cin n k;int rem=0; for(int i=0;i num;arr[num]++; } for(in
阅读全文
摘要:基本思路 $$ \begin{array}{l} k,n,a,b,假设能完成游戏,则有\\ x_1+x_2=n\\ x_1 a+x_2 b using namespace std; typedef long long ll; ll q,k,n,a,b; int main() { cin q; whi
阅读全文
摘要:补题 原CF 1141F Graph Without Long Directed Paths 基本思路 染色问题,u和v记录边的两个顶点,dfs遍历。 有个问题是若边数=顶点数,为什么不能直接输出 1? c++ include using namespace std; typedef struct{
阅读全文
摘要:原CF 1138A Sushi for Two 基本思路 每个状态之和之前的一个连续状态有关,并且取下限即可,若状态发生改变,计数器置零 c++ include using namespace std; int main() { int n;cin n;int num1=0,num2=0,sum=0
阅读全文
摘要:基本思路 树形dp入门题,0表示不选中1表示选中。 $$ \begin{array}{l} treedp[u][0]=max(treedp[u.boss][0],treedp[u.boss][1])\\ treedp[u][1]=treedp[u.boss][0]+arr[u]; \end{arra
阅读全文
摘要:基本思路: 单dfs暴力搜的复杂度为C(2N,N) N^2, N 12会超时,使用两个dfs,并记录过程的累和值将复杂度降低到C(2N,N) N c++ include using namespace std; typedef long long ll; ll arr[30][30],n; ll a
阅读全文
摘要:基本思路 一个结构体存储操作,另外一个存储节点,操作按时间排序并遍历即可。 c++ include using namespace std; typedef struct { int vertex,next,time; }OP;OP op[100010]; typedef struct{ int p
阅读全文
摘要:基本思路 两次dfs,第一次逆序,第二次计算连通分量的类别。待完善。 c++ include using namespace std; typedef struct{ int vertex,next; }NODE;NODE nodes[10010]; int end[10010]={0},m,n,i
阅读全文
摘要:需要路径压缩 c++ include using namespace std; int arr[10010]={0}; int find(int a) {//路径压缩 // if(arr[a]==a)return a; // return arr[a]=find(arr[a]); if(arr[a]
阅读全文