10 2019 档案

高精度小数BigDecimal+二分——java
摘要:高精度小数第一题 阅读全文

posted @ 2019-10-31 23:18 zsben 阅读(167) 评论(0) 推荐(0) 编辑

点分治
摘要:1.求<=k点对数,容斥法 /* 求树中距离不超过k的点对数 暴力枚举两点,lca求的复杂度是O(n^2logn),这样很多次询问都是冗余的 那么选择重心作为根,问题分成两部分,求经过重心的距离<=k的点对+不经过重心的距离<=k的点对 先来求第一部分,计算所有点的深度,排序,O(nlogn)可以计 阅读全文

posted @ 2019-10-28 22:20 zsben 阅读(129) 评论(0) 推荐(0) 编辑

java——IO(普通文件,二进制文件,压缩文件 )
摘要:二进制文件 压缩包 阅读全文

posted @ 2019-10-28 13:38 zsben 阅读(406) 评论(0) 推荐(0) 编辑

java——文件
摘要: 阅读全文

posted @ 2019-10-28 13:34 zsben 阅读(77) 评论(0) 推荐(0) 编辑

JCF——工具类
摘要: 阅读全文

posted @ 2019-10-27 21:28 zsben 阅读(130) 评论(0) 推荐(0) 编辑

JCF——Map
摘要:Hashtable LinkedHashMap Properties 阅读全文

posted @ 2019-10-27 19:58 zsben 阅读(173) 评论(0) 推荐(0) 编辑

JCF——set
摘要:HashSet LinkedHashSet TreeSet 联系与区别 阅读全文

posted @ 2019-10-27 19:56 zsben 阅读(124) 评论(0) 推荐(0) 编辑

JCF——List
摘要:ArrayList LinkedList Vector 阅读全文

posted @ 2019-10-27 19:52 zsben 阅读(91) 评论(0) 推荐(0) 编辑

stl+数论——1247D
摘要:其实也不算很难想,每个元素质因子分解后的p^c的p和c用pair的形式存在每个元素vector里 要去前面找一个数使得所有指数相加是k的倍数,那么把vector里的所有c 模 k,然后去找前面互补的数的个数,可以用map存下前面元素模完k之后的vector,然后答案加一加就行 注意:如果a本身就是一 阅读全文

posted @ 2019-10-26 23:04 zsben 阅读(188) 评论(0) 推荐(0) 编辑

数论+乱搞——cf181B
摘要:/* 2-type B|D^k 3-type B|D-1 11-type B|D+1 6-type B质因子分解, 7-type 其他情况 3-type: (a*(D^4-1)+b*(D^3-1)+...+d*(D-1)) % B = 0 B|(D-1) 11-type: (a*(D^4-1)+b*(D^3+1)+c*(D^2-1)+d*(D^1+1)) % B=0 B|(D^k+(-1)^k) 阅读全文

posted @ 2019-10-26 22:45 zsben 阅读(325) 评论(0) 推荐(0) 编辑

思维+multiset优化——cf1249E
摘要:正着想很难,但是反着想就容易有思路 阅读全文

posted @ 2019-10-26 14:08 zsben 阅读(159) 评论(0) 推荐(0) 编辑

线性基思想+贪心——cf1249C
摘要:/*1+3+9+...+3^n<3^(n+1),按这个思路贪心一下就好*/#include<bits/stdc++.h> using namespace std; #define ll long long ll p[100],flag[40],s[100]; int main(){ p[0]=s[0]=1; for(int i=1;i<=39;i++) p[i]=p[i-1]*3,s[i]=s[i 阅读全文

posted @ 2019-10-26 01:05 zsben 阅读(171) 评论(0) 推荐(0) 编辑

tarjan求强连通+缩点——cf1248E
摘要:这题好像是DEF里最水的,, 阅读全文

posted @ 2019-10-25 23:20 zsben 阅读(177) 评论(0) 推荐(0) 编辑

排序+模拟+优先队列——cf1248E
摘要:其实是个模拟题。。 阅读全文

posted @ 2019-10-25 17:49 zsben 阅读(220) 评论(0) 推荐(0) 编辑

栈+括号序列+暴力枚举——cf1248D1
摘要:这个复杂度首先就想到是n3的复杂度,n2枚举换的位置,求值在花费n复杂度 判断一个序列有多少独立的括号子串时用栈处理一下即可 阅读全文

posted @ 2019-10-25 14:10 zsben 阅读(273) 评论(0) 推荐(0) 编辑

