1. 程式人生 > >AtCoder Code festival 2017qualC-D-dp+優化

AtCoder Code festival 2017qualC-D-dp+優化

傳送門
題意:
給你一個字串s,問s最少分成幾塊,使得每一塊在經過組合後都能成為一個迴文串。(|s|≤2e5)

Solution:
我們可以轉化一下“迴文串”這個定義,對於每個字母我們可以把它分別轉化到二進位制的0-25位,然後如果一段字串是迴文串,那麼這段字串每個字元的異或一定是0或者2的冪,那麼這道題就可以用dp做了:f[i]表示前i個字元的被分成的最小段數,轉移即為

f[i]=min(f[j]+1)(1j<i,a[j]a[i]=02)(a[i])
但是這樣寫是n方的,會T掉,那怎麼辦呢?
記憶化,我們可以儲存每一個子串狀態的最小段數(子串狀態可以用二進位制表示),然後轉移時列舉2的冪和0即可。

程式碼:

#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
char s[200010];
int t[200010];
int f[200010];
int minn[(1<<26)+1];
int main()
{
    scanf("%s",s+1);
    for (int i=1;i<=strlen(s+1);i++)
        t[i]=t[i-1],t[i]^=(1<<(s[i]-'a'));
    for (int i=0;i<=(1
<<26)-1;i++) minn[i]=1e9; minn[0]=0; for (int i=1;i<=strlen(s+1);i++) { f[i]=1e9; for (int j=0;j<=25;j++) f[i]=min(f[i],minn[t[i]^(1<<j)]+1); f[i]=min(f[i],minn[t[i]]+1); minn[t[i]]=min(minn[t[i]],f[i]); } printf("%d",f[strlen
(s+1)]); }

相關推薦

AtCoder Code festival 2017qualC-D-dp+優化

傳送門 題意: 給你一個字串s,問s最少分成幾塊,使得每一塊在經過組合後都能成為一個迴文串。(|s|≤2e5) Solution: 我們可以轉化一下“迴文串”這個定義,對於每個字母我們可以把它分

Atcoder Code Festival 2017 qual C 10.22 D題題解

最小 display val sed hide min clas closed urn 【題意概述】 給出一個只有小寫字母的序列,問最少把序列分成幾段可以滿足每一段可以通過變換成為回文串。變換指的是交換子序列中的字母的位置。 【題解】 我們把a~z分別設為2^0~2

atcoder CODE FESTIVAL 2017 qual C D - Yet Another Palindrome Partitioning

absolut tom per cas data- lose som coder none Problem Statement We have a string s consisting of lowercase English letters. Snuke is par

101 to 010 Atcoder CODE FESTIVAL 2017 qual B D

hide clas bsp img 技術 return org include blog https://www.luogu.org/problemnew/show/AT3575 題解 根本不會。。 錯誤記錄:缺少32行的轉移。顯然這個轉移是必要的 1 #

[Atcoder Code Festival 2017 Qual B Problem F]Largest Smallest Cyclic Shift

can esp using ins str small highlight div turn 題目大意:給你\(A\)個a,\(B\)個b,\(C\)個c,要你構造一個字符串,使它的最小循環表示法最大。求這個表示法。解題思路:不知道怎麽證,但把a、b、c當做單獨的字符串扔進

Atcoder CODE FESTIVAL 2016Final G:Zigzag MST

傳送門 題解: 把邊掰到環上,然後取min,就只有O(n)O(n)O(n)條邊了。 #include <bits/stdc++.h> using namespace std; const

atcoder CODE FESTIVAL 2017 qual A 手速(霧)賽

       這個比賽看起來好像挺重要的,,(結果來了一眾大佬誰都打不過qaq)        A,B題不知道是幹什麼的        C題(其實也是不知道在幹什麼)就是給一個字母矩陣,重排列後問是否

Gym 101908F Music Festival 狀壓dp 離散優化

