还是AK场。考前信心赛?
而且T3的部分分还放反了所有80的都其实只有50。
总算在AK场真正AK了一次。。。
手感好,整场考试很顺利。要不是因为T3是原题可能就没这么好看了。
20minT1,50minT2,去趟厕所回来70min想到T3,110min写完调完对拍完,然后去学skyh写平衡树了。
然后我发现我不会写平衡树了。
两场一计分:600/600/585/580/535/515/515/500///
Day1考得不够好,Day2就还是反超不了啊。。。
没关系这两个600的过两天直接联赛进营进队拿最优惠不是竞争对手挺过联赛我就是rank1了
T1:物理课
迭代都能A那就没得说了。。。等比数列求和还是会的
1 #include2 #include 3 using namespace std; 4 long double theta,d,v,g; 5 int main(){ 6 freopen("physics.in","r",stdin);freopen("physics.out","w",stdout); 7 int t;scanf("%d",&t); 8 while(t--){ 9 scanf("%Lf%Lf%Lf%Lf",&theta,&v,&d,&g);theta/=180;theta*=3.141592653589793238; 10 printf("%.5Lf\n",2*sin(theta)*v*cos(theta)*v/g/(1-d*d)); 11 } 12 }
T2:数学课
可以打表(超可怜的说)。但是从含义出发比较简单。
确定一个奇数的状态,那么它的任意偶数倍就都确定了,交替出现在AB集合中。
然后区别就是你把多的和少的分别放在A里还是B里。
如果多的和少的一样那么就不必考虑。设有pair0个,怎么放都一样所以方案数是$2^{pair0}$
接下来是多的比少的多一个。设有pair1个。
首先我们要知道这些选择的最小值是多少,设为Base。(在求出pair1和pair0的顺便弄一下就行,log的)
那么多的比少的的贡献就是:因为要从pair1个里选出m-Base个,所以就是$C_{pair1}^{m-Base}$
一个Lucas一个快速幂
1 #include2 #define int long long 3 #define mod 10000019 4 int fac[10000020],inv[10000020]; 5 int C(int b,int t){return 0<=t&&t<=b?fac[b]*inv[t]%mod*inv[b-t]%mod:0;} 6 int Lucas(int b,int t){return b mod;} 7 int qpow(int b,int t,int a=1){for(;t;b=b*b%mod,t>>=1)if(t&1)a=a*b%mod;return a;} 8 main(){ 9 freopen("math.in","r",stdin);freopen("math.out","w",stdout); 10 fac[0]=1; 11 for(int i=1;i 1]*i%mod; 12 inv[mod-1]=qpow(fac[mod-1],mod-2); 13 for(int i=mod-2;~i;--i)inv[i]=inv[i+1]*(i+1)%mod; 14 int n,q,m,lst=0,p2=1ll<<60,pair1=0,pair0=0,Base=0; 15 scanf("%lld%lld",&n,&q); 16 for(int i=61;i;--i,p2>>=1){ 17 int num=n/p2,cnt;num=(num>>1)+(num&1);cnt=num-lst;lst=num;Base+=cnt*(i>>1); 18 if(i&1)pair1+=cnt;else pair0+=cnt; 19 } 20 while(q--)scanf("%lld",&m),printf("%lld\n",Lucas(pair1,m-Base)*qpow(2,pair0)%mod); 21 }
T3:地理课
第一反应:LCT。不会。
后来一想,改变一下题意就是原题了。
可以离线,所以只要把加边和删边的含义改变为“每条边只在一段时间内出现,其它时间消失”
然后就可以当作《Dash Speed》做了。线段树分治+按秩合并并查集板子。(给自己之前的博客打广告2333)
1 #include2 #include 3 #include
T4:普通平衡树
没调出来。爆零了。