2020.02.07【NOIP提高组】模拟A 组 总结

啊啊啊,感觉又双惨了。。。

估分:\(100 + 0 + 50 = 150\)
考场:\(100 + 0 + 0 = 100\)

\(T1\)

看上去很像矩乘,所以推了推,没推出来。
然后发现它分档分的很有意思。
35分暴力可以搞定。
然后还有一档\(m\)特地小了很多???
哇,好像可以找循环节诶!!!70分到手。
最后一档才叫古怪,稀里糊涂地搞了好多限制。
然后开始推。。。\(b%2a==0\)。。。什么鬼。。。
另一条\(4*a*c=b^2-2*b\)才叫奇怪。。。咦等等,好像很像二次函数中的顶点式里的东西啊。
然后推推推,发现了:\(x[n]=a*(x[n-1]+b/2a)^2-b/2a\)
卡住了。。。然后又突然发现:\(x[n]+b/2a=a*(x[n-1]+b/2a)^2\),这样可以将\(x\)都看作\(x+b/2a\)!!!
然后得到改后的:\(k=n-1\)\(x[n]=a^k*x0^n\),然后搞定了!

\(T2\)

数据范围很小,感觉可以用搜索来弄,但是不知道怎样正确判断,怎样正确搜索。
然后就先跳过(弃)了。
其实\(T2\)有个思路以前做过。
就是判断一个点时候在一个多边形内。
只需要它任意向一个方向射线,判断一下交点个数的奇偶性即可。
这题也是这样子的。我们可以设\(dis[i][j][s]\)表示到达了\((i,j)\),且特殊点向上射线交点奇偶性的状态为\(s\)时的最小步数。
然后用广搜更新状态即可。

\(T3\)

这一道题考试的时候看错题意了,以为那个传送石只能够用一次。。。
然后对拍的时候怎样都不对。。。然后就\(0\)了。。。
如果可以用多次的话,那么这题应该是可以用\(DP\)来做的。
正解是二分+\(DP\)
**求最值啊!!!那应该要想到二分的啊!!!
二分答案,然后判断是否合法。而我们可以将每个点的值转换成一个值\(val[i]=a[i]-mid*b[i]\)
然后设\(f[i]\)表示到\(i\)这个点时的上述值的最大值。
转移方程显然:\(f[i]=f[j]+val[k]\)\(k\)表示\([j+1,i]\)这段区域中\(c\)最大且靠后的那个点。
这样做可以是\(O(n^2logn)\)的,但会\(TLE\),所以我们要想办法优化一下。
我们可以用线段树来储存\(f\)这个数,然后对于\(k\)的话做单调队列,我们可以得到当前到\(i\)为止,每个\(j\)对应的\(k\)是什么。
这样我们可以对此弄到一个线段树里面去,然后取前面中的\(max\)即可。

总结

这一次,感觉前面的时间都利用的很好。嗯嗯表扬一下先~
但是,到了后面就开始不行了。。。
打码的时候出现的很多个明显错误。。。线段树都打错了一个地方。。。
时间的利用很算可以,就是最好都三题打完,这是优秀的。
强调一下,观察数据范围真的很重要!!!
还有不要因为麻烦而导致时间被拖延,然后没时间。。。

posted @ 2020-02-07 22:54  jz929  阅读(140)  评论(0编辑  收藏  举报