ETO的公開賽T5《獵殺藍色空間號》題解

2022-02-27 05:45:48 字數 2244 閱讀 9692

這道題別看題面這麼長,其實題意很簡單

就是讓你求從起點開始的最長合法區間

合法的要求有兩個:兜圈子和直飛

且這兩個條件相互獨立

(也就是說兜圈子的末尾不會對下面可能出現的直飛造成影響)

舉個例子:

1 2 3 2 1 5 4 3 8 9

這個序列他的合法長度是8

因為直飛是 5 4 3 8 9

1是兜圈子的末尾,對直飛無影響

這樣看來,兜圈子比直飛優秀的多

因為如果直飛的某段屬於兜圈子

那麼把這一段歸於兜圈子後對序列的合法性無影響

但如果兜圈子的某段屬於直飛,那歸於直飛後

剩下的這部分可能就不是兜圈子了

所以我們先用manacher跑出回文區間

用差分陣列維護一下回文區間

如果在回文區間內,則不考慮

否則判斷是否直飛即可

只要確保完全符合,就記下來這個區間和這個區間的末尾值

後面的就是貪心了

最優情況自然是你選的那條正好是飛船所在

飛船所在正好是最短的

最壞情況是你最後一次選到的是最短的

且這個位置是飛船所在

機率我們會驚訝的發現其實是一樣的

排個序第二個也很好求

#include#include

#include

#include

#define rii register int i

#define rij register int j

#define mod 19260817

using

namespace

std;

char s[200005],cp[200005

];int p[200005],cd,t,n,ans,cnt,jl[105],cf[200005

],lnt;

char zcq1[200005

];int zcq2[200005

],m;

void

ycl()

cp[k]='#'

; k++;

cd=k;

}void

manacher()

else

while(cp[i+p[i]]==cp[i-p[i]])

if(p[i]+i>mx)

}}void

cfs()

}}int

yz()

if(pd==0

)

else

else

}pre=zcq1[i];

continue

; }

if(pd==1

)

else

}if(pd==2

)

else}}

else

}return cnt+1;}

long

long pw(long

long ds,int

ms)

else

}return

res;

}bool cmp(int kl,int

lk)void

sr()

getchar();

getchar();

}void

fz()

}int

main()

//printf("%d\n",ans-1);

}

if(lnt==0

)

if(lnt==1

)

sort(jl+1,jl+lnt+1

,cmp);

int minx=jl[1

];//

jl[1];

int ant=1

;

long

long js=0

;

for(rii=2;i<=lnt;i++)

else

}for(rii=2;i<=lnt;i++)

js*=2

; js+=minx;

cout

<"

"<"";

double kn=((1.0)*ant)/lnt;

kn/=lnt;

printf(

"%.8lf %.8lf

",kn,kn);

}

4 5 Daniel13265 的公開賽

4.5 daniel13265 的公開賽 題目鏈結 官方題解 戳這裡居然沒有官方 暴力做法 分奇偶形式的對稱數列,1e3資料 n2搞定,但是wa了 不知道為啥qwq include include include const int mod 1e9 7 using namespace std int...

HDOJ2009暑期集訓公開賽(6)

暑期集訓公開賽 6 source 1 2946 letter cookies ac.其實這是一道很簡單的提,當初 也是很快寫出了,但可惡的是竟然看錯了輸入格式,導致一直re.以後開始做題時要弄清楚格式。2948 geometry darts 賽後ac.由於上面那題花的時間過多之間導致這題的時間不夠,...

Robot杯全國機械人公開賽

這是大學的時候參加的乙個比賽。robot杯全國機械人公開賽。做的是搬運機械人。屬於光電組的。大概有乙個月都在準備這個比賽。我和儀器與電子學院的培松同學。資訊與通訊工程學院的彥宗同學遍歷了從硬體設計。到軟體編寫。過程艱辛。硬體 晶元用的是stm 32。加上機械人的乙個框架。搬運用的手臂是兩個舵機加上兩...