自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(26)
  • 收藏
  • 关注

原创 博弈论题目集 (持续更新)

巴什博弈HDU 1846这个应该比较好推:如果 n % (m+1)==0 后手胜利 否则 先手胜利#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int main(){ int t; scanf("%d",&t); while(t--){ int n,m; scanf("%d%d",&n,&m); if(n...

2020-06-29 20:24:22 2958

原创 舞蹈链 模板

精确覆盖#include<bits/stdc++.h>using namespace std;const int N = 260000;inline int in(){ int x=0;char c=0; while(c<'0'||c>'9') c=getchar(); while(c<='9'&&c>='0') x=(x<<1)+(x<<3)+(c^48),c=getchar(); return x; .

2020-06-28 21:55:48 254

原创 GYM 102220 problem H Skyscraper 树状数组

将近一年前写的题目了 又翻出来看看题目链接:H Skyscraper思路:用线段树维护差分数组设b[i]=a[i]-a[i-1]如果 bi<=0 说明在完成i-1时可以顺便把i位置完成如果 bi>0 说明完成i-1后至少还需要bi才能完成那么我们维护两个树状数组第一个树状数组维护的是差分数组 bi 第二个树状数组维护的是ci(ci=bi && bi>0)修改操作就是常规的差分数组修改询问的话 就是也就是#i...

2020-06-26 21:31:54 242

原创 codeforces E. Sum of Digits

这题可以暴力打本地表。。。 等正解出来再搞正解对于k=0 我们让9尽量多就行 这个可以特判对于k=1 暴力打表到1e9对于k>=2 暴力打表到1e6(发现1e6以上就没有变化了)当然这样做纯靠懵的 实在没办法了就这样搞#include<bits/stdc++.h>using namespace std;typedef long long ll;ll ans[155][10]={0,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,0,-1,-1,-..

2020-06-26 11:10:49 330

原创 CodeForces - 849E cdq分治

cdq分治的题 不过要先推出维度的关系显然想要得出一种数的答案 我们需要知道这种数在区间里面出现的位置 最后的位置减去最前面的位置即可但是我们无法很便捷的找到最后和最前的位置 却可以找出所有出现的位置设 pre[i] 为i位置的数上一次出现的位置 对于每一个这样的对(i和pre[i]) 他们的贡献是 i-pre[i]那么一种数对于整个区间的贡献就是i<=R pre[i]>=L 的所有贡献和三个维度分别是 时间,当前位置 i 和pre[i]对于每一个询问...

2020-06-24 11:51:29 387

原创 Codeforces Round #652 (Div. 2)

D. TediousLee我们先处理一下叶子结点(ye)和1个儿子的结点(one)之间的关系显然 找规律题 观察3号树 4号树和6号树的关系 发现4号树的叶子 在6号树变成了“爪子” 每个爪子贡献为4 然后我们去掉4号树的叶子 发现刚好得到了一棵完整的3号树于是 猜想规律是然后用样例验证一下就知道了#include<bits/stdc++.h>using namespace std;const int N = 2e6+20;typedef...

2020-06-24 11:38:14 116

原创 计蒜客 ACM-ICPC 2017 Asia Xi

收录两题 还有大家千万别用uva的题目来源 这oj真的垃圾 毁我青春A1607XOR题意:给一个长度为n的序列 给一个数k 每次询问区间L,R 在L,R这些数中选一个子集 使得子集中的元素的异或和与k进行或运算以后取得最大值显然 由或运算的性质我们知道 k的二进制中为1的位会保留 为了取得最大值 我们得尽量让为0的位变成1 我们可以让序列中每个数都进行 ai&=(~k) 这样的一个运算 那么ai留下来的就是k中没有的位了 然后我们用线段树 维护a数组...

2020-06-22 20:41:08 182

原创 P3674 小清新人渣的本愿 莫队+bitset 维护区间是否存在两个数 相减、相加、相乘为x

