zoukankan      html  css  js  c++  java
  • GDKOI总结

    day1
    先看A,是我经常失手的构造题。
    显然有50分做法。
    但是100分想了好久都没有思路。
    尝试dfs树,dp,贪心,数学归纳均失败。
    写了个随机化。
    再看B,发现是个简单题。
    但是忘记了二分后结果的本质。
    所以跳过去了。
    再看C,显然有30分暴力。
    想了一会想到李超树,分治,但是思路并不是很清楚。
    再看D
    什么?计数题?
    根据以往的经验,GDOI系列比赛放在最后一题的的计数题都不太可做。
    只能写暴力。
    显然也有30分暴力。
    回头想A想了很久还是不会。
    最后无奈把随机化和一个猜想合并取最优解。
    然而最后发现A的随机化时间复杂度是正确的。。。。。
    本来我至少会100+100+30(+70)+30,但是因为自己的考试策略错误导致没时间写。。。。。。
    总结:
    写随机化后没有仔细思考算法正确性,导致浪费了非常多时间。
    D题命中了我的知识盲点,认了。。。。。
    题解:
    A:标算做法:从1~n考虑数,每次把(i)贪心放在令答案最小的集合中。
    我的做法:每次为每个节点随机二分图的一边,然后计算是否符合要求。
    可以证明期望随机2次就能得到答案。
    B:考虑建立笛卡尔树/使用单调栈。
    找到每个位置第一个左边大于它的(l_i),第一个右边大于它的(r_i)
    显然我们以这个点为中心的合法区间,开头必须在((l_i,i]),结尾必须在([i,r_i))中。
    一个点的贡献是一个分段函数。
    它由三条斜率分别为(1,0,-1)的直线组成。
    考虑二分。显然一个点对答案的贡献可以在(O(1))的时间内计算。
    这样子我们二分出了(l)处的值(v)
    二分完以后,我们就能得知(l)处的值的选择方案。
    考虑我们每次取出最小的,然后把这个权值多选择一个再插入堆中。
    时间复杂度(O(nlog_2l+(r-l+1)log_2n))
    C:(O(n^2))暴力:考虑manacher,把串交替插入(#)后,求出以每个元素为中点的串延伸长度的最大值。
    记二元组((i,p))表示中点为(i)的串,最多往左/右延伸(p)
    询问时枚举每个二元组计算答案。
    考虑二分。
    我们要计算(pgeq md)的二元组是否符合要求。
    只需判定一个区间([l+md,r-md])的二元组的最小(p)值是否(geq md)即可。
    day2:
    看A,什么?期望?
    搞了我两个小时,心态爆炸。
    再看B,显然有40分暴力。
    想了一会只会40分。
    然后突然发现在线段树上把区间(min(a_i,i) o i-1)加1后就变成了简单的线段树上二分出第一个0的位置。
    天啊!这种SB题居然想这么久!
    写完拍过后考试只剩1h了。
    接下来写了C的特殊性质。
    看出C的正解没时间写了。
    看榜,发现真的凉了,A,B都写挂。。。。。
    day3:
    考前有一股预感觉得今天的题目有点难。
    结果确实有点难。
    看A,发现是个简单题。
    然而一开始走偏了。
    一直想用LCT维护,发现不对后想大于转等于容斥。
    白写了3k代码
    到想到正解(大于转等于容斥+点减边)以后已经1h+了。
    写到2h还是没有调出来。。。。。
    写了B,C暴力,D也想到了40分暴力。
    回头写A的(O(n^2*5)),发现原来的思路假了。
    发现自己的做法假了,推了公式结果没推出来。
    改到最后都没改完。。。。。。
    实际上,今天的题目非常难。
    应该死磕一道题的。。。。。

  • 相关阅读:
    Spring优势
    Spring中的设计模式
    Spring MVC体系结构
    《Spring3.0就这么简单》第1章快速入门
    InvocationHandler
    JdkDynamicAopProxy源码
    Proxy代理(AOP实现原理)
    Spring AOP 实现原理
    BeanFactory和ApplicationContext的作用和区别
    背景图片相关设置
  • 原文地址:https://www.cnblogs.com/ctmlpfs/p/14344219.html
Copyright © 2011-2022 走看看