二分+贪心——cf1251D
摘要:二分的时候要特别注意一下下界L 阅读全文

posted @ 2019-10-25 14:08 zsben 阅读(191) 评论(0) 推荐(0) 编辑

神建模+dp——cf1236E
摘要:首先将两个人的所有可能的操作建立成一个模型:m+2行n列的矩阵 序列A对应图上的格子(i,Ai),第0行作为起点,最后一行作为终点,每个点可以向左下,下,右下走,每种可行的情况对应图上的一条路径 推出一个性质:对于第一行每个起点,其能到达的终点范围必定是一个连续的区间 那么我们只要求出每个起点能到达 阅读全文

posted @ 2019-10-24 17:18 zsben 阅读(261) 评论(0) 推荐(0) 编辑

模拟+细节题——cf1236D
摘要:思路好想,细节多的令人发指。。 阅读全文

posted @ 2019-10-24 15:04 zsben 阅读(172) 评论(0) 推荐(0) 编辑

java——数组
摘要: 阅读全文

posted @ 2019-10-23 23:22 zsben 阅读(82) 评论(0) 推荐(0) 编辑

线段树求后继+环——cf1237D
摘要:/* 首先开三倍消环(两倍是不够的),倒序求值,线段树找一下后继即可 */ #include using namespace std; #define N 300005 int n,a[N],ans[N]; #define lson l,m,rt>1; build(lson);build(rson); Max[rt]=max(Max[rtv)pos1=min(pos1,l)... 阅读全文

posted @ 2019-10-23 17:52 zsben 阅读(170) 评论(0) 推荐(0) 编辑

排序+stl——cf1237C
摘要:先排序,把所有x坐标相同的放到同一个vector里去,然后对每个vector里的都是二维点,很好求,然后最后再把剩下的对匹配了 阅读全文

posted @ 2019-10-23 10:53 zsben 阅读(155) 评论(0) 推荐(0) 编辑

