一个被不点名批评的垃圾骗分暴力选手被普及难度的省选信心(??)模拟赛艹爆的题解

如果真是这种实力去什么省选啊,浪费钱浪费名额浪费时间,不如退役充当编程爱好者打网站,回去搞课内弃理从文刷刷计算题好歹成绩还好看一点

精神状态很好,也没有任何不适,几乎在正常考试都保持了挺高的精神集中,这样都垫底真是f**k

---------考场上的废柴发挥-----------

昨晚见到OZY,得知输出样例有分不会爆零太好了心情极佳,然而题怎么*******

(自从那天开始满脑子都是暴力骗分的yzh)

早上先看了半个小时题目,感觉t1就是签到找规律,t2一眼暴力+KM40分美滋滋,正解怕是在trie上乱搞吧,t3暴力又有40贼舒服,感觉正解应该是离线贪心,t4一看不会,感觉20%可以骗骗,哇这次岂不是接近200?莫名开心

t1 就是一个tyb在(0,0)点,要跳到(x,0)点,第k次跳能跳k格,问最小跳的步数

t2 就是两个字符串集合,求两两匹配的公共前缀和最大

t3 又是tyb在1点,然后往右跳到n,中间路途有陷阱伤害为a,然后有B个询问,问假如tyb一次能跳d,能够承受s的伤害,能不能跳到终点

t4 就是找树的直径,然后求最长连续的点的直径波动不超过M

一个爆搜打表,结果还调了一下,爆搜还写错了一次,然后换宽搜又搞,最后搞出来了找规律,OK 稳如老狗AC 此时9:20

结果这就是我考场上打对的唯一一个暴力。。

随便讲讲规律,把数列分段,第i段i个元素,假如当前n是第x段里第y个元素

如果x%2==1 && y%2==1 ans=x
如果x%2==1 && y%2==0 ans=x+2
如果x%2==0 && y%2==1 ans=x+1
如果x%2==0 && y%2==0 ans=x

虽然不是很满意速度,但是写出来也还是很开心的,毕竟自从NOIP2017完挂以后赌誓以后绝不能错找规律题

然后就开始开心打暴力

10:00就写完t2,t3了 怎么大佬们都在刚t4???
还是很稳,然后OZY过来水表了一下,突然想起给了大样例,测一下发现KM挂了??静态查错大半个小时,woc哪里挂了,蒙蔽虚的要死

然后楠楠就说他已经切了t2,肉老师说能拿330,我真的????心态都没了,这次题这么水????

冷静下来想t2,发现woc贼jj水,赶紧码,结果那群bt 11:30就交了,一个个200+....

心态炸裂,直接上天

最终100+10+10+0=120 中间那20还是直接输出样例

整个人都不好了。

OZY:你搞什么啊

ORZ hz&&ljw t3暴力+读优70 lxj整体二分A t3

-------------考后-----------------

我的确不是很信我KM模版居然写挂了。。

然后真的没写错,是暴力求前缀错了!!!????我   真说不出话

然后T3暴力st表里的Bin[j-1]写成Bin[j/2]什么鬼 wc

心态没了。下午就把t2t3切了,mdzz t2t3正解不跟我想得一样??!写你个棒棒锤暴力,暴力就爆十啦SB

然后晚上认真刚t4,wc,看错题了?两个问?树的直径?

菜鸡yzh

#include<cstdio>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cmath>

#define f(i) bl[i+100]
using namespace std;

int n,bl[210],ans;bool bk;
void dfs(int x,int k)
{
    if(x>35||x<-35)return ;
    if(k<f(x))
    {
        f(x)=k;
    }
    dfs(x+k+1,k+1);
    dfs(x-k-1,k+1);
}
int main()
{
    memset(bl,63,sizeof(bl));
    bk=false;dfs(0,0);
    for(int n=1;n<=28;n++)
    {
        
        printf("%d\n",f(n));
    }
    return 0;
}
t1暴力找规律
#include<cstdio>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cmath>
using namespace std;
typedef long long LL;
LL d[210000];
int main()
{
    freopen("a.in","r",stdin);
    freopen("a.out","w",stdout);
    
    d[0]=0;for(int i=1;i<=200000;i++)d[i]=d[i-1]+i;
    
    int T;
    scanf("%d",&T);
    while(T--)
    {
        LL n;
        scanf("%lld",&n);
        if(n<0)n=(0LL-n);
        int l=0,r=200000,bel=0;
        while(l<=r)
        {
            int mid=(l+r)/2;
            if(n<=d[mid])
            {
                r=mid-1;
                bel=mid;
            }
            else l=mid+1;
        }
        LL k=n-d[bel-1];
        
        if(bel%2==1)
        {
            if(k%2==1)printf("%d\n",bel);
            else printf("%d\n",bel+2);
        }
        else
        {
            if(k%2==1)printf("%d\n",bel+1);
            else printf("%d\n",bel);
        }
    }
    return 0;
}
找规律AC code

 其他的代码因为关机而没保存所以没了。五味杂陈