随笔分类 -  **模拟8.01-8.12(暑假集训)

摘要:只看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 阅读(210) 评论(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 阅读(208) 评论(0) 推荐(0)
摘要:考试只好随便骗骗分过去啦啦啦..... 正解是玄学线段树: 以每个操作为叶子节点,我们定义几个变量ce表示层数,h表示高度,add表示所减的层数 那么问题转化为单点修改的问题输出直接是根节点答案 但是我们发现合并区间很毒瘤 我们分两种情况: 设L为左儿子,R为右儿子。 1.T[L].ce<T[R]. 阅读全文
posted @ 2019-08-10 17:32 Wwb_star 阅读(226) 评论(0) 推荐(0)
摘要:很显然的tarjan嘛......拓扑也很容易想到 我是不会说我因为懒把拓扑改成DFS结果扔了40分然后就是纯板子了 因为我们一条路径的点如果不是一个一个炸,同时炸两个,他们一定会相互到达.... 找最长链即可。 1 #include<iostream> 2 #include<cstdio> 3 # 阅读全文
posted @ 2019-08-09 21:32 Wwb_star 阅读(201) 评论(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 阅读(240) 评论(0) 推荐(0)
摘要:考试时没审清题,内存超限....... 事实上这是个三分题, 因为我们先假设一个最高点和最高点的高度,随着最高点高度的增加, 其他点的贡献为abs(a[j]-(h[i]-abs(i-j)))(j为最高点) 所以点的贡献的和是一个单峰函数(下凹的) 那么我们三分即可 1 #include<cstdio 阅读全文
posted @ 2019-08-09 21:10 Wwb_star 阅读(142) 评论(0) 推荐(0)
摘要:这题一定是个模拟题...... 怎么可能.......考场被完美骗到 其实这题是最短路问题啦啦啦啦.......... 对于每个墙与墙,我们因为联通的门的存在,所以我们直接将与它相邻的格子连在一起喽 当然暴搜也能骗到85分...... 不说了,就当复习一边堆优化dijkstar了.... 1 #in 阅读全文
posted @ 2019-08-09 19:02 Wwb_star 阅读(147) 评论(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 阅读(168) 评论(0) 推荐(0)
摘要:如此显然的线段树,我又瞎了眼了 事实上跟以前的奇袭很像....... 只要满足公式maxn-minn(权值)==r-l即可 所以可以考虑建两颗树,一棵节点维护位置,一棵权值, 每次从一棵树树上查询信息,如果满足公式就停止,不然两颗树不断扩展区间 当然也可以用ST啦(查询O(1)优于线段树) 1 #i 阅读全文
posted @ 2019-08-06 21:37 Wwb_star 阅读(210) 评论(0) 推荐(0)
摘要:这么简单的题才骗到40分QAQ 40分:很简单,只要n*m扫一遍就好 80分:k^2复杂度 我们发现80分k是很小的,同时我们发现操作的顺序与结果无关, 所以我们先预处理出整个矩阵的sum和 然后对于每一个操作,例如把该行变成10倍,相当于增加九倍,所以我们k次加减.... 但是例如我们第一步将第一 阅读全文
posted @ 2019-08-05 18:58 Wwb_star 阅读(212) 评论(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 阅读(195) 评论(0) 推荐(0)
摘要:才知道vector在插入值后是可以直接修改的... 那就很简单了 用vector的lowerbound这样的二分操作,提前储存每个颜色的位置 发现交换相对位置不变 关于vector的lowerbound的讲解(感谢QAQ) 还有主席树做法(我怎么没想到.....) ps:超时了,只是存板子(它竟然卡 阅读全文
posted @ 2019-08-04 20:32 Wwb_star 阅读(204) 评论(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 阅读(229) 评论(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 阅读(173) 评论(0) 推荐(0)
摘要:一道trie树的好题 首先我们发现后手对x的操作就是将x左移一位,溢出位在末尾补全 那么我们也可以理解为现将初值进行该操作,再将前i个元素异或和进行操作,与上等同。 那么我们等于转化了问题: 我们求出m+1个数(前i个元素进行操作,再异或后面元素),并从1-2^n中找到一个数使最小值最大 (当然数已 阅读全文
posted @ 2019-08-02 12:01 Wwb_star 阅读(171) 评论(0) 推荐(0)
摘要:因为题中只有a-z,所以区间中大量字母都是重复的,我们不妨利用桶的性质。 开一棵树,里面维护当前区间内的相同元素,若区间内元素不同,则为零 每次升序操作就先查询一遍区间,用桶将每个区间的a-z元素统计出, 然后按照顺序(L-L+tong[1]-1)..........进行区间修改, 注意要有向上修改 阅读全文
posted @ 2019-08-02 11:49 Wwb_star 阅读(204) 评论(0) 推荐(0)