多維DP UVA 11552 Fewest Flop

?

題目傳送門

 1 /*
 2     題意:將子符串分成k組,每組的字符順序任意,問改變后的字符串最少有多少塊
 3     三維DP:可以知道,每一組的最少塊是確定的,問題就在于組與組之間可能會合并塊,總塊數會-1。
 4         dp[i][j]表示第i組以第j個字符結尾的最少塊數,狀態轉移方程:dp[i][j] = min (dp[i][j], dp[i-1][l] + chunk - 1);
 5         意思就是枚舉上一組的所有字符,當出現在i組并且不是放到末尾,那么能-1
 6 */
 7 /************************************************
 8 * Author        :Running_Time
 9 * Created Time  :2015-8-7 11:08:46
10 * File Name     :UVA_11552.cpp
11  ************************************************/
12 
13 #include <cstdio>
14 #include <algorithm>
15 #include <iostream>
16 #include <sstream>
17 #include <cstring>
18 #include <cmath>
19 #include <string>
20 #include <vector>
21 #include <queue>
22 #include <deque>
23 #include <stack>
24 #include <list>
25 #include <map>
26 #include <set>
27 #include <bitset>
28 #include <cstdlib>
29 #include <ctime>
30 using namespace std;
31 
32 #define lson l, mid, rt << 1
33 #define rson mid + 1, r, rt << 1 | 1
34 typedef long long ll;
35 const int MAXN = 1e3 + 10;
36 const int INF = 0x3f3f3f3f;
37 const int MOD = 1e9 + 7;
38 char str[MAXN];
39 int dp[MAXN][MAXN];
40 bool vis[130];
41 
42 int main(void)    {     //UVA 11552 Fewest Flop
43     int T;  scanf ("%d", &T);
44     while (T--) {
45         int k;  scanf ("%d%s", &k, str + 1);
46         int len = strlen (str + 1);
47         memset (dp, INF, sizeof (dp));
48         for (int i=1; i<=len/k; ++i)    {
49             memset (vis, false, sizeof (vis));
50             for (int j=(i-1)*k+1; j<=i*k; ++j)  {
51                 vis[str[j]] = true;
52             }
53             int chunk = 0;
54             for (int j='a'; j<='z'; ++j)    {
55                 if (vis[j])    chunk++;
56             }
57             if (i == 1) {
58                 for (int j=1; j<=k; ++j)    {
59                     dp[i][j] = chunk;
60                 }
61                 continue;
62             }
63             for (int j=1; j<=k; ++j)    {
64                 int last = (i - 1) * k + j;
65                 for (int l=1; l<=k; ++l)    {
66                     int pre = (i - 2) * k + l;
67                     if (vis[str[pre]] && (chunk == 1 || str[pre] != str[last]))  {
68                         dp[i][j] = min (dp[i][j], dp[i-1][l] + chunk - 1);
69                     }
70                     else    dp[i][j] = min (dp[i][j], dp[i-1][l] + chunk);
71                 }
72             }
73         }
74 
75         int ans = INF;
76         for (int i=1; i<=k; ++i)    {
77             ans = min (ans, dp[len/k][i]);
78         }
79         printf ("%d\n", ans);
80     }
81 
82     return 0;
83 }

?

轉載于:https://www.cnblogs.com/Running-Time/p/4711104.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/397704.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/397704.shtml
英文地址,請注明出處:http://en.pswp.cn/news/397704.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

多表聯合查詢

關聯數據庫字典表的多表聯合查詢 inner join…on 自動連接 需要用到表的所有信息時&#xff0c;可以用以下兩種方法 1) left join…on… 左連接 &#xff08;以左為準&#xff0c;右邊沒有NULL代替&#xff09; 2) right join…on… 右連接&#xff08;以右為準&#xff…

python elasticsearch update_使用python的elasticsearch部分更新