bitset都没怎么用过 这题恰好能熟悉一下这题一看就是莫队吧 然后如何看区间里面是否有两个数相减 或相加 或相乘为k先讲相乘 因为这个最简单我们直接暴力遍历k的因子 如果 y和k/y 都在的话 那么就可以 反正是带根号的 和莫队的复杂度一样 没什么问题然后再说相减 对于每个数 我们用bitset记录它是否出现过 bitset s1记录 a[i] 的出现如果区间中存在 y,q y-q=k 即 y= k+q那么显然s1得满足 (s1&(s1&...

2020-06-20 12:02:26 171

原创 P4113 [HEOI2012]采花 莫队(个屁)or 树状数组

看着莫队的标签去写的 结果发现数据加强了 根本卡不过 后来想了想发现没什么好办法 看题解区 发现了一个树状数组的写法确实很有意思题意:给一个序列 对于每个询问区间 l~r 给出出现次数大于等于2的数的个数我们知道树状数组离线可以解决区间有多少个不同数的问题(也就是出现次数大于等于1的个数) 那出现次数大于等于2怎么写呢 显然要知道一个数是不是出现两次 我们需要知道这个位置的数 下一次在哪个位置出现(下文都以后继表示) 这个可以预处理一下我们把所有的询问按照左端点排序 一开始...

2020-06-18 10:38:34 123

原创 P4570 [BJWC2011]元素 线性基上贪心

n个物品,有编号和价值两个属性,如果多个物品之间编号异或为0,那么他们就会消失。求一个子集,使得总价值最大。根据线性基的性质 假设我有3个物品的编号异或为0,那么这三个物品无论以什么样的顺序插入线性基,最后一个一定是无法插入的,那么有个显而易见的贪心策略:把物品按价值降序排序,如果一个物品能插入线性基,我们就加上它的价值,否则忽略。#include<bits/stdc++.h>using namespace std;const int N = 1e3+10;typedef l.

2020-06-18 10:15:50 115

原创 牛客 吉林大学ACM集训队选拔赛 (重现赛)A 数位dp

被榜骗了 *** h题不是有手就会吗 怎么就那么点人过啊不过我还是补a 数位dp 很久很久以前写过 不要62 不过忘得干干净净了这题应该是数位dp里面最简单的那种吧链接:https://ac.nowcoder.com/acm/contest/5944/A来源:牛客网题目描述One day, Ks raised a question in this contest.How many times the digit 7\texttt{7}7 appears in the in...

2020-06-14 16:44:35 286

原创 P3899 [湖南集训]更为厉害 树状数组离线二维数点

题意太长 不赘述考虑如何去求三元组(a,b,c)1.b是a的祖先 这个很好算 因为a的每个儿子都可以作为c 然后b和a的距离不超过k就行 显然就是2.a是b的祖先 这个才是这题的难度所在设tid[x]为x的dfs序如果a是b的祖先并且 依题意这就变成了一个二维数点的模型 以tid为x轴 dep为y轴 那不就是在矩形 (tid[a],dep[a]), (tid[a]+siz[a]-1,dep[a]+k)里面有多少个点吗 对于每个合法的b点 ...

2020-06-14 15:58:09 140

原创 P6327 区间加区间sin和 线段树

这题挺简单的 不过错的很玄学用公式 sin(a+x)=sina*cosx+sinx*cosa cos(a+x)=cosa*cosx-sina*sinx就行 维护sinx的和和cosx的和更新就行了 需要注意的是常数比较大 三角函数的值尽量只算一次 传递下去就行 然后玄学的地方是 我把lazy[x]+=val;放到cal函数里面会wa 把它单独拿出来写就能过 不知道为什么#include<cstdio>#include<iostream>#include&lt...

2020-06-13 21:25:25 304

原创 P4592 [TJOI2018]异或 树上可持久化trie

树上可持久化trie的板子 第一棵树按照dfs序建立 第二棵树按照遍历顺序直接在父节点的基础上建立空间开N*50 开个N*30wa了 也不re de了半天bug#include<bits/stdc++.h>#define R register intusing namespace std;const int N = 1e5+100;int h[N],to[N<<1],nex[N<<1],cur,val[N],lg[N],fa[N][30],dep...

2020-06-12 11:01:44 113

原创 团体赛训练 NEERC2014 Southern Sub

这套题可做题挺多的,而且有几个构造和模拟题 一些不可做题和无聊的题就没补了A - Nasta Rabbara因为我是dser 赛后唯一补的题 当时比赛的时候没读懂,看没什么人过也放弃了 确实有点麻烦的题 但是很有意思题意:给出n个点,m条边,q个询问 每个询问给一个区间l,r 问区间l,r内的边是否能构成二分图一般像这种动态加边删边的,就想到lct了 不过并没想到什么处理区间问题的好方法看了题解才知道:求出所有的最小的可以构成奇环的区间 看询问的区间是否包含至少一个这...

2020-06-11 17:25:29 177

原创 P5787 二分图 /线段树分治 或 lct

没有奇环的图就是二分图,所以我们要想办法去维护一个图里面有没有二分图。线段树分治的做法:以时间建立线段树,对于每一条边的出现与消失时间,我们通过区间更新把这条边挂在线段树的结点上,最后对线段树进行一次遍历。搜索的时候加边,回溯撤销边。用扩展域并查集判断是否为二分图,因为要撤销边,所以并查集得是可撤销的,并且不能路径压缩,同时为了保证复杂度必须按秩合并。并查集判断二分图的方法是 对于每一条加入的边 (u,v) 如果u,v已经联通 那么不是二分图,否则合并(u,v+n),(v,u+n)整个复杂度 .

2020-06-11 09:01:47 150

原创 P3224 [HNOI2012]永无乡 权值线段树合并

学了线段树合并以后这题感觉瞬间水了,标签是平衡树,平衡树合并还没学的很会,不过线段树合并绝对是最好写的用并查集维护连通性。注意 合并的时候并查集要与线段树合并一致 假如fa[a]=b 那么就要把a合并到b上面去另外的求第k大就是基础操作了#include<bits/stdc++.h>#define R register intusing namespace std;const int N = 1e5+10;int fa[N],rt[N],lc[N*40],rc[N*4..

2020-06-09 09:44:15 107

原创 线性基模板 求n个数中任意数异或和的最大值

题目链接:线性基模板#include<bits/stdc++.h>using namespace std;const int N = 66;typedef long long ll;ll a[N],d[N];void add(ll x){ for(int i = 55; i >= 0; i--){ if((x>>i)&1){ if(!d[i]){ d[i]=x; break; } else x^=d[i]; .

2020-06-07 20:19:30 696

原创 P2633 Count on a tree 主席树求树上第k大

看到树上第k大 首先想想普通的前缀和怎么做 假如我要静态的求链(u,v)的和 那么我们就从树根一直搜下来 维护一个前缀和,答案就是现在再来看主席树的方法就一目了然啦 对于每一个结点 在父节点的基础上建树 然后询问的时候观察和k 的大小关系即可#include<bits/stdc++.h>#define I inline void#define R register intusing namespace std;const int N = 1e5+100;in...

2020-06-06 09:40:27 120

原创 E. Johnny and Grandmaster 数论+思维

这道题的思路来源于一个叫zbr的大佬 真的挺秒的 仔细想想也不是很难 但是没有想到如此简便的做法首先我们要从大到小排序 这个应该没问题 因为大数的权重远远比小的大 所以先分配大的在分配小的其次 我们要清楚 对于一个大数 如果我们把他分配给一个集合 另外一个集合就要想办法凑出这个数 根据p^k这个特殊性 假设我们这个一个大数是 p^k 那么比它小的数 要么刚好凑成它要么不够凑 这是显然易见的 如果不够凑 答案就是 p^k减去所有比它小的数 否则 我们把p^k 凑出来 在重置差值为0 再...

2020-06-05 11:44:15 244

原创 [USACO18FEB]New Barns P lct维护树的直径

树的直径,通俗点讲就是树中两个距离最远的点。在做此题之前我们需要证明一个结论,那就是一棵树里面和某个点x距离最远的点一定是树的直径的端点。也就是说如果路径(u,v)是树的直径,那么距离x最远的点要么是u,要么是v我们来证明一下:1.x在路径(u,v)上假设 y是距离x最远的点 那么 则 因为x在u,v上所以得到 与(u,v)是树的直径的定义相矛盾2.x不在路径(u,v)上同样假设y是距离x最远的点 且y和路径(u,v)的最近点为b那么有...

2020-06-04 13:19:18 435

原创 P2387 [NOI2014]魔法森林 lct维护链路

题目描述为了得到书法大家的真传,小 E 同学下定决心去拜访住在魔法森林中的隐士。魔法森林可以被看成一个包含nn个节点mm条边的无向图,节点标号为1,2,3,…,n1,2,3,…,n,边标号为1,2,3,…,m1,2,3,…,m。初始时小 E 同学在11号节点,隐士则住在nn号节点。小 E 需要通过这一片魔法森林,才能够拜访到隐士。魔法森林中居住了一些妖怪。每当有人经过一条边的时候,这条边上的妖怪 就会对其发起攻击。幸运的是,在11号节点住着两种守护精灵:A 型守护精灵与 B...

2020-06-03 11:31:47 125

原创 [WC2006]水管局长 lct维护最小生成树

题目背景SC 省 MY 市有着庞大的地下水管网络,嘟嘟是 MY 市的水管局长(就是管水管的啦)。题目描述每天供水公司可能要将一定量的水从uu处送往vv处,嘟嘟需要为供水公司找到一条从uu至vv的水管的路径,接着通过信息化的控制中心通知路径上的水管进入准备送水状态,等到路径上每一条水管都准备好了,供水公司就可以开始送水了。嘟嘟一次只能处理一项送水任务,等到当前的送水任务完成了,才能处理下一项。在处理每项送水任务之前,路径上的水管都要进行一系列的准备操作,如清洗、消毒等等。嘟嘟...

2020-06-02 20:58:24 271

原创 ORA-12638: 身份证明检索失败 与 connect /as sysdba 权限不足

这两个问题应该是相对的今天我要登录我们学校的数据库时出现了身份证明检索失败的问题解决方案:在L:\app\29951\product\11.2.0\dbhome_1\NETWORK\ADMIN目录下找到sqlnet.ora文件将SQLNET.AUTHENTICATION_SERVICES= (NTS)设置,修改为:SQLNET.AUTHENTICATION_SERVICES= (NONE)SQLNET.AUTHENTICATION_SERVICES 表示oracle使用哪种验证方式:.

2020-06-01 18:39:11 1317

原创 洛谷P1501 [国家集训队]Tree II lct维护

lct维护一些基本的树链信息 注意的地方是要类似线段树一样 先维护乘标记 再维护加标记另外修改树链 u,v的信息时 把u,v 分(split)出来 要在最后被splay上来的那个点修改才能保证正确性#include<bits/stdc++.h>#define R register int#define I inline void#define lc c[x][0]#define rc c[x][1]#define ml(x) x*=c;x%=mod#define al(.

2020-06-01 09:38:07 155

原创 cf 646 E. Tree Shuffling

贪心做,每次选ai最小的点向下遍历,然后做最大交换次数。 把剩余的(1个0或1个1存在根结点) 在继续这个过程就行 我们可以推断 走过的点一定不会再走(再走肯定不会更优)#include<bits/stdc++.h>using namespace std;typedef long long ll;const int N = 2e5+10;ll a[N];int fa[N],b[N],c[N],cur,h[N],nex[N<<1],to[N<<1],v..

2020-06-01 01:43:44 155

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除