hrbust2294 修建傳送門

2021-09-07 08:16:35 字數 691 閱讀 9468

哈理工2016級新生程式設計全國邀請賽b題

n個點1~n,i到i+1的距離為a[i],現在可以在兩個點之間建乙個傳送門,則兩點之間距離為0,求建傳送門後1號出發的最遠距離最小是多少?

a[i]的字首和為s[i]。

假設在a、b兩點建立傳送門後,兩點距離為dis[i][j]。

對於b固定的情況,最遠距離要麼是s[n-1]-s[b],要麼是dis[1][k]裡的最大值,k為a、b兩點之間的點, dis[1][k]=min(s[k],s[a]+(s[b]-s[k]))。s[a]顯然越小越好。所以就讓a在第乙個點的位置。於是dis[1][k]=min(s[k],s[b]-s[k])。

假設最大的dis[1][k]的 k 為 c。

滿足\[s[j]的 j 或者 j+1 就是 c(其實就是ab中間位置兩邊的點)。

這裡的c是隨著b遞增不會減小的,因此不用o(\(n^2\)),只要每次維護 j 滿足不等式即可。

#include#includeusing namespace std;

int n;

long long s[100005];//注意要開long long

int main(){

int t;

scanf("%d",&t);

while(t--){

scanf("%d",&n);

for(int i=1;i

hrbust2294 方方正正

哈理工2016級新生程式設計全國邀請賽c題 乙個r行c列的01矩陣,告訴你每行的和 每列的和,問是否存在這樣的矩陣?首先,行和和列和之和要相等,否則一定是no。然後根據gale ryser定理判斷存在性 求出 r r 1 r 2 r m r i 行和大於等於i的行數 只要 r preceq s 就存...

hdu 2294 Pendant 矩陣乘法

題意 求長度為1 n的項鍊,用必須用k種珍珠組成的方案數。思路 首先可以想想dp,可以推出dp方程,用dp i j 表示長度為i的項鍊用j種珍珠的方案數。則dp i j dp i 1 j j dp i 1 j 1 k j 1 由於n非常大,因此直接dp是不現實的,因此我們想到了用矩陣乘法加速運算,矩...

Hrbust 合唱隊形

description 一年一度的清明節又要到了 學校決定開個晚會慶祝一下 由於泥工男孩子實在太多啦,跳舞是不可能跳舞的。於是他們決定站成一排唱歌。眾所周知的,老師往往都是有強迫症的人。他想要讓最終隊形的身高序列從左到右先嚴格不減再嚴格不增。比如 1,2,3,2,1 1,4,4,2 1,2,3 都是...