08 2019 档案

摘要:T1 chinese 根据他的问题i*f[i]我们容易联想到,答案其实是每种方案中每个点的贡献为1的加和 我们可以转变问题,每个点在所有方案的贡献 进而其实询问就是1-k的取值,有多少中方案再取个和 事实上这样做就是将每个点抽离出来,虽然每种方案中可能包含多个可行点,但是我们每次考虑的都只是一个点的 阅读全文
posted @ 2019-08-29 12:01 Wwb_star 阅读(155) 评论(0) 推荐(0)
摘要:暴力: 正解: 考虑循环矩阵,f[i][j]表示从i点到j点的方案数 我们发现n很小,我们预处理出n次的f[i][j] 然后在矩阵快速幂中,我们要从当前的f[i][j]*f[j][k]-->fir[i][j] 但是此时的循环为三层 我们考虑转移式子的意义在0-n次从i-j,在n+1到2×n转移至j 阅读全文
posted @ 2019-08-27 21:35 Wwb_star 阅读(158) 评论(0) 推荐(0)
摘要:对于此题的性质我们考虑DP 分四种情况 黑色块在右侧单调降,单调升 还有在左侧 另外我们这样可能会记重,所以还要将重复记过的也就是边界线是横的和竖的 然后还要将全白全黑加上 1 #include<bits/stdc++.h> 2 #define MAXN 2100 3 #define int lon 阅读全文
posted @ 2019-08-27 21:24 Wwb_star 阅读(167) 评论(0) 推荐(0)
摘要:正解贪心考场只骗到了70分 做法一: 现将没有限制的边缩掉然后连边, 这样我们直接采用贪心的做法,因为每个边最多只会被反一次, 那么从叶子节点向上对于一个需要修改的边没直接令他向上直到不能修改 注意处理连在lca上有两条链的现象 1 #include<bits/stdc++.h> 2 #define 阅读全文
posted @ 2019-08-27 21:20 Wwb_star 阅读(139) 评论(0) 推荐(0)
摘要:前置芝士约瑟夫问题 这样大概就是板子问题了 考场的树状数组+二分的60分暴力??? 1 #include<bits/stdc++.h> 2 #define int long long 3 #define MAXN 11000001 4 int c[MAXN]; 5 int lowbit(int x) 阅读全文
posted @ 2019-08-27 21:08 Wwb_star 阅读(162) 评论(0) 推荐(0)
摘要:开学了,状态很差,没有考好。 T1是水题,话说我还非得打个对拍真是....... 直接二分就好了 1 #include<bits/stdc++.h> 2 #define int long long 3 using namespace std; 4 int n,d,a,b; 5 int work(in 阅读全文
posted @ 2019-08-22 16:10 Wwb_star 阅读(167) 评论(1) 推荐(0)
该文被密码保护。
posted @ 2019-08-21 11:17 Wwb_star 阅读(5) 评论(0) 推荐(0)
摘要:为啥这一套题目背景感到很熟悉。 T1 嚎叫响彻在贪婪的厂房 考试一个小时没调出来,自闭了.......... 正解很好想,最后实在打不出来了只好暴力骗分了。。。 联想到以前做的题:序列(涉及质因数分解) 对于此题需要注意 1.等差数列中不能有相同的数,所以可以用set判断 2.同时对于等差数列我们可 阅读全文
posted @ 2019-08-19 19:21 Wwb_star 阅读(184) 评论(0) 推荐(0)
摘要:最近好颓啊,所以啥都做不出来 简单说一下这次考试,分机房了,还分不同考卷,果然我还是留在二机房的蒟蒻, 大概也只有这样的简单题,才能勉强水个rank 3吧........ 其实不必管在哪个机房,努力便好,不必在意什么,这么多的考试,对于成绩的好与坏大概都看淡了,无论如何无愧于心便好。 ******* 阅读全文
posted @ 2019-08-18 21:16 Wwb_star 阅读(149) 评论(0) 推荐(0)
摘要:80分打法 首先二分最后答案,答案即为r,可看作以每个k为圆心r为半径的圆 我们进行并查集维护,维护相交的圆的边界 最后判断是否存在圆将上下边界覆盖,如有证明不行 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #inclu 阅读全文
posted @ 2019-08-17 21:36 Wwb_star 阅读(379) 评论(2) 推荐(0)
摘要:考场时没有发现性质,用了个前缀和优化暴力,结果写WA了 我们发现其实联通块的个数就是点的个数-边的个数 然后我们需要维护横向上和纵向上的边的前缀和 前缀和的查询形式稍改一下 暴力 1 #include<cstdio> 2 #include<iostream> 3 #include<cstdio> 4 阅读全文
posted @ 2019-08-17 06:37 Wwb_star 阅读(144) 评论(0) 推荐(0)
摘要:大概看了两三个小时的题解,思考量很大,实现简单........ 20分: 明显看出,每个点的贡献是x*(x-1)/2;即组合数C(x,2),从x个线段中选出2个的方案数,显然每次相交贡献为1,n^2枚举相交即可.... 40分: 对于四十分,观察图像发现是实际就是求逆序对..... 1 #inclu 阅读全文
posted @ 2019-08-14 21:45 Wwb_star 阅读(398) 评论(0) 推荐(0)
摘要:带有贪心思想的搜索, 我们很容易想到,对于自身来说,如果L R区间已经走过,那么在最优策略下不会重复走 同时,每次我们都会找离本节点最近的点&&符合条件移动, (假设我们当前不走,那么我们走到其他点才返回一定不优) 那么我们搜索的时间复杂度最大为2^100,又因为剪枝(L,R距离剪枝),是能水掉的啦 阅读全文
posted @ 2019-08-12 21:17 Wwb_star 阅读(269) 评论(0) 推荐(0)
摘要:模拟题,很水啦............. 判断好字符就好了 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<string> 5 #include<algorithm> 6 #include<cmath> 7 阅读全文
posted @ 2019-08-12 21:10 Wwb_star 阅读(124) 评论(0) 推荐(0)
摘要:这一套题的背景....... 60分暴力很简单,不说了。。。。 100分: 我们发现对于一个矩形,我们可以看作两个大矩形相减的形式 那么我们枚举矩形上下边界,然后在定义一个桶 每次将当前矩形%q后塞进桶,同时查找tong[余数]的个数,显然这可以化为小矩形 注意tong[0]=1,然后清空即可 考试 阅读全文
posted @ 2019-08-11 19:01 Wwb_star 阅读(187) 评论(0) 推荐(0)
摘要:只看45分的话,是树形DP....(当然也有能拿到70分+的大佬) 40分: 只考虑k==1的情况,树形DP 所以每个节点可能被父亲,自己,儿子控制 设f[MAXN][3],0表示儿子,1表示自己,2表示父亲 f[i][1]+=min(f[to][0],f[to][1],f[to][2])(因为自己 阅读全文
posted @ 2019-08-11 18:42 Wwb_star 阅读(211) 评论(0) 推荐(0)
摘要:一道很好的题,综合很多知识点。 首先复习差分: 将原来的每个点a[i]转化为b[i]=a[i]^a[i+1],(如果是求和形式就是b[i]=a[i+1]-a[i]) 我们发现这样的方便在于我们可以运用前缀和的形式,求出单点值,当然,差分一般支持区间修改 单点查询,同时我们发现异或也满足转化的性质,我 阅读全文
posted @ 2019-08-11 17:41 Wwb_star 阅读(210) 评论(0) 推荐(0)
摘要:考试只好随便骗骗分过去啦啦啦..... 正解是玄学线段树: 以每个操作为叶子节点,我们定义几个变量ce表示层数,h表示高度,add表示所减的层数 那么问题转化为单点修改的问题输出直接是根节点答案 但是我们发现合并区间很毒瘤 我们分两种情况: 设L为左儿子,R为右儿子。 1.T[L].ce<T[R]. 阅读全文
posted @ 2019-08-10 17:32 Wwb_star 阅读(227) 评论(0) 推荐(0)
摘要:很显然的tarjan嘛......拓扑也很容易想到 我是不会说我因为懒把拓扑改成DFS结果扔了40分然后就是纯板子了 因为我们一条路径的点如果不是一个一个炸,同时炸两个,他们一定会相互到达.... 找最长链即可。 1 #include<iostream> 2 #include<cstdio> 3 # 阅读全文
posted @ 2019-08-09 21:32 Wwb_star 阅读(202) 评论(0) 推荐(0)
摘要:放在了考试T1 发现70分的DP很水啊,f[i][j]为当前位置是i分配了j个队的方案 我们用前缀和统计,在将i删去,j倒序枚举,就可以删掉一维(也可以滚动数组滚起来) 1 #include<iostream> 2 #include<cstdio> 3 #include<cmath> 4 #incl 阅读全文
posted @ 2019-08-09 21:27 Wwb_star 阅读(242) 评论(0) 推荐(0)
摘要:考试时没审清题,内存超限....... 事实上这是个三分题, 因为我们先假设一个最高点和最高点的高度,随着最高点高度的增加, 其他点的贡献为abs(a[j]-(h[i]-abs(i-j)))(j为最高点) 所以点的贡献的和是一个单峰函数(下凹的) 那么我们三分即可 1 #include<cstdio 阅读全文
posted @ 2019-08-09 21:10 Wwb_star 阅读(144) 评论(0) 推荐(0)
摘要:这题一定是个模拟题...... 怎么可能.......考场被完美骗到 其实这题是最短路问题啦啦啦啦.......... 对于每个墙与墙,我们因为联通的门的存在,所以我们直接将与它相邻的格子连在一起喽 当然暴搜也能骗到85分...... 不说了,就当复习一边堆优化dijkstar了.... 1 #in 阅读全文
posted @ 2019-08-09 19:02 Wwb_star 阅读(149) 评论(0) 推荐(1)
摘要:60分 n^2的暴力很显然嘛........ 枚举每个固定点,用个指针向区间两边扫 1 #include<cstdio> 2 #include<iostream> 3 #include<cmath> 4 #include<algorithm> 5 #include<cstring> 6 #inclu 阅读全文
posted @ 2019-08-09 18:51 Wwb_star 阅读(170) 评论(0) 推荐(0)
摘要:8.9 rank 7/56 T1看了会儿发现n^3暴力很水,稍一优化就成n^2了,所以半个小时就码出来还顺便对拍, 然后看T2,很明显的tarjan+拓扑,我当时觉得DFS好打就没打拓扑,T了,白扔40分 自己造了个样例,手模一会,然后也懒得打对拍了QAQ 发现刚过了不到两个小时,上了趟厕所(听某n 阅读全文
posted @ 2019-08-09 16:45 Wwb_star 阅读(189) 评论(2) 推荐(1)
摘要:void work() { int t=log(n)/log(2); for(int j=1;j<=t;++j) { for(int i=1;i<=(n+1-(1<<j));++i) { f[j][i]=max(f[j-1][i],f[j-1][i+(1<<(j-1))]); f_min... 阅读全文
posted @ 2019-08-06 21:38 Wwb_star 阅读(196) 评论(0) 推荐(0)
摘要:如此显然的线段树,我又瞎了眼了 事实上跟以前的奇袭很像....... 只要满足公式maxn-minn(权值)==r-l即可 所以可以考虑建两颗树,一棵节点维护位置,一棵权值, 每次从一棵树树上查询信息,如果满足公式就停止,不然两颗树不断扩展区间 当然也可以用ST啦(查询O(1)优于线段树) 1 #i 阅读全文
posted @ 2019-08-06 21:37 Wwb_star 阅读(211) 评论(0) 推荐(0)
摘要:这么简单的题才骗到40分QAQ 40分:很简单,只要n*m扫一遍就好 80分:k^2复杂度 我们发现80分k是很小的,同时我们发现操作的顺序与结果无关, 所以我们先预处理出整个矩阵的sum和 然后对于每一个操作,例如把该行变成10倍,相当于增加九倍,所以我们k次加减.... 但是例如我们第一步将第一 阅读全文
posted @ 2019-08-05 18:58 Wwb_star 阅读(213) 评论(0) 推荐(0)
摘要:想了想自己留的坑有点多了,写个计划提醒自己 一些没做出来的题 csp-s模拟测试54 z csp-s模拟测试b层加餐 string 平衡树+并查集 因为某杰的**安排,没时间改了csp-s模拟测试47 字符消除2 KMPcsp-s模拟测试45 weight 树链剖分,最小生成树csp-s模拟测试43 阅读全文
posted @ 2019-08-04 21:40 Wwb_star 阅读(370) 评论(0) 推荐(1)
摘要:8.3 最近好久没有写过反思了,主要因为天天忙着刷题改题 但是这次考得不是很好,rank30/64(又来了石家庄一中的大佬QAQ) 其实这次题还算简单,第一题耗费时间过长,答题一定要分配好时间,觉得这题差不多对了 就别一心想着确保它正确,因为这丢的分可能更多!!!! 然后T1的对拍一直打不好,浪费好 阅读全文
posted @ 2019-08-04 21:16 Wwb_star 阅读(135) 评论(0) 推荐(0)
摘要:很好的题,值得细细说,(果然又是个假期望)....... 首先我们提取信息,显然这是个三维偏序问题 用简单的DP式子表示需要满足 f[i]=max(f[1--j]+1)(v[j]<v[i],h[j]<h[i],j<i) 那么我们发现这样可以愉快的CDQ,方案数用g数组表示, 在树状数组中注意维护就好 阅读全文
posted @ 2019-08-04 21:03 Wwb_star 阅读(427) 评论(0) 推荐(0)
摘要:bool DFS(int x,int color,int r,int l,int fa) { col[x]=color; for(int i=0;ir||to<l)continue; if(col[to]==0) { if(!DFS(to,3-color,r,l,x)) return 0; ... 阅读全文
posted @ 2019-08-04 20:38 Wwb_star 阅读(232) 评论(0) 推荐(0)
摘要:好题 k=1做法: 直接倒着找,满足贪心性质,预处理出每个平方数就行..... 1 #include<iostream> 2 #include<cstdio> 3 #include<string> 4 #include<algorithm> 5 #include<cmath> 6 #include< 阅读全文
posted @ 2019-08-04 20:37 Wwb_star 阅读(198) 评论(0) 推荐(0)
摘要:才知道vector在插入值后是可以直接修改的... 那就很简单了 用vector的lowerbound这样的二分操作,提前储存每个颜色的位置 发现交换相对位置不变 关于vector的lowerbound的讲解(感谢QAQ) 还有主席树做法(我怎么没想到.....) ps:超时了,只是存板子(它竟然卡 阅读全文
posted @ 2019-08-04 20:32 Wwb_star 阅读(207) 评论(0) 推荐(0)
摘要:就是找规律,发现每个父亲和孩子的差值都是距儿子最大的fibonacc 也是可证的 f[i]表示当前月的兔子总数 f[i]=f[i-1]+f[i-2](f[i-2]是新生的,f[i-1]是旧有的) 然后又学了一下set的用法 1 #include<iostream> 2 #include<cstdio 阅读全文
posted @ 2019-08-04 20:27 Wwb_star 阅读(235) 评论(0) 推荐(0)
摘要:很神的题,感谢lnc大佬的指点。 先设1-LL[i]统称左区间,RR[i]-m为右区间 用L[i]统计从1-i列,出现的左区间端点的前缀和,R[i]是右区间.... f[i][j]中j表示当前在第i列,右区间的左端点(RR[i])到i存在的1的个数,总体表示当前方案数。 所以,我们分几种情况 两种是 阅读全文
posted @ 2019-08-02 13:56 Wwb_star 阅读(175) 评论(0) 推荐(0)
摘要:一道trie树的好题 首先我们发现后手对x的操作就是将x左移一位,溢出位在末尾补全 那么我们也可以理解为现将初值进行该操作,再将前i个元素异或和进行操作,与上等同。 那么我们等于转化了问题: 我们求出m+1个数(前i个元素进行操作,再异或后面元素),并从1-2^n中找到一个数使最小值最大 (当然数已 阅读全文
posted @ 2019-08-02 12:01 Wwb_star 阅读(176) 评论(0) 推荐(0)
摘要:因为题中只有a-z,所以区间中大量字母都是重复的,我们不妨利用桶的性质。 开一棵树,里面维护当前区间内的相同元素,若区间内元素不同,则为零 每次升序操作就先查询一遍区间,用桶将每个区间的a-z元素统计出, 然后按照顺序(L-L+tong[1]-1)..........进行区间修改, 注意要有向上修改 阅读全文
posted @ 2019-08-02 11:49 Wwb_star 阅读(205) 评论(0) 推荐(0)