三个点,做三道题。
预估:100+100+随机
实际:100+80+30
虽然我最后一个点好像是罚坐。。知道写的是假的,但是不会写正解。。
先拿到题,看了一眼T1,好像就是一个斐波那契,然后在草纸上推推就出来了,看到数据范围顺手define int long long,就过了。
然后看T2,一开始没啥思路,看了一会就去看T3了。
T3看到最大值最小,就第一反应想到了二分,于是就写了个二分最小值。样例过了,一开始我还挺高兴,以为切了,就没有管。
回去看T2,哦好像看题目中的描述,跟逆序对有点关系。在草纸上一顿笔画,也算是看出来第一次交换完,只可能存在需要划分的段的长度都小于等于2。这时就想到了某道题(具体忘了,但好像是ybt上面的),每次反过来排序,就是相当于减少了一个逆序对。所以第一次交换完,直接看有几个逆序对就可以了。
花了一会写了个树状数组求逆序对,样例过了。这时估计也就过去了一个点,剩下的两个点不知道干啥,就去自己写几组样例去对拍T2。
用另一个程序写了个n^2的T2和自己的程序对拍。但没想到,我写n^2的时间比我写nlogn的时间还要长。。
写完了两个程序拍了几组自己造的样例,也过了,就觉得也是切了。
回去T3自己又造了两组数据,但是过不去。这时我就想到,好像T3没有想象中的那么简单。好像答案不具有单调性,或者说不能直接二分。想了一段时间也没想出来怎么做,最后从后往前又二分了一遍,也算是偏分了。最后罚坐到考试结束。
处分后,发现T2没开long long挂了20分。。没想到那个数据范围也会暴int /(ㄒoㄒ)/~~
T3样里好像有点水,假的二分也能骗过去20。正解好像是DP+二分+单调队列。只能说自己的实力不够吧,这种难题看到了还是没有思路。
总结:以后多注意long long,还有不要有固定思维,拿到题多考虑一下有没有什么更好的做法。