2018山东省赛回忆与总结

2018山东省赛回忆与总结

标签: ACM省赛 总结ios


真的没想到会打得这么烂。算法

比胜过程

开场前咱们就决定好队长看a-d,田大佬看e-g,而我看h-j。 开场以后,我看了h,i并无想到思路,而后j题尚未看懂题意,队长就过掉了c。而后田大腿告诉我f题可作,并且当时有三四个队已通过掉了。我看了下题意就去写容斥了,而后差很少二十分钟才写完并wa了一发。队友说a能够写了,因而我打印了f代码去一边找bug,发现运算过程当中有些地方忘记取模可能会致使溢出,算法也存在一些问题,而队友则很快过掉了a题。我又回来写F,把算法改正,也修正了不少细节,造了一组比较强的样例也没有卡掉个人程序,自信满满的交上去又wa了。队友猜想多是运算过程当中取模以后出现负数,而后再减去一个接近MOD的值会爆long long,而后我就把全部运算都加上了强制转换__int128,又wa了一发。 这个时候咱们三个心态都有点崩,已经开场两个多小时,才只过掉两题,而奕神的队已经五题在冠军位置领榜。我以为多是我写崩了,让队长从新写一次f,本身去找别的题。首先是博弈的题,想了一下dp又感受数据范围太大不可行。而后没找到其余可作题,我又开始想f问题出在哪里(由于当时除了a、c,F是过题人数最多的)。队长写f也写崩了几回,后来交上去也wa掉了,好像后来又折腾几回仍是没过。我上去找我写的f的bug,我对算法很自信,以为只会是细节的问题。 中途找bug期间,队友跟我说了e题也有不少人过了,而后我看了下题意,提出了一些想法可是不知道怎么实现,队友说能够维护前缀最小和次小值,而后我以为很靠谱,暂时弃掉f一发过了e。以后就是咱们轮流上来找f的bug。后来我说f题可能数据有问题,可是其余不少队都过了又不是很肯定有问题。队长终于决定要打表找bug,这个时候大概还有不到两小时就结束了,我把打表的活甩给队长以后去看别的题了。 而后立马就发现,以前博弈题的数据范围看错了//汗,而后立马推出了dp的状态和方程,趁着队长打表想好了每一步具体怎么写。而后感受很稳了就去写了博弈也就是g题,一发过了。 过掉e和g的人数比f少不少。我开始怀疑这个题是否是有除了容斥以外的抖机灵算法。然而虽然想到了可是感受实现很麻烦,因此也没有写。队长提出用打表程序对拍找错,咱们在表里选了一些感受比较难算对的数据,结果个人程序都经过了。而后队长索性用程序对拍了十万的数据,结果仍是只证实了个人程序的正确性。 比赛还剩下不到一个小时,我跟队友说f的数据确定有问题,比赛完了我要黑了这个题。只作了四题的咱们必须再搞一个才能拿金。队友说应该继续作f,但我以为应该开b,大概想了差很少十分钟b题,咱们认为应该二分答案,而后每次二分求一个最大杀戮数,可是就是没有想到怎么求这个最大杀戮数,只要解决了这个问题这个题就很稳了。队友感受b无望以后继续想f,我偷偷想b题,然而并无想出来,比赛完了问奕神说是用二分图最大匹配求,恍然大悟。就这样最后一个小时也用没了。 最后两分钟,我把F代码打印了出来。spa

比赛中的问题

我以为打这么烂有下面几个方面的缘由code

1. 实力不够

  • 首先是实力上的。比赛完奕神告诉我b题是用二分图最大匹配写时,我想到好久以前exam上贪心专题有一个题跟这个题很相似,然而当时没有学会二分图没作出来,后来也不了了之。最近一个月的组队训练赛,也有两次用到二分图的匹配算法,一般都是尚未学会又要开始补新一场训练赛的题了。并且山大有一支队伍全程没有搞f也仍是拿到了7题

2. 过于紧张

  • 其次是比胜过程中没控制住心态。一开始写F犯各类低级错误,后来时间剩一个多小时时,仍是着急的只想搞出F,我以为是由于紧张失去了作出正确选择的能力。

3. 不敢敢于开新题

  • 事实上当比赛结束后我也还有不少题不知道题意包括D,而从他们的讨论中我知道D是能够用树链剖分写的(听说不用树剖暴力也能够过),若是能把搞F的时间拿出来一点来写D也不会结局这么惨。在之后的比赛中,无论有没有在卡题,三我的都应该把全部有人过的题看一遍,思考下思路。