題目連結:http://codeforces.com/gym/101908/problem/F   題意:        給你n個場景,每個場景有ki場舞臺劇,每一場舞臺劇都有一個開始時間si,結束時間ei,和一個獲得的開心值gi。一

Gym 101908F Music Festival 狀壓dp 離散優化

題意:        給你n個場景,每個場景有ki場舞臺劇,每一場舞臺劇都有一個開始時間si,結束時間ei,和一個獲得的開心值gi。一場舞臺劇如果開始看了就要一直看到結束,如果這一場剛結束可以馬上開始看另一個場景的另一場舞臺劇(即點交集也還可以看),現在要你計算,如

Code Festival 2017 qualA D Four Coloring[構造]

Description 題意是給定一個H∗W的網格,和一個整數d。 要求將這些網格染成四種顏色,使得曼哈頓距離恰好為d的點對的顏色不同。 Solution 看到曼哈頓距離就要想到和切比雪夫距

AtCoderCODE FESTIVAL 2017 qual C

pac fde long cpp part 平安 mod set -c A - Can you get AC? No #include <bits/stdc++.h> #define fi first #define se second #define pii

AtCoderCODE FESTIVAL 2017 qual B

date cpp b- 但是 sca dfs utc scanf || 最近不知道為啥被安利了饑荒,但是不能再玩物喪誌了,不能頹了 饑荒真好玩 A - XXFESTIVAL CCFESTIVAL #include <bits/stdc++.h> #define

AtCoder Beginner Contest 122 D - We Like AGC(DP)

tdi display 鏈接 ner abc like 分享圖片 logs hide 題目鏈接 思路自西瓜and大佬博客:https://www.cnblogs.com/henry-1202/p/10590327.html#_label3 數據範圍小 可直接dp

BZOJ1010單調性DP優化

多個 實現 同時 研究 -1 ems bsp amp 掃描 1010: [HNOI2008]玩具裝箱toy Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 10707 Solved: 4445[Submit][Status]

HDU 5389 Zero Escape (MUT#8 dp優化

etc memset rgb color 兩個 || 答案 一位數 ack 【題目鏈接】:pid=5389">click here~~ 【題目大意】: 題意: 給出n個人的id,有兩個門,每一個門有一個標號,我們記作a和b,如今我們要將n個人分成兩組,進入

loj6171/bzoj4899 記憶的輪廊(期望dp+優化

get 答案 題目 bre ron 決策單調 重新 預處理 http 題目: https://loj.ac/problem/6171 分析: 設dp[i][j]表示從第i個點出發(正確節點),還可以有j個存檔點(在i點使用一個存檔機會),走到終點n的期望步數 那麽

常見的DP優化類型

ces force 要求 答案 第一個 時間 四邊形不等式 img set 常見的DP優化類型 1單調隊列直接優化 如果a[i]單調增的話,顯然可以用減單調隊列直接存f[j]進行優化。 2斜率不等式 即實現轉移方程中的i,j分離。b單調減,a單調增(可選)。 令:

poj 1185 狀壓dp+優化

php 順序表 jpg name enter 接下來 r+ memory out http://poj.org/problem?id=1185 炮兵陣地 Time Limit: 2000MS Memory Limit: 65536K Total Submis

CODE FESTIVAL 2017 qual A C Palindromic Matrix(思維題)

int 字母 esp != 題意 nbsp class task col 題目鏈接:點我呀 題意:給出n*m由26位小寫字母組成的矩陣,問是否能夠重構形成一個每行每列都是回文的矩陣 題解:分三種情況考慮(偶偶,奇奇,奇偶),每種情況下考慮最少 需要4個相同字母的字母數,

CODE FESTIVAL 2017 qual A--C - Palindromic Matrix(模擬所有情況,註意細節)

需要 tip stream pac pos ear war sample element 個人心得:其實本來這題是有規律的不過當時已經將整個模擬過程都構思出來了,就打算試試,將每個字符和總和用優先隊列 裝起來,然後枚舉每個點,同時進行位置標誌,此時需要多少個點的時候拿出最大