主仆见证了 Hobo 的离别 题解】的更多相关文章

前言: 题面挺神仙.反正我考试的时候看了40分钟也没看懂. 后来改题感觉自己写的挺假,没想到加个\(k==1\)的特判竟然就A了?无语力. 解析: 看懂题以后就好说了.首先这显然是一个树形结构.我们考虑把"交"的操作放到一棵树上,把"并"的操作放到一棵树上. 考虑建边.比如将\((1,2,3)\)并成\((4)\),那么就在并树上,将\(1,2,3\)的父亲设置成\(4\). 然后,对于每个询问\((x,y)\),如果在交树上,\(x\)是\(y\)的祖先,或在并树…
题目比较神仙,注意是题目神仙 贪婪暗示贪心,堆积暗示堆优化$\%\%\%\%\%\%\%$ 两个乱搞$+$一个堆优化$dp$ 嚎叫响彻在贪婪的机房 题解 对于一个序列来说只要他们差的$gcd$不为$1$就可以构成等差数列 例如 $2$    $4$     $16$ $2$与$4$差$2$ $4$与$16$差$12$ $gcd(2,12)!=1$故构成等差序列 那么我们维护公差,然后每次的差和当前公差比较,若$gcd==1$则等差数列从这里断开,否则将公差置成$gcd$ 举个例子 $2$    …
T1 嚎叫响彻在贪婪的厂房 以前做过一个等比数列的题「序列」,这个类似 是等差数列且公差不为1的条件就是各项差的绝对值的$gcd!=1$,每次拿出序列前两个数,求出差值,插入到set里,每次向后扩展,如果该数出现过或与前面的公差的$gcd==1$,更新答案和序列起点,进行下一轮;否则插入到$set$中,记得清空 #include<iostream> #include<cstdio> #include<algorithm> #include<set> #inc…
题面:https://www.cnblogs.com/Juve/articles/11376806.html A. 嚎叫响彻在贪婪的厂房: 是时候学习一下map和set的用法了...... 贪心:区间[L,R]合法的条件:所有相邻两数差的绝对值的gcd不等于1,且没有重复的元素 gcd比较好满足,判重用map或set都可以 #include<iostream> #include<cstdio> #include<cstring> #include<algorith…
考试过程: 照例开题,然后觉得三道题都挺难,比昨天难多了(flag×1),T1 dp?T2 数据结构? T3 dp?事实证明我是sb然后决定先搞T2,但是,woc,这题在说什么啊,我怎么看不懂题啊,连样例都手模不出来,完了凉了,然后又看了一个半小时的题,还是没看懂心态爆炸,然后匆匆打了T1T3暴力,还自我感觉良好,觉得这么难的题,拿个150pts左右应该rank10没啥问题叭,然后出分,T1T2A了一片,然后我还暴力挂分,然后在第二机房成功倒数. 反思: 还是思考的太少啊,对题目的难度评估出现很…
为啥这一套题目背景感到很熟悉. T1  嚎叫响彻在贪婪的厂房 考试一个小时没调出来,自闭了.......... 正解很好想,最后实在打不出来了只好暴力骗分了... 联想到以前做的题:序列(涉及质因数分解) 对于此题需要注意 1.等差数列中不能有相同的数,所以可以用set判断 2.同时对于等差数列我们可以用gcd判断, 设当前数为a[i],定义变量gcdd,那么就将其与a[i-1]的差的绝对值与gcdd取gcd 因为当前的两个数的gcd不见得是序列真正的gcd,但他只会比真正的gcd要大,所以我们…
T1 最大或 $T1$因为没有开$1ll$右移给炸掉了,调了一年不知道为啥,最后实在不懂了 换成$pow$就过掉了,但是考场上这题耽误了太多时间,后面的题也就没办法好好打了.... 以后一定要注意右移左移要加$1ll$ 思路的话我的做法比较麻烦,就是开一个指针$pos$每次跳到下一个数是$0$的$1$的下一个(也就是指向那个$0$) 然后判断左边界或上从$pos$那一位开始后面都是$1$的那个数,如果不超过右边界,就给左边界或上那个数 最后再和右边界或便可得到答案,复杂度没分析,$log$级别的…
100+60+95+30; T4 一个变量打错挂了40.. T1 最大或 考虑从高到低枚举的二进制位,然后和的对应二进制位进行比较.如果两 者相同,那么不论怎么选择,,答案在这个位置上的值一定和在这个位置上的 值相同:否则,一定有在这个位置上是1,而在这个位置上是0.那么,我们只 需要选择 = ,而 = (...011...1)2即可,其中前面省略号的部分表示,二进 制表示相同的部分.以此进行答案计算即可. 考试时没有严谨的证明,感觉固定 r 好像是对的,试了好几组数据全部调整了出来,然后就按照…
前言 感觉最近太飘了,这次考试是挺好的一次打击(好像也不算是). 犯了一个智障错误(双向边一倍数组 100pts->30pts)别的就.. T1 最大或 解题思路 一开始我以为是一个找规律,然而在打表找规律 20min 后无果.. 然后开始考虑二进制位上的东西,画了一颗 Tire 树,发现从高位到低位相同的位我们无论如何或贡献都是一样的.. 直到第一个不同的位开始都是可以通过 \(or\) 操作成为 1 的. 然后扩展一下,我试了试左右短点在 \([1000,1000]\) 区间内的情况把询问改…
\(n=40\)考虑\(meet \;in \;the \;middle\) 某个元素有关的量只有一个时考虑转化为树上问题 对暴力有自信,相信数据有梯度 没了 UPD:写了个略说人话的. T1 最大或 选两个数,其中一个肯定选\(r\).另一个在不卡上界后二进制位全选\(1\). \(code:\) T1 #include<bits/stdc++.h> #define int long long using namespace std; namespace IO{ typedef long l…