- 博客(18)
- 收藏
- 关注
原创 CF842E
这场CF是以unrated选手的身份参加的,所以打的时候节奏比较慢,然而尽管慢,总共还是爆了5发OJ(A题忘判左界大于右界*1,B题看错d的含义*2 ,出题人真是的,样例给那么水 ,C题写了一个显然(是错的)的DP*2,D题反倒*0) 等到开E题时已经只剩30分钟,看到群里Claris说 辣鸡蒟蒻Claris(524936896) 0:34:20 我啥都不维护 辣鸡蒟蒻Claris(5249
2017-08-31 22:50:21 560
原创 BZOJ3589动态树,BIT+容斥
其实这题跟动态树无关。 由于链并的结果很奇怪,而链交的结果还是链,所以利用容斥,将并转化为交。 然后大概要求O(49q)O(49q)次链交?可能rmq求lca比较合适。 第一次写rmq求lca,以后要注意rmq相关的数组大小应开到两倍,因为欧拉序列长度是2n-1 然后还要使用一个数据结构,支持1.子树加;2.询问点到根的路径上所经过点的点权和。 求出原树dfs序后,维护两颗支持区间加,单点
2017-08-27 23:08:10 345
原创 CF AIM Tech Round 4上紫记
本来CF Round427就已经有1865rating了,当时扬言要一战上紫,结果后面两场CF一场-5,一场+2,直到现在才达成目标,可惜暑假结束前或许不再有div1的round了。 这场cf时常2.5小时(然而前108分钟拿到了所有分数)。 开场看A题,以为hack点很多(flag*1,后来发现是真的),过了5分钟才AC,然后15分钟时切了B题,30分钟时切了C题,一看standing,还在2
2017-08-25 20:11:26 527 1
原创 NOI2015软件包管理器,大力卡常记
其实此题并不卡常,只是昨天有人说这题全是0/1操作,或许可以压位,然后我采纳这个idea,刷了下榜。 一开始我把朴素线段树给直接换成压位,因为复杂度太大,并不比常数正常的线段树快。这里是纯压位代码 之后根据今年NOI2017D1T1压位线段树的经验,我把纯压位改成了压位线段树,这是代码 为什么压位线段树的相对于普通线段树的优化力度,并没有压位相对于常规暴力那么大?这是因为在常规问题中,压位优化
2017-08-24 19:49:42 604
原创 CF549C
刚看到这题,第一反应是打表,然而规律很乱。 看了下官方题解,似乎是直接考虑最终状态,然而细节较多,在cf这种手速至上的地方可能当场AC并不容易?#include<cstdio>#include<cstdlib>int n,i,z,x,y,k,j,l,u,v;inline void out(int x){ puts(x?"Stannis":"Daenerys"); exit(0
2017-08-18 20:48:22 471
原创 uoj196,DP好题
传送门 orz梁大 一开始的想法是设f[i][j][k]表示i次操作后第j个数为k的概率, 但不同的f[i][j][k]好像之间并不是独立的,反正没写出来。 然后就去抄梁大的题解,似乎很巧妙。#include<cstdio> #include<cstring>#include<algorithm>using namespace std;const int mo=1000000007,
2017-08-17 23:14:28 365
原创 bzoj2863图上的DP题
题目传送门 题解传送门 这题解最后一步似乎没讲清如何容斥的,或许是在大佬眼里,这过于显然(也可能是容斥的某个常用公式?)然而我并不知道,还是证一下吧。 对于有ii个点的图,记至少有j个入度为0的结点的DAG数量是 a[j]=(ij)∗2j∗(i−j)∗f[i−j]a[j]=\dbinom{i}{j}∗2^{j*(i-j)}∗f[i−j] 并用b[j]b[j]表示恰好有j个入度为0的结点
2017-08-15 23:31:38 341
原创 POJ3304
似乎NOI2017考了计算几何。 计算几何这么不OI向的东西,竟然在CCF系列赛事的NOI中考了,感觉有必要学一学啊。 这题本来倒没什么,只是我一开始枚举两个点,直接判下标是否相等。但按照网上各种题解,应该判两个点是否相等。 这可能是做计算几何遇到的第一个坑?#include<cstdio>#include<cmath>const int N=105;typedef double db;
2017-08-15 22:08:04 436
原创 p3763DNA,倍增+hash
本来这题倒没什么,主要是我用倍增+hash+O2水到了洛谷rank1,可能是因为倍增hash的复杂度是O(log答案)O(log答案),而别的什么SA,二分hash都是O(logn)O(logn),谨以纪念。 似乎还有SAM的,然而O(n∗4)O(n*4)还是跑不过我#include<cstdio>#include<cstring> const int N=100100,mo=99824435
2017-08-14 23:31:17 289
原创 洛谷3816
这题很神奇。 一开始我读了很久才弄明白红黑树的定义。 然后觉得可能是个构造题,想了一个下午,感觉要很多特判。 又觉得可能是DP,状态是f[i][j]表示ii个节点且黑高为jj的红黑树的答案,有一个很显然的O(n2logn)O(n^2logn)算法,可惜要T。 我把转移的表打出来,以为f[i][j]肯定从二的幂次,或二的幂次减一转移而来,否则记从xx转移而来,那么似乎xx是不降的。 接着就是
2017-08-14 23:10:49 248
原创 P3590,大力随机化
刚看到到这题,在想是否可以二分答案,然而答案的可行性并不是单调的。 所以我设ll为当前答案可能的最小值,在(l,n](l,n]中随机一个数mm,再判定是否可行,若可行就l=m+1,否则不动,快要超时了就退出。 然后洛谷上居然AC了! 去bzoj上交一发,可能数据比较强,怎么调参也调不过。#include<cstdio>#include<ctime>const int N=2000005;
2017-08-10 15:12:44 291
原创 洛谷3863,时间与原始序列的转化
传送门 题解就不说了。 感觉官方题解3很妙,由此可以归纳出一个通用方法,以解决支持区间修改,单点查询历史中满足某个条件的个数这一类问题。 据说有黑魔法的(n+q)n√(n+q)\sqrt n的做法,但不如算法三+将块设为n√\sqrt n快?#include<cstdio>#include<cmath>#include<algorithm>using namespace std;con
2017-08-08 18:45:13 338
原创 UVAlive4490,状压DP的巧妙运用,注意边界
题解就不说了,网上到处是 我犯的错误有两个。第一个是强制第一个点选中,但实际上者是错的。然后大力对拍,拍了一万多组还没拍出来,然后眼调,发现最后求答案时,我是强制取出k本书,我觉得多取一定不必少取差,因为至少还可以放回去,但要是它的周围环境变了,直接放回去会变差,然后就错了。#include<cstdio>#include<cstring>const int N=155;int f[N][N
2017-08-08 18:37:41 930
原创 LibreOJ β Round #3
传送门 开场先开T1,感觉是TSP板子题,但这是完全图,然后就等价于对于一个任意的排列进行求解,这就转化成了序列问题,但这似乎没什么用。 突然灵机一动,觉得可以先将点权排序,将排序后相邻的元素之间的边纳入回路中。 但这样样例都过不去。 接着努力观察样例,想到了一个巧妙的构造,写了一发,交上去只有90分,特判了n==2的情况就AC了。 然后开T2,感觉每个点可以向自己的庇护所连一条有向边,然
2017-08-04 23:47:03 302
原创 洛谷3600,大力期望DP
传送门 这题从下午做到晚上,真是欲仙欲死。 题解区里有题解,就不说了,一开始有三个地方写挂。 1.把包含于被包含的关系想反了; 2.没有考虑一个元素不在任何询问里的情况 3.处理2问题我用的是排序,而且cmp是return l<x.l; 感觉我好菜啊。#include<cstdio>#include<cstring> #include<algorithm>typedef long
2017-08-03 20:16:39 285
原创 UOJ33树上GCD
传送门 官方题解 我写的是点分做法,一开始我是用memset(dp,0,(sizeof dp[0])*t)来清零dp数组的1到t位,但这样第t位刚好没覆盖到,然后就没过大样例。#include<cstdio>#include<cctype> #include<cstring>#include<cmath>typedef long long ll;const int N=400005;
2017-08-02 22:42:46 955
原创 bzoj1758重建计划,树的点分治+单调队列(可能是常见套路?)
传送门 似乎这题有很多种做法。 我的做法是, 先二分答案,然后再分治,这样,如果一开始就找到了路,就能很快返回。然而点分时找重心的常数比较大,我又是每次重新dfs,而不是再次利用前面的结果,然后就跑得很慢。 分治时,我是将每课子树,每个(不带权的)深度中取出(带权深度)最大的一个,组成一个数组,先求解,用双指针扫,再和前面的合并,处理时我按子树深度排了个序,从小到大处理,这样,每次合并时,操作
2017-08-02 16:20:40 220
原创 P3830 [SHOI2012]随机树
传送门 这题前两个子任务比较简单,对于询问nn,直接将最后扩展出来的点的深度,设为n−1n-1时的期望深度加一即可 后两个子任务,考虑原树的左子树有jj个节点,右子树有i−1−ji-1-j个节点,DP即可。注意DP时要用到两个变量最大值的期望值,所以状态要设为f[i][d]f[i][d]表示ii个节点的树深度为dd的概率,然后大力转移。 一开始想错了,以为max(a,b)max(a,b)的期望
2017-08-01 21:55:39 455
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人