4. 平时训练

  • 首先是训练中留下的一些坑没有及时填掉,因此失去了B题。
  • 训练后补题时我老是会花不少时间在尚未人补出来的题上,有时候虽然补出来了可是收获可能不值花这么多的时间
  • 训练赛中有些队友作出来的题,赛后就懒得去补一下。其实这种题有队友教反而收获会更大。
  • 平常训练太放松了,没有正式比赛时的紧张感

4. 策略问题

  • 此次栽在了F上,由于F简单且过的人多因此咱们更愿意花时间去搞。下次即便遇到这种简单的过的人多的题,一旦花费时间超过40分钟就应该果断开新题,由于不能排除是数据有问题。(跟好多人说了我要黑了这个题,结果后来才知道F根本没数据

当初省赛报名后不久,我收到邮件老师要让咱们队去参加江苏省赛。比赛完问乐神才知道只派了奕神队和咱们队,真的对不起老师的指望,我难受的饭吃不下去。不管如何下个月江苏省赛也要打的像个样子。io

语言混乱,表达不清,还请海涵。class

<details> <summary> 当时的f代码 </summary> ```cpp #include <iostream> #include <cstdio> using namespace std; typedef long long ll; const ll MOD=1e9+7; ll f(ll a,ll b,ll c,ll d){ ll l=max(a,c),r=min(b,d); ll ans=r-l+1; if(ans<0) return 0; return ans; } ll min(ll a,ll b,ll c){ return min(a,min(b,c)); } ll max(ll a,ll b,ll c){ return max(a,max(b,c)); } int main(int argc, char const *argv[]) { int t; scanf("%d", &t); while(t--){ ll l[5],r[5]; ll sum=1; for (int i = 1; i <= 4; ++i) { scanf("%lld%lld", l+i,r+i); sum=sum*(r[i]-l[i]+1)%MOD; } ll ans=0; ans=(ans + f(l[1],r[1],l[2],r[2])*(r[3]-l[3]+1)%MOD*(r[4]-l[4]+1)%MOD)%MOD; ans=(ans + f(l[2],r[2],l[3],r[3])*(r[1]-l[1]+1)%MOD*(r[4]-l[4]+1)%MOD)%MOD; ans=(ans + f(l[3],r[3],l[4],r[4])*(r[1]-l[1]+1)%MOD*(r[2]-l[2]+1)%MOD)%MOD; ans=(ans + f(l[4],r[4],l[1],r[1])*(r[2]-l[2]+1)%MOD*(r[3]-l[3]+1)%MOD)%MOD;stream

ll crs=min(r[1],r[2],r[3])-max(l[1],l[2],l[3])+1;
	if(crs<0) crs=0;
	crs%=MOD;
	ans=(ans - crs*(r[4]-l[4]+1)%MOD+MOD)%MOD;

	ll crs2=min(r[3],r[4])-max(l[3],l[4])+1;
	if(crs2<0) crs2=0;
	crs2%=MOD;
	crs=min(r[1],r[2])-max(l[1],l[2])+1;
	if(crs<0) crs=0;
	crs%=MOD; 
	ans=(ans - crs*crs2%MOD+MOD)%MOD;

	crs=min(r[1],r[2],r[4])-max(l[1],l[2],l[4])+1;
	if(crs<0) crs=0;
	crs%=MOD;
	ans=(ans - crs*(r[3]-l[3]+1)%MOD+MOD)%MOD;

	crs=min(r[2],r[3],r[4])-max(l[2],l[3],l[4])+1;
	if(crs<0) crs=0;
	crs%=MOD;
	ans=(ans - crs*(r[1]-l[1]+1)%MOD+MOD)%MOD;

	crs2=min(r[2],r[3])-max(l[2],l[3])+1;
	if(crs2<0) crs2=0;
	crs2%=MOD;
	crs=min(r[1],r[4])-max(l[1],l[4])+1;
	if(crs<0) crs=0;
	crs%=MOD;
	ans=(ans - crs*crs2%MOD+MOD)%MOD;

	crs=min(r[1],r[3],r[4])-max(l[1],l[3],l[4])+1;
	if(crs<0) crs=0;
	crs%=MOD;
	ans=(ans - crs*(r[2]-l[2]+1)%MOD+MOD)%MOD;

	ll L=max(l[4],max(l[1],l[2],l[3])),R=min(r[4],min(r[1],r[2],r[3]));
	crs = R-L+1;
	if(crs<0) crs=0;
	crs%=MOD;
	ans=(ans + 3LL*crs%MOD)%MOD;
	ans = (sum - ans + MOD)%MOD;

	cout << ans << endl;
}

} // 没过好像是由于没有return 0?bug

</details>
相关文章
相关标签/搜索