GDKOI总结

Day1:
先看了第一题,其实第一题的话就是一个简单的宽搜,接着我就跳到了下一题。
第二题,看完题之后觉得题目就是在问最长的可能的括号序。然后我就想到,如果要加0的话一定加在最前面。
如果要加1的话一定加在最后面。
接着其实check合不合法就是求前缀和中有没有小于0的。
看到n只有200000,我就直接写了一个nlog的做法,就是在前缀和相同的里面二分,然后rmq求有没有<0的。
然后我想了一个问题,这个可以用vector,但是用了vector虽然会好写很多,但是多了一个log。
那我就改了一下,用pre[i][j]表示i这个位置往前2^j个和他相同前缀和的位置是什么就好了。
其实这道题是改过题面的,原题面不是括号序,,但是我就把它看成括号序了。
第三题,看完题之后好像就只会写暴力和p=1,写完暴力之后,就特判一下p=1,然后p=2的有20分。
我就想可不可以打个表发现一下规律。
打到q=11还是没有什么规律,然后我尝试着按照环的大小去打表,发现大小为1的环方案数为q。
大小为2的环的个数是一个二次的多项式,然后3就没有什么规律了。
其实q=3是满足一个递推式f[n]=f[n-1]+f[n-2],但是我只打了q是奇数的表,所以就没有发现这个规律。
第四题,比赛的时候看错题了,以为可以随便打乱顺序,其实要从两边取。
打乱顺序的话就写了一个贪心。不然的话可以写出一个简单的n^3的dp
其实这个dp加一点优化就可以a了,只要f[i][j]=f[i+1][j]或f[i][j-1]就break就剪掉了好多状态。
Day2:
今天的第一题相对于昨天的第一题好像难了很多,我的想法是固定底边,然后计算。
计算的话我化出了一个只和奇偶有关的式子。这个又是一个等差数列然后就写完了。
第二题,开始并没有什么思路,还把点画在了二维平面上,但是好像有没什么。
转化一下题目意思,就是让我们求一个不同的数最多有多少。
这个就只是离散化之后二分图匹配,就直接写了一个匈牙利+贪心匹配+答案上界优化。发现跑的飞快。
然后我就对拍完之后就尝试着卡自己,但是调了很多参数之后,我发现自己的程序跑的挺快。
第三题,最开始以为是求权值相同的只能算一次。但是其实就是求互质的数的乘积。
这个其实比赛的时候可以O(n)求phi,然后其实那个就是phi*i的前缀和。
这个其实挺容易的线性筛或者log的筛法都可以。
这个部分分其实还是挺容易的。
第四题,好像就只会n,m,q<=100的。然后n=1的好想要一个数据结构来维护。
想了想正解,好像只要把门当做点,连一下边,求一下路的长度就好了。
其实比赛写暴力的话,要看看自己的暴力可不可以优化,有的话要尽量优化。
其实比赛的分差非常小,写对会的题之余要多写暴力,暴力分其实很重要。
如果简单题写挂的话,暴力分会让你没有挂这么惨。
还有就是不要怕写不完,前面的题目对拍之后,其实可以不用太担心,有一些难写的部分分还是可以写。
快到比赛结束写不完就要放弃,写暴力。

你可能感兴趣的:(题解和总结)