思维+双指针+环——cf1244F
摘要:/* 可以发现一个性质:连续两个相同色块永远不会变色 继而可以发现,这个色段每次迭代都向左向右拓展长度1,直到撞上其他扩张的色段 所以预处理出所有连续色段,然后对于所有不在色段里的点,我们可以预测其最终的颜色: 其本身每次迭代改变一次颜色,如果k>= 离其最近的那个色段到其的距离Len,那么其就会被那个色段覆盖 那么就要预处理出这些点两侧最近的色段距离和颜色 由于是... 阅读全文

posted @ 2019-10-23 10:02 zsben 阅读(209) 评论(0) 推荐(0) 编辑

模拟+双指针——cf1244E
摘要:排一遍序然后用l,r指针进行移动,每次移动的是靠1,或靠n更近的那个指针 ps:这题自己还开了个桶来做,并且开了桶的做法不知道为什么错在大的数据。。 阅读全文

posted @ 2019-10-22 08:29 zsben 阅读(272) 评论(0) 推荐(0) 编辑

树的性质——cf1244D
摘要:特别简单,只有链的形式才符合要求,那么枚举前两个点的颜色搞一下就可以 阅读全文

posted @ 2019-10-21 15:28 zsben 阅读(170) 评论(0) 推荐(0) 编辑

数学思维——cf1244C
摘要:可惜cf不能用int128,不然这个题就是个exgcd的板子题 这是exgcd的解法,但是只用ll的话会溢出 #include<bits/stdc++.h> using namespace std; #define ll long long ll x,y,z,a,b,c,d,n; ll exgcd( 阅读全文

posted @ 2019-10-21 14:30 zsben 阅读(190) 评论(0) 推荐(0) 编辑

树的直径变形——cf1238F
摘要:/* 题目给定一些一维线段[li,ri],要求从这些线段里挑出一些线段,每条线段对应一个点,如果两线段相交,那么点连边,这样得到的树是good-tree 现在给定一棵树,要求从该树中选出一棵子树,使这棵子树是good-tree 显然不能有三个线段两两相交,这样就成了环 对应到good-tree的性质上,就是一个根最多连两个size>1的结点,但可以挂多个size=1的结点,非根结点最多挂一个... 阅读全文

posted @ 2019-10-21 12:09 zsben 阅读(291) 评论(0) 推荐(0) 编辑

ac自动机暴力跳fail匹配——hdu5880
摘要:很简单的题,ac自动机里再维护一个len表示每个状态的串长,用s去query时每到一个结点都要暴力跳fail,因为有可能这个结点不是,但是其fail是危险结点,找到一个就直接break 再用个差分数组快速统计覆盖情况即可 阅读全文

posted @ 2019-10-19 22:40 zsben 阅读(267) 评论(0) 推荐(0) 编辑

状态压缩dp增量统计贡献——cf1238E(好题)
摘要:这题的状态设计非常巧妙,因为dp[S]表示的并非当前正确的值,而是维护一个中间量,这个中间量在到达末状态时才正确 当然官方的题解其实更加直观,只不过理解起来其实有点困难 阅读全文

posted @ 2019-10-19 21:29 zsben 阅读(264) 评论(0) 推荐(0) 编辑

思维——cf1238C
摘要:听思维的一道题,网上大多直接模拟,感觉有点麻烦,其实只要把连续段求出来,然后处理一下统计答案就行 两个注意点:1.除了第一个连续段,其余段长度都要+1 2.因为目的地是0,所以最后一段要特判一下 阅读全文

posted @ 2019-10-19 10:30 zsben 阅读(196) 评论(0) 推荐(0) 编辑

ac自动机fail树上按询问建立上跳指针——cf963D
摘要:解法看着吓人,其实就是为了优化ac自动机上暴力跳fail指针。。 另外这题对于复杂度的分析很有学习价值 阅读全文

posted @ 2019-10-18 22:39 zsben 阅读(388) 评论(0) 推荐(0) 编辑

树形dp+贪心+增量法+排序——cf1241E(好题)
摘要:/* 给定一棵树,每个结点最多选和其相连的k条边,问使边权和最大的策略 dp[u][0|1]用来表示u没连父边|连了父边 时u子树下的最优解 如果u不和任意一个儿子连边,那么u下的收益是tot=sum{dp[v][0]} 现在我们在其中选择一个儿子v连到u,那么 tot的增量就是 dv=dp[v][1]-dp[v][0] + w; 求dp[u][0]时,我们最多可以选择k个儿子相连,那么就... 阅读全文

posted @ 2019-10-18 18:50 zsben 阅读(142) 评论(0) 推荐(0) 编辑

以字符集为位数的字符串hash——上海网络赛G
摘要:先预处理一个hash[a][b]:开头字符为a, 结尾字符是b,中间的字符hash值为hs的的hash表,保存的是出现次数 对于一个子串求hash值的策略:设hash值是个26位的数,每新增一个字符,就在对应位上+1 阅读全文

posted @ 2019-10-18 17:27 zsben 阅读(188) 评论(0) 推荐(0) 编辑

逆向思维——cf1241D
摘要:/* 给定一个序列a,每次可以把值为x的所有元素放到a的首部或尾部,问将a变为lis的最少操作步数 对原序列离散化后重新打标记, 可以反着来考虑这个问题:即固定连续的元素值为[l,r]的点不动,那么剩下的所有元素值至多多进行一次操作,就可以让这个序列变成lis 所以求出这个最长合法的连续元素值段落即可 */ #include<bits/stdc++.h> using namespace std; 阅读全文

posted @ 2019-10-17 16:32 zsben 阅读(164) 评论(0) 推荐(0) 编辑

java——异常处理
摘要: 阅读全文

posted @ 2019-10-17 01:00 zsben 阅读(116) 评论(0) 推荐(0) 编辑

java——String类,时间类,格式化
摘要:日期类 格式化 阅读全文

posted @ 2019-10-16 11:52 zsben 阅读(128) 评论(0) 推荐(0) 编辑

java 学习笔记
摘要:1.对象的赋值方式是引用赋值 2.继承时单根继承,子类的构造函数里,,如果没有super的构造函数,那么第一行就是super(); 3.接口不算类,无构造函数所有方法为空,方法为public,接口可以继承(多个)接口,类也可以继承多个接口,但是只能继承一个抽象类 4.非抽象类必须实现完所有的空方法, 阅读全文

posted @ 2019-10-15 13:44 zsben 阅读(116) 评论(0) 推荐(0) 编辑

区间dp(二维)——cf1199F
摘要:复杂度是O(N^5),枚举所有小矩形,转移时再按每列,每行进行转移 阅读全文

posted @ 2019-10-09 19:25 zsben 阅读(416) 评论(0) 推荐(0) 编辑

思维构造+匹配——cf1199E
摘要:直接枚举每条边,如果边加到图中后还是个匹配图,就直接加,反之就不加 这样加完所有边后,剩下的点必定可以组成一个独立集:因为如果剩下的点中还有互相匹配的,那么这对点应该在加边时就被算到匹配图中 所以要么是>=n的匹配图,要么是>=n的独立集,所以必定有解 阅读全文

