题意:给出n条铁路区间\([L,R]\),共有m个boom依时间顺序放置在\(k_i\)中,区间与\(k_i\)有交集的都被炸掉 求每次炸掉的铁路个数和最后输出所有id被炸的时间点 炸弹能炸到的区间满足\(L≤K≤R\) 因为\(L\)与\(R\)无关,将其关系改写为\(X≤K≤Y\), 对应于二维空间,铁路区间相当于一个点\((L,R)\),每次询问有多少个没被屏蔽的点满足\(X≤K\)且\(K≤Y\) 然后KD树乱搞剪枝就好 唯一的问题是屏蔽掉的点无法在push_up时再次更新两个维度的极左…
写线性基交函数时调试了半天.. #include<bits/stdc++.h> using namespace std; #define ll long long #define maxn 100005 int n,m; struct LB{ ll b[]; int check(ll x){ ;i>=;i--)){ ; x^=b[i]; } ; } void insert(ll x){ ;i>=;i--)){ if(!b[i]){ b[i]=x;return; } x^=b[i];…
牛客多校第3场 J 思维+树状数组+二分 传送门:https://ac.nowcoder.com/acm/contest/883/J 题意: 给你q个询问,和一个队列容量f 询问有两种操作: 0.访问操作,如果询问的name在队列中存在的话,那么就输出队列中name对应的val值,然后将队列中name对应的元素扔到队列的尾部去,否则就直接将该元素插入到队列的尾部去 1.插入操作,得到队列中对应的name元素的v值为k,查询第k+v个元素的v值是多少 题解: 已知,对于插入操作,我们需要很快的查询…
PACM Team 链接:https://www.nowcoder.com/acm/contest/141/A来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言524288K Special Judge, 64bit IO Format: %lld 题目描述 Eddy was a contestant participating in ACM ICPC contests. ACM is short for Algorithm, Coding,…
题意: 给出n个区间和m个点(点按顺序给出且强制在线).每个区间只会被第一个他包含的点摧毁.问每个点能摧毁多少个区间以及每个区间是被哪个点摧毁的. 题解: 将n个区间按照左端点排序,然后用vector(储存左端点,右端点,id)初始化线段树. 初始化的方法是:对于线段树的n个叶子节点,即为排好序的n个区间.对于其他节点,将左右儿子按照右端点大小归并(归并是线性复杂度). 还要维护每个节点左端点的最小值(用来剪枝)和最大值(用来判断可行性). 每个区间只会被第一个他包含的点摧毁,所以用vis数组标…
题意:给定n*m的格子,每个格子有不同的种类,q次操作,每次操作使[x1,y1]到[x2,y2]的格子除了k类型的以外都删除,最后单次询问所有格子被删了几个 官方题解提到了两种有意思的做法,随机和二进制分组 目前我写了随机的做法,简单粗暴好懂 (upd.劳资总算把二进制分组的给做出来了! 给每种类型打个随机权值,操作覆盖到的区间都加上这个权值 最后查询的时候只需这道这个点的值是不是该类型的权值的倍数就行了 就这么简单 实现上只需套路作差取前缀和就能得到单点的值,总复杂度\(O(n)\) (WA了…
题意:给出n<5e4,a[1...n],单次1e5总次1e6次查询除去区间(L,R)的数的个数 开场5分钟:莫队是不可能莫队的,这道题是不可能莫队的 最后1小时:真香 具体操作没啥特别的,注意一下add和del是和实际相反的操作,以及开区间特判 然而这是卡着过去的.. 正解用裸主席树或其他dsa,只需把数组翻倍再拼接就好(我好菜啊 #include<iostream> #include<algorithm> #include<cstdio> #include<…
一个人可以走一步或者跳x步,但不能连着跳,问到这个区间里有几种走法 考虑两种状态  对于这一点,我可以走过来,前面是怎么样的我不用管,也可以跳过来但是,跳过来必须保证前一步是走的 dp[i][0]表示i这一步是走过来的dp[i][1]表示i这一步是跳过来的 #include<iostream> #include<bits/stdc++.h> using namespace std; ][]; ; ]; int main() { int n,w; cin>>n>&g…
题意: 给出一棵n个点的树,每条边有边权.对这个树加边变成一个完全图.新加的边的权值为边上两点在树上的距离.求完全图上任意两点的最大流之和. 题解: 一共有C(n,2)个点对.假设当前求s到t之间的最大流,也就是最小割.那么割完之后会是2个连通块,且连通块内部是完全图. 因为是最小割,所以被割掉的边权和最小.即两个连通块内部的边权和最大.那么就会有一个连通块是孤立点,取s和t中到其余所有点距离小的作为孤立点. 问题变成了求每个点到其他所有点的距离. dfs第一次求每个点到他所有儿子节点的距离,d…
题意: 给出a数组的排列.求出字典序第k小的b数组的排列,满足1<=bi<=n,bi<bi+1,a[b[i]]<a[b[i+1]],m>0. 题解: 用树状数组倒着求出以每个数为首的递增子序列个数.若总的个数之和小于k则输出-1. 总的个数可能非常大而k<=1e18.所以要判下上界. 最后从1~n扫一遍.当前数大于上一个加入答案的数时,若以它为首的递增子序列个数小于k,则用k减去那个个数,否则将这个数加入答案并将k-1(即减去后面不再加数的情况). k = 0时跳出循环…