昨天老师就在群里发了今天的练习赛网址,并附上一句话“这次练习赛有难度”,着实让我忐忑不安。又是新的一天,虽然日复一日,每天都在这间机房里度过,感觉也有种在工作的感觉,每天都写日记的日子已经过去近20天了,上次坚持这么久写日记又是什么时候了呢~
今天早上的第一道题点击打开链接,牛看后脑勺??姑且这么叫把,牛能看到比自己矮的牛的脑袋,如果比自己高就看不到了,我一开始没用单调栈就暴力搜索以为没问题的,
for(int i=1;i<=n-1;i++)//TLE
{
for(int j=i+1;j<=n;j++)
{
if(c[j]<=c[i])cnt++;
else break;
}
}
果然一个TLE就是飞过来砸我头上,然后才说服自己用单调队列
for(int i=1;i<=n;i++)
{
scanf("%l64d",&a);//由于数据比较大用l64d
while(rear>=front&&c[rear]<=a)rear--;
c[++rear]=a;
cnt+=rear;
}
下午做的训练赛确实难得可以啊,老师还加长了半小时,可见其难度,做的第一道题是F点击打开链接,看到这道题想到以前做过类似的,想着能不能找到递推的公式打个表,枚举了十来个后发现了规律n为奇数的时候数量等于n-1的,n为偶数的时候数量等于n-2加上n/2的数量。
根据数据打标搜索就可。
第二道题点击打开链接,就是一个求最大生成树,这个直接套模板,根本不用改,闭上眼睛上交~
第三题点击打开链接,直接坑到我了,我以为是一道清真的弗洛伊德算法题,样例数据都过了还是让我WA,百思不得其解,结束后,我同桌告诉我有个地方,坑死我了,在输入的时候是要做处理的
for(int i=0;i<p;i++)
{
cin>>f1>>f2>>t;
dis[f1][f2]=min(dis[f1][f2],t);//关键!!我也是服了这个输入,还会重复输入两点之间不同的时间···坑
dis[f2][f1]=dis[f1][f2];
}
今天也就不知不觉的过去了,明天加油啊!