posted @ 2019-10-09 16:51 zsben 阅读(118) 评论(0) 推荐(0) 编辑

线段树区间合并优化dp——cf1197E(好)
摘要:线段树优化dp的常见套路题,就是先按某个参数排序,然后按这个下标建立线段树,再去优化dp 本题由于要维护两个数据:最小值和对应的方案数,所以用线段树区间合并 阅读全文

posted @ 2019-10-08 16:20 zsben 阅读(359) 评论(0) 推荐(0) 编辑

区间dp+预处理——cf1278F(难题)
摘要:感觉很难的区间dp,主要是状态难想 阅读全文

posted @ 2019-10-08 11:25 zsben 阅读(254) 评论(0) 推荐(0) 编辑

思维——cf1178E
摘要:一开始少看了条件:相邻两个字符不相等,字符集只有abc 那么我们取开头结尾各两个字符,一定有两个是相等的 阅读全文

posted @ 2019-10-07 22:48 zsben 阅读(147) 评论(0) 推荐(0) 编辑

质数密度+思维——cf1174D
摘要:/* 构造 n个点的无向图,无重边自环 边数e也是质数 点的度数也是质数 */ #include<bits/stdc++.h> #include<vector> using namespace std; #define N 100005 int prime[N],m; bool vis[N]; void init(){ for(int i=2;i<N;i++){ if(!vis[i])prime[ 阅读全文

posted @ 2019-10-07 19:24 zsben 阅读(254) 评论(0) 推荐(0) 编辑

暴力枚举+扫描线+线段树——cf1194E
摘要:/*思路就是枚举矩形下面那条先,把所有和其交叉的竖线更新进线段树,然后扫描先向上更新,遇到竖线上端点就在线段树里删掉,遇到横线就更新答案*/#include using namespace std; #define N 20005 #define ll long long struct SegV{int x,y1,y2;}v[N];//垂直线 struct SegH{int y,x1,x2... 阅读全文

posted @ 2019-10-07 15:52 zsben 阅读(212) 评论(0) 推荐(0) 编辑

线段树维护线性基并——17西安icpc a
摘要:#include<bits/stdc++.h> using namespace std; #define N 10005 int a[N],n,k,q; struct LB{ int b[35]; LB(){memset(b,0,sizeof b);} int check(int x){ for(int i=29;i>=0;i--)if(x>>i & 1){ if(!b[i])return 0; 阅读全文

posted @ 2019-10-06 23:54 zsben 阅读(177) 评论(0) 推荐(0) 编辑

概率——17icpc西安
摘要:不知道为什么是这样子的。。 阅读全文

posted @ 2019-10-06 22:30 zsben 阅读(130) 评论(0) 推荐(0) 编辑

暴力字符串hash——cf1200E
摘要:#include using namespace std; #define ll long long #define N 1000005 #define mod 1000000007 #define P 131 char s[N],buf[N]; int n,lens; ll has[N],p[N],has1[N]; int main(){ p[0]=1; for(int ... 阅读全文

posted @ 2019-10-05 22:15 zsben 阅读(223) 评论(0) 推荐(0) 编辑

单调栈+线段树——cf1220F
摘要:首先考虑初始排列,pi会让周围所有比其大的元素深度+1,所以要求每个点的深度,只要其被覆盖了几次即可 这个覆盖可以通过处理每个元素的左右边界(单调栈O(n))+线段树区间更新(Ologn(n))来做 然后是将排列最左边一个元素移到最右边: 在左边删元素pi,只会让pi右边所有比其大的元素深度-1, 阅读全文

posted @ 2019-10-05 20:03 zsben 阅读(282) 评论(0) 推荐(0) 编辑

拆边+BFS队列骚操作——cf1209F
摘要:这个拆边+队列操作实在是太秒了 队列头结点存的是一个存点集的vector,1到这个点集经过的路径权值是一样的,所以向下一层拓展时,先依次走一遍每个点的0边,再走1边。。。以此类推,能保证最后走出来的路径是最优的 阅读全文

posted @ 2019-10-05 01:35 zsben 阅读(221) 评论(0) 推荐(0) 编辑

预处理+状态压缩+剪枝——codefoece 1209E
摘要:那一步剪枝实在是没想到 阅读全文

posted @ 2019-10-05 00:27 zsben 阅读(187) 评论(0) 推荐(0) 编辑

导航

统计

点击右上角即可分享
微信分享提示