<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      [CSP-S 2024] 染色 題解

      題目鏈接

      [CSP-S 2024] 染色

      題解

      這是一道線性 \(dp\) 問題,難點(diǎn)在于在具體的題目背景中抽象出實(shí)際問題,最難的地方是分類討論。
      根據(jù)題目的意思,如果第 \(i\) 位數(shù)字(\(a_{i}\))的顏色和第 \(i\) 位之前的數(shù)字(\(a_{[1,i]}\))的顏色都不同,則這個(gè)數(shù)字貢獻(xiàn)為 \(0\),接著,如果前面有相同的顏色,再如果離第 \(i\) 位最近的相同顏色的數(shù)字和第 \(i\) 數(shù)字相同,則第 \(i\) 位數(shù)字貢獻(xiàn)為 \(a_{i}\)。我們只討論這個(gè)數(shù)可以有貢獻(xiàn)時(shí)的情況,當(dāng)這個(gè)數(shù)無論如何也無法貢獻(xiàn)時(shí)不進(jìn)行討論,我們用結(jié)構(gòu)體存 \(a_{i}\) 這個(gè)數(shù)字在之前出現(xiàn)過的位置的下標(biāo)以及這個(gè)數(shù)字本身:

      struct num{
          ll n,last;
      }a[2000005];
      

      當(dāng) \(a_{i}\) 在之前沒有出現(xiàn)過時(shí),后文用 \(a_{i}(last)\) 表示 \(a_{i}\) 這個(gè)數(shù)字在之前出現(xiàn)過的位置的下標(biāo),\(a_{i}(last)=0\) ,接下來討論以下情況

      • 兩個(gè)相同的數(shù)相鄰(\(a_{i}=a_{i-1}\)),這樣的兩個(gè)數(shù),只要顏色相同,無論如何都會(huì)產(chǎn)生貢獻(xiàn),但是對(duì)后續(xù)有影響(請(qǐng)先看下文)
      • 兩個(gè)相同數(shù)不相鄰,存在 \(i>j\)\(a_{i}=a_{j}\) ,那么要想讓 \(a_{i}\) 產(chǎn)生貢獻(xiàn),\(a_{[i+1,j-1]}\) 區(qū)間內(nèi)的數(shù)字必須是同一顏色且和 \(a_{i} \ ,\ a_{j}\) 的顏色不同,那么對(duì)于 \(a_{[i+1,j-1]}\) 內(nèi)的數(shù)字,如果存在兩個(gè)相同的數(shù),但這兩個(gè)數(shù)又不相鄰,它們的貢獻(xiàn)就沒有了。
      • 兩組相同的數(shù)交叉,如果想讓兩組數(shù)都產(chǎn)生貢獻(xiàn),必須滿足下列狀態(tài):
      x,...,y,x,...,y
      

      如果是下面這種狀態(tài),只能使其中一組產(chǎn)生貢獻(xiàn):

      x,...,y,...,x,...,y
      

      經(jīng)過上面的分類討論后,我們?cè)O(shè) \(f_{i,j=0/1}\) 表示對(duì)于前 \(i\) 個(gè)數(shù)字,當(dāng) \(j=0\),表示第 \(i\) 個(gè)數(shù)字與第 \(a_{i}(last)\) 不產(chǎn)生貢獻(xiàn)時(shí)的最優(yōu)解,當(dāng) \(j=1\) 時(shí),表示第 \(i\) 個(gè)數(shù)字與第 \(a_{i}(last)\) 產(chǎn)生貢獻(xiàn)時(shí)的最優(yōu)解。如果兩個(gè)數(shù)字既相鄰又相同,要把他們的貢獻(xiàn)算進(jìn)最后的答案里,但是在表示狀態(tài)時(shí),必須表示成沒有產(chǎn)生貢獻(xiàn)的狀態(tài)。如果出現(xiàn)交叉情況,直接訪問 \(a_{i}(last)\)\(a_{i}(last)+1\) 兩個(gè)位置上的數(shù)值即可。易得到狀態(tài)轉(zhuǎn)移方程式:

      • 普遍情況:
        \( f_{i,0}=\max (f_{i-1,1}\ ,\ f_{i-1,0}) \)
        \( f_{i,1}=\max (f_{a_{i}(last),1}\ ,\ f_{{a_{i}(last)},0} \ ,\ f_{a_{i}(last)+1,1}\ ,\ f_{{a_{i}(last)+1},0})+a_{i} \)
      • 出現(xiàn)相鄰兩數(shù)的情況時(shí):
        \( f_{i,0}=\max (f_{i-1,1}\ ,\ f_{i-1,0}) \)
        \( f_{i,1}=f_{i,0} \)
        將所有出現(xiàn)過的相鄰相同兩數(shù)加在一起,記為 \(anstmp\) ,最終答案就是 \(\max(f_{n,0} \ ,\ f_{n,1}) \ + \ anstmp\)

      CODE

      #include<cstdio>
      #include<algorithm>
      #include<cstring>
      #define ll long long
      using namespace std;
      
      ll t,anstmp;
      ll dp[2000005][2];
      ll lst[2000005];
      
      struct num{
          ll n,last;
      }a[2000005];
      
      int main(){
          ll t;
          scanf("%lld",&t);
          while (t--){
              ll n;
              scanf("%lld",&n);
              memset(dp,0,sizeof(dp));
              memset(lst,0,sizeof(lst));
              anstmp=0;
              for (ll i=1;i<=n;i++){
                  scanf("%lld",&a[i].n);
                  if (lst[a[i].n]) a[i].last=lst[a[i].n];
                  else a[i].last=0;
                  lst[a[i].n]=i;
                  if (a[i-1].n==a[i].n) anstmp=anstmp+a[i].n;
              }
              for (ll i=1;i<=n;i++){
                  if (a[i].n==a[i-1].n){
                      dp[i][0]=max(dp[i-1][0],dp[i-1][1]);
                      dp[i][1]=dp[i-1][1];
                      continue;
                  }
                  else dp[i][0]=max(dp[i-1][0],dp[i-1][1]);
                  if (a[i].last) dp[i][1]=max(max(dp[a[i].last][0],dp[a[i].last][1]),max(dp[a[i].last+1][0],dp[a[i].last+1][1]))+a[i].n;
              }
              printf("%lld\n",max(dp[n][0],dp[n][1])+anstmp);
          }
          return 0;
      }
      
      posted @ 2024-11-29 11:39  ZYStream  閱讀(366)  評(píng)論(0)    收藏  舉報(bào)
      主站蜘蛛池模板: 亚洲V天堂V手机在线| 国产专区一va亚洲v天堂| 日本一区二区三区视频版| 中文字幕亚洲人妻系列| 亚洲综合在线日韩av| 亚洲一区二区三区在线播放无码| 亚洲精品国产一区二区三区在线观看 | 亚洲国产精品高清久久久| 亚洲第一狼人成人综合网| 国产熟睡乱子伦视频在线播放| 熟女一区二区中文在线| 精品久久人人做爽综合| 亚洲大尺度无码专区尤物| 久久精品网站免费观看| 悠悠人体艺术视频在线播放| 亚洲一区二区经典在线播放| 亚洲热视频这里只有精品| 樱花草在线社区www| 人妻无码中文字幕| 国产精品538一区二区在线| 91精品国产蜜臀在线观看| 中国女人高潮hd| 成人啪精品视频网站午夜| 国产一级片内射在线视频| 无码AV动漫精品一区二区免费| 亚洲精品自产拍在线观看动漫| 三上悠亚在线精品二区| 国产肥臀视频一区二区三区| 精品九九人人做人人爱| 国内不卡一区二区三区| 精品国产午夜福利在线观看| 人妻丰满熟妇无码区免费| 久久久精品2019中文字幕之3| 人妻激情文学| a级国产乱理伦片在线观看al| 免费看视频的网站| 免费高潮了好湿h视频| 色欲狠狠躁天天躁无码中文字幕| 国产成人av性色在线影院| 国产一国产精品免费播放| 亚洲色大成网站WWW永久麻豆|