打暴搜,然后$TLE75$,
丑陋的考试$75$分代码:
#include
#include
#include
#include
#include
#include
$70$分算法:
测试点分治,前$30$分暴力,后$40$分简单的线段树合并。
错误总结:
1、没有正确推测测试点,
考试时看到前边的测试点一个$m<=10$一个$m<=1000$,
然后我ZZ地认为暴力不能跑过$1000$,于是:
if(m<=10){}
else{}
if(m<=10)
{
dfs(1);
for(Reg int i=1,x,c;i<=m;++i)
{
scanf("%lld%lld",&x,&c);
change(x,c);
}
scanf("%lld",&q);
for(Reg int i=1,x;i<=q;++i)
{
scanf("%lld",&x);
printf("%lld\n",an[x]);
}
}
else
{
for(Reg int i=1,x,c;i<=m;++i)
{
scanf("%lld%lld",&x,&c);
if(!p[c]) p[c]=++top;
if(!pos[x]) pos[x]=New();
work(pos[x],1,m,c);
}
memset(vis,0,sizeof(vis));
dfs_re(1);
scanf("%lld",&q);
for(Reg int i=1,x;i<=q;++i)
{
scanf("%lld",&x);
printf("%lld\n",ans[x]);
}
}
上边没有离散化。
3、数组我显然没开够(因为我认为$m<=1000$的点不能跑)。
丑陋的考试$20$分代码:
#include
#include
#include
#include
#include
丑陋的$70$分代码:
#include
#include
#include
#include
#include
上来先看的$T1$,题意很好理解,可以暴搜。。
然后$10$分钟码了一个$n^2$的代码,样例过了。
然后想了想,用了个$vector$存边界,然后就$75$分超时,好像是这个常数有点大。
码完$T1$之后考试将近一半,
马上看$T2$,一看$T2$,线段树合并,然后看到测试点,仿佛可以过掉$10$个点左右。
然后就码了一颗线段树合并和一个暴力,测试点分治嘛。
然后两个样例直接过。。我以为可以拿到$50$到$60$分,然后就跳到$T3$,
其实这个第二个样例跟我打的线段树合并没什么关系,我第一个暴力的范围是$m<=10$。。
然后考试最后20分钟发现。。
我打的线段树合并,它$RE$,然后非常紧张,调了半天,然后过样例了。
最后$20$分。。有点可惜。
$T3$他们都说很水,然而,我并没有剩很长时间,然后码了$dfs$,还死活调不对,
最后凭借我的"骗分"技巧,输出样例$+$错误的$dfs$得了$5$分。
最后$75+20+5=100$,第二题有点可惜。
没什么水平。。。