JOI Final 合集
intel_core · · 个人记录
LOJ #2764. 「JOI 2013 Final」JOIOI 塔
二分答案
如果要凑出 I 作为最后的塔底,很明显这
选出 I 作为塔底之后,接着选出 O 作为塔身,这些 O 要满足从后往前数到任意下标时,O 的数量都不超过 I 的数量。
最后再选剩下的 I 和 J ,看个数即可。
bool check(int x){
int cnt1=0,cnt2=0,cnt3=0;
for(int i=n;i>=1;i--){
if(str[i]=='J'){
if(cnt3<cnt2)cnt3++;
}
if(str[i]=='O'){
if(cnt2<cnt1)cnt2++;
}
if(str[i]=='I'){
if(cnt1<x)cnt1++;
else if(cnt1==x&&cnt3<cnt2)cnt3++;
}
}
return cnt3>=x;
}
LOJ #2763. 「JOI 2013 Final」 现代豪宅
很明显
把所有有开关的点拆成拆成两个,一个连同行的开关,一个连同列的开关,然后同一个开关的两个点连一条长度为 1 的边。
连边的时候只需要连上下左右离当前开关最近的开关就行,这样边数最大是
在建完的图上跑 dijkstra ,复杂度
LOJ #2758. 「JOI 2014 Final」年轮蛋糕
二分答案
换言之,我们要使三块蛋糕都不小于
复杂度
LOJ #2335. 「JOI 2017 Final」足球
如果
然后就是考虑怎么建图,对于球来讲,有三种状态(无人持球,有人持球,在传球途中)。
一种一种考虑如何建边,无人持球到有人持球,需要最近的人过来接应,边的长度是
在传球途中具体还需要分四个传球的方向,连向该方向的下一个格子即可。
有人持球到传球途中,代价是助跑的疲劳度
传球途中球可以随时停下,有人持球向四个方向运球也连边。
这样连边可能会出现一个问题,就是一个人分身跑去两个地方接应;但仔细想一想,此时
总复杂度