09 2022 档案
摘要:题面非常的良心,但依旧爆零 T1.莓良心 题目背景:我打扮成你喜欢的样子来看你了,广,不,da,darling... 我看到这个题想到了中位数的结论,甚至写了三分+对顶堆+树状数组,但是很假,对拍一组就挂了。这貌似是T1……赛后发现正解是贪心。首先取出和,如果$minr>ma
阅读全文
摘要:全nm构造题,我爆零了 T1.排序 我读错题了……以为这是个普通的冒泡排序。因为需要用到所有的逆序对,所以每一次操作只能减少一个逆序对。考虑从小到大归位,我们按从大到小的顺序交换,这样保证了每一次交换都是与交换,相邻的两个交换,显然不会影响剩下的逆序对数,我们不断重复此操作,直至把$
阅读全文
摘要:四道序列题。 T1.最长上升子序列 这题类似于找规律或是推性质,发现在给出的序列的空隙插数,如果插入的数比后面的大,显然字典序不优;如果比它小,那么构成上升序列,而且只有当它小于前面的数时,这个递增才不会传递;据此类推,每一个空隙只能放一个。那么最后还有剩下的数,因为没有空隙了,所以直接在末尾倒序输
阅读全文
摘要:全是的题……为什么不做本民族的题(恼) T1.选举 原以为是一道神奇贪心,所以写了的转移,但是发现,这……都不用跑都知道假了。好吧,是一道dp——我们把n个州分为A、B、C(分别表示只赢得选票、又赢得选举、啥也没得到)。定义为前个州,得
阅读全文
摘要:####今天的比赛或许可以改名为卢本伟广场。 T1.开挂 “张牌你能秒我?你用张牌把我秒掉,我当场,把这个电脑屏幕吃掉。” 由于之前张牌的教训,你决定通过~~开挂~~不给对方炸弹。 显然所有相同的牌都要先搞成一个阶梯状的东西,正解采用了断层栈的做法。首先有一个贪心
阅读全文
摘要:构建 void build() { for (int i = 1, top = 0, pos = 0; i <= n; ++i) { top = pos;//pos为当前栈顶,top为操作前栈顶 while (pos && p[s[pos]] > p[i]) pos--;//单调栈 if (pos)
阅读全文
摘要:T1.回文 传纸条——坐标dp。对于学过坐标dp的人来说应该是签到题吧。把回文抽象成两个人分别从出发,走路径相同的方案数。直接定义为第一个人在(i, j),第二个人在(s, t),显然转移要保证,即步数相等
阅读全文
摘要:T1.欧几里得的噩梦 第一眼,这不是线性基板子题吗。但是值域是,但是我们发现它的一个神奇性质,一个数的二进制中只有两个一。我们定义高位为x,低位为y。如果线性基中空,直接插入,令;如果非空,x这一位被消掉,令,如果x这时小于y就交换一下,
阅读全文
摘要:T1.序列问题 盯了T1二十分钟,发现只会的暴力,于是溜了。最后一小时想到了的dp,拿到了(骗到)50分,而且因为我的dp定义比较原始,所以没有办法优化。 首先定义,表示这个数能产生贡献当且仅当前面删除了个数。即:定义$dp[i][
阅读全文
摘要:T1.玩水 一道非常简单的结论题(但是赛时最后半个小时才想出来)。首先考虑两个人的情况,显然只要有一个岔路就可以了。如图: 像这样的c点,我们把它称为一个岔路点。 以此类推,三个人只需要两个岔路点就行。但是分为两种情况: 1.在一个岔路点的严格左上角方向有一个岔路点(因为
阅读全文
摘要:const int inf = 2e9; const double alpha = 0.75; bool o;//当前维度 struct point { int p[3]; friend bool operator <(point A, point B) { return A.p[o] < B.p[
阅读全文