Luogu P4342 Polygon 題解報告

2022-04-28 20:48:16 字數 1018 閱讀 8518

題目傳送門

【題目大意】

給乙個n邊形,每個頂點上有乙個數值,每條邊上有乙個運算符號。每次刪去一條邊,同時將這條邊連線的兩端點的數值進行運算(運算符號記為這條邊上的符號),求刪去所有邊後的最大值。

【思路分析】

首先斷環為鏈,然後就跟石子合併是差不多的了,不過因為涉及到乘法並且有負數,所以dp過程中除了記錄最大值還要記錄最小值,詳見**。

【**實現】

1 #include2 #include3

#define rg register

4#define go(i,a,b) for(rg int i=a;i<=b;i++)

5using

namespace

std;

6const

int n=102;7

const

int inf=1e9+9;8

int n,m,a[n],f[n][n],g[n][n],ans=-inf;

9char

b[n];

10int

main()

13 go(i,1,m) go(j,1,m) f[i][j]=-inf,g[i][j]=inf;

14 go(i,1,m) f[i][i]=g[i][i]=a[i];

15 go(len,2

,n)16 go(l,1,m-len+1)17

26else

2731}32

}33 go(i,1,n) ans=max(ans,f[i][i+n-1

]);34 printf("

%d\n

",ans);

35 go(i,1,n) if(f[i][i+n-1]==ans) printf("

%d "

,i);

36return0;

37 }

**戳這裡

luogu P4310 絕世好題

題面傳送門 這道d pdp dp還是比較水的 首先考慮設f if i fi 為以a ia i ai 結尾的最長長度,則向前迴圈列舉找到適合的轉移就可以了,時間複雜度o n 2 o n 2 o n2 估計80 8080 分正解也不是很難想,因為這是位運算,所以我們要找到位運算的性質,的性質就是兩個數至...

luogu P4310 絕世好題

題面傳送門 這道 dp 還是比較水的 首先考慮設 f i 為以 a i 結尾的最長長度,則向前迴圈列舉找到適合的轉移就可以了,時間複雜度 o n 2 估計 80 分 正解也不是很難想,因為這是位運算,所以我們要找到位運算的性質,的性質就是兩個數至少有乙個相同位置同為 1 那麼只要列舉位置轉移就好了,...

luoguP3708 koishi的數學題

題目鏈結 樣例解釋01 1111 1111 0022 2222 2201 0333 3333 0010 4444 4401 2105 5555 0002 1066 6601 1321 0777 0020 3210 8801 0143 2109 0012 0432 10很顯然橫行相加就是每個答案,然而...