我有以下格式的elasticsearch文檔。我需要部分更新“x”字段并在其中添加python dict。{"_index": "gdata34","_type": "gdat","_id": "328091-72341-118","_version": 1,"_score": 1,"…

32位與64位注冊表

如果32位系統OFP的注冊表路徑是 HKEY_LOCAL_MACHINE\SOFTWARE\Bohemia Interactive\ 那么在64系統里就應該是 HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Bohemia Interactive\ 多了一級Wow6432Node轉載于:https://www.cnblogs.com/zhang-pengcheng/p/4712135.html

http 請求頭和響應頭

客戶端發送請求過程帶著的數據&#xff1a; 1.請求地址 2.請求方式 3.請求頭 request headers 4.請求參數 https://www.juhe.cn/ 130.... 1a2b....pei 服務端響應給客戶端的信息&#xff1a; 1.響應內容 2.響應報文/響應頭部 response headers a 響應頭 b 響應體 3.http狀…

[算法]-排序算法之希爾排序

希爾排序算法思想 希爾排序的實質就是分組插入排序&#xff0c;該方法又稱縮小增量排序.基本思想是&#xff1a;先將整個待排元素序列分割成若干個子序列&#xff08;由相隔某個“增量”的元素組成的&#xff09;分別進行直接插入排序&#xff0c;然后依次縮減增量再進行排序&a…

python tkinter button顏色變不了_tkinter多按鈕顏色變化

我使用tkinter創建一個8x8按鈕矩陣&#xff0c;當按下單個按鈕時&#xff0c;它會添加到最終列表中(例如finalList((0,0)&#xff0c;(5,7)&#xff0c;(6,6)&#xff0c;…)&#xff0c;允許我快速創建8x8(x&#xff0c;y)坐標圖像。我已經創建了一個帶有按鈕的窗口&#xff0…

應用spss可靠性分析軟件

問卷調查的可靠性分析 一、概念&#xff1a; 信度是指依據測驗工具所得到的結果的一致性或穩定性&#xff0c;反映被測特征真實程度的指標。一般而言&#xff0c;兩次或兩個測驗的結果愈是一致。則誤差愈小&#xff0c;所得的信度愈高&#xff0c;它具有下面特性&#xff1a;1、…

springmvc中的單例問題

1&#xff0c;springmvc實際上是基于一個叫做DispatcherServlet的servlet的。servlet按照以往的學習經驗&#xff0c;他是單事例多線程的。 Servlet生命周期 1.裝載Servlet。這項操作一般是動態執行的。然而&#xff0c;Server通常會提供一個管理的選項&#xff0c;用于在Serve…

設計模式 -- 亨元模式(FlyWeight Pattern)

用來盡可能減少內存使用量&#xff0c;適用于存在大量重復對象的場景&#xff0c;達到對象共享&#xff0c;避免創建過多對象的效果&#xff0c;提升性能&#xff0c;避免內存溢出。 定義&#xff1a; 使用共享對象有效支持大量細粒度對象。 適用場景&#xff1a; 系統中存在大…

python3.6使用mysql_Python之——Python3.6連接MySQL

只安裝了Python是不能連接數據庫的&#xff0c;還要安裝Python連接MySQL的相關類庫&#xff0c;Python2.7連接MySQL的類庫很多&#xff0c;MySQL官方最新支持的Python為Python3.4.&#xff0c;如下圖所示&#xff1a;那么&#xff0c;在Python3.6上如何實現連接MySQL的功能呢&a…

android解析json

android2.3提供的json解析類 android的json解析部分都在包org.json下&#xff0c;主要有以下幾個類&#xff1a; JSONObject&#xff1a;可以看作是一個json對象 JSONStringer&#xff1a;json文本構建類 JSONArray&#xff1a;可以看作是json的數組 JSONTokener&#xff1a;js…

MVVM模式于MVP模式

MVC、MVP、MVVM這些模式是為了解決開發過程中的實際問題而提出來的&#xff0c;目前作為主流的幾種架構模式而被廣泛使用。 一.MVP模式(Model-View-Presenter):傳統的開發是MVP模式(例如jquery) MVP是把MVC中的Controller換成了Presenter&#xff08;呈現&#xff09;&#xff…

HUNAN 11560 Yangyang loves AC(二分+貪心)

http://acm.hunnu.edu.cn/online/?actionproblem&typeshow&id11560&courseid0 題意&#xff1a;總共有n天,每天yangyang都需要一個快樂值,有m個隊友,每個隊友都會給陽陽一個快樂值(為2的冪),并且只能給一次,如果某一天隊友給的快樂值達到yangyang需要的快樂值那么…

BrowserSync開發利器

2019獨角獸企業重金招聘Python工程師標準>>> 大大節省開發時間。安裝使用簡單。使用步驟&#xff1a; 1、nodejs環境 安裝 2、在項目中使用npm安裝到本項目 3、對要監聽的文件執行響應命令 官網更詳細&#xff1a;http://www.browsersync.cn/#install 原理&#xf…

python字符串解析_Python-字符串解析-正則-re

正則表達式特殊字符序列&#xff0c;匹配檢索和替換文本普通字符 特殊字符 數量&#xff0c;普通字符用來定邊界更改字符思路字符串函數 > 正則 > for循環元字符  匹配一個字符# 元字符大寫&#xff0c;一般都是取小寫的反1. 0~9 整數          \d    …

algorithm -- 選擇排序

選擇排序是《導論》第一章課后習題&#xff0c;仿照插入排序&#xff0c;再次運用循環不變式來證明下算法的正確性&#xff0c;C 源碼&#xff1a; // 交換函數 void swap( int& a, int& b ) {a a^b;b a^b;a a^b; } void selectSort( int *arr, int count ) {if( a…

OD 完美走位

題目描述&#xff1a; 在第一人稱射擊游戲中&#xff0c;玩家通過鍵盤的A、S、D、W四個按鍵控制游戲人物分別向左、向后、向右、向前進行移動&#xff0c;從而完成走位。假設玩家每按動一次鍵盤&#xff0c;游戲人物會向某個方向移動一步&#xff0c;如果玩家在操作一定次數的鍵…

layui upload 后臺獲取不到值

后臺獲取不到值方法一&#xff1a; <script>layui.use(upload, function () {var upload layui.upload;//執行實例var uploadInst upload.render({elem: #test1 //綁定元素, url: /Home/UploadFiles //上傳接口, field: "fileNames" //添加這個屬性與后臺…

ueeditor無法上傳圖片_百度ue文本編輯器開發中無法上傳圖片

第一次發文&#xff0c;好緊張呀&#xff0c;不知道會不會沒人看。之前用ue遇到了一些坑&#xff0c;沒人看就當自己記錄了筆記。第一次用&#xff0c;總是會遇到問題&#xff0c;可以先查看下百度ue的演示http://ueditor.baidu.com/website/onlinedemo.html和API http://fex.b…

SQL 語句優化--IN語句優化案例

為什么80%的碼農都做不了架構師&#xff1f;>>> 今天客戶系統升級&#xff0c;通過DMVs性能分析查了一下&#xff0c;升級后發現一個語句執行時間比較長&#xff0c;執行語句要好幾秒鐘&#xff0c;調出語句如下&#xff1a; select distinct field003 from ufi2j0…