luogu P2470 [SCOI2007]壓縮

傳送門

dalao們怎么狀態都設的兩維以上啊?qwq 完全可以一維狀態的說

\(f[i]\)為前綴i的答案,轉移就枚舉從前面哪里轉移過來\(f[i]=min(f[j-1]+w(j,i))(j\in [1,i])\)

現在要知道\(w(i,j)\)怎么寫,也就是區間\([i,j]\)的最小長度(要求區間最多只能在開頭有一個W),首先不壓縮的長度就是原長度,然后壓縮的話先要在開頭加W,然后每次壓縮一個最長的可以拆成兩個相同串的前綴,壓縮完后長度會加上1(后面接R),減去那個前綴的一半長度,然后那個前綴會縮掉后一半.把這些所有的長度取min就是這個區間的答案.這個壓縮過程可以結合樣例理解

注意開頭是默認加好了W的

細節詳見代碼

#include<bits/stdc++.h>
#define LL long long
#define il inline
#define re register
#define uLL unsigned long longusing namespace std;
const int N=55;
il int rd()
{int x=0,w=1;char ch=0;while(ch<'0'||ch>'9') {if(ch=='-') w=-1;ch=getchar();}while(ch>='0'&&ch<='9') {x=(x<<3)+(x<<1)+(ch^48);ch=getchar();}return x*w;
}
char cc[N];
uLL ha[N],bs[N];
il uLL hh(int l,int r){return ha[r]-ha[l-1]*bs[r-l+1];}
int n,f[N];
il int w(int l,int r)
{int an=r-l+1+(l==1),nw=1; //左端點為1,由于開頭加好了W,所以這里不壓縮長度先加上1平衡壓縮要加上的Wwhile(l<r){int mid=(l+r)>>1;while(l<r&&hh(l,mid)!=hh(mid+1,r)) --r,++nw,mid=(l+r)>>1;if(l>=r) break;++nw,r=mid;an=min(an,nw+r-l+1); //代價也可以看做M的個數+R的個數+后面的一些零碎字母+前半截前綴長度}return an;
}int main()
{scanf("%s",cc+1),n=strlen(cc+1);bs[0]=1;for(int i=1;i<=n;++i) bs[i]=bs[i-1]*233,ha[i]=ha[i-1]*233+cc[i],f[i]=i+1;for(int i=1;i<=n;++i)for(int j=1;j<=i;++j)f[i]=min(f[i],f[j-1]+w(j,i));printf("%d\n",f[n]-1);  //把開頭沒有的W減掉
}

轉載于:https://www.cnblogs.com/smyjr/p/10353647.html

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

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

相關文章

服務器選擇重裝系統,云服務器重裝系統選擇

云服務器重裝系統選擇 內容精選換一換將外部鏡像文件注冊成云平臺的私有鏡像后&#xff0c;您可以使用該鏡像創建新的云服務器&#xff0c;或對已有云服務器的系統進行重裝和更換。本節介紹使用鏡像創建云服務器的操作。您可以按照通過鏡像創建云服務器中的操作指導創建彈性云服…

T-Mobile美國加速開展5G實驗:28GHz頻段成為新寵

據日經社報道&#xff0c;T-Mobile美國公司正在加速開展5G相關工作&#xff0c;在過去的一個月中動作頻頻。 T-Mobile美國與三星電子美國公司上月初共同宣布&#xff0c;將在今年下半年使用28GHz頻段和配備三星的波束成形技術的5G驗證實驗系統&#xff0c;開展室外5G移動通信的…

軟件項目可行性分析定義_如何定義最低可行產品

軟件項目可行性分析定義by George Krasadakis通過喬治克拉薩達基斯(George Krasadakis) 如何定義最低可行產品 (How to define a Minimum Viable Product) 從概念轉變為正確定義的MVP (Moving from a concept to a properly defined MVP) The Minimum Viable Product, althoug…

JavaSE第十五天20160823

線程 一、JAVA中創建線程的兩種方法&#xff1a; 1.繼承java.lang.Thread類。 2.實現java.lang.Runnable接口。 3.在JAVA中Thread類實現了Runnable接口&#xff0c;并且Thread類中定義了許多與線程相關的屬性與方法。 二、run():線程體&#xff0c;線程將要執行的代碼。 三、線…

dao層mysql復合語句_在業務中是使用多個Dao組合好,還是一個鏈接查詢好?

問題描述假如目前有一個查詢用戶詳情的接口用戶基礎表關聯了很多用戶其他信息的表&#xff0c;現在要把所有查詢出來&#xff0c;是使用多個dao在service中組合&#xff0c;還是直接鏈接查詢好示例代碼用戶表(user_base)用戶信息表1(user_info_1)用戶信息表2(user_info_2)用戶信…

九陰真經戰無不勝服務器位置,九陰真經各門派武功風水寶地分類及坐標大全

尋得一處風水寶地可以養神還可以修煉武功&#xff0c;九陰真經中的各大門派和全部武功適合修煉的寶地都在哪里呢&#xff1f;都分為哪幾類&#xff0c;具體坐標是什么&#xff1f;1、風水寶地作用&#xff1a;九陰真經風水寶地共分山、水、洞、林、雪、市六種&#xff0c;分別對…

Gartner Q2服務器市場報告5大要點

服務器場景調查 根據市場研究公司Gartner的調查報告&#xff0c;第二季度Dell的服務器市場取得了豐富的成果&#xff0c;HPE的市場份額比去年同期略有下降&#xff0c;但仍保留了其全球服務器市場第一的位置。 Gartner表示&#xff0c;全球服務器銷售收入在第二季度與去年同期相…

MySQL實戰面試題_Mysql實戰面試題

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓一、索引B Tree 原理1. 數據結構B Tree 指的是 Balance Tree&#xff0c;也就是平衡樹。平衡樹是一顆查找樹&#xff0c;并且所有葉子節點位于同一層。B Tree 是基于 B Tree 和葉子節點順序訪問指針進行實現&#xff0c;它具有 B T…

Redux有何優點?

by Justin Falcone賈斯汀法爾科內(Justin Falcone) Redux有何優點&#xff1f; (What’s So Great About Redux?) Redux elegantly handles complex state interactions that are hard to express with React’s component state. It is essentially a message-passing syste…

python基礎——使用模塊

python基礎——使用模塊 Python本身就內置了很多非常有用的模塊&#xff0c;只要安裝完畢&#xff0c;這些模塊就可以立刻使用。 我們以內建的sys模塊為例&#xff0c;編寫一個hello的模塊&#xff1a; #!/usr/bin/env python3 # -*- coding: utf-8 -*- a test module __author…

力扣——鍵盤行

給定一個單詞列表&#xff0c;只返回可以使用在鍵盤同一行的字母打印出來的單詞。鍵盤如下圖所示。 示例&#xff1a; 輸入: ["Hello", "Alaska", "Dad", "Peace"] 輸出: ["Alaska", "Dad"]注意&#xff1a; 你可…

網絡空間技術實驗室:打造信息安全技術培育平臺

從PC互聯網到移動互聯網&#xff0c;音視頻、圖片越來越成為大眾關注的熱點。過去&#xff0c;人們習慣于在網絡瀏覽文字新聞&#xff1b;今天&#xff0c;人們對于視頻新聞、圖片新聞的接受度更高。 網絡的發展無疑給人們帶來了便利。但同時&#xff0c;一個不可否認的事實是&…

如何對mysql做物理備份_如何創建物理MySQL備份

前提條件在開始之前&#xff0c;確保你有一個有sudo權限的用戶和一個MySQL數據庫服務器。查找數據目錄使用root密碼登錄到MySQL服務器。$ sudo mysql -u root -p下面的SQL顯示MySQL實例的數據目錄。mysql> select datadir;輸出類似于-----------------| datadir |----------…

freecodecamp_1000天的freeCodeCamp

freecodecampToday, the freeCodeCamp community turns 1,000 days old. We’ve accomplished a lot together in that time:今天&#xff0c;freeCodeCamp社區已經有1000天的歷史了。 到那時我們已經共同完成了很多工作&#xff1a; 6,000 campers have gotten their first d…

如何正確遍歷刪除List中的元素,你會嗎?

遍歷刪除List中的元素有很多種方法&#xff0c;當運用不當的時候就會產生問題。下面主要看看以下幾種遍歷刪除List中元素的形式&#xff1a; 1.通過增強的for循環刪除符合條件的多個元素 2.通過增強的for循環刪除符合條件的一個元素 3.通過普通的for刪除刪除符合條件的多個元素…

Jmeter 通過json Extracted 來獲取 指定的值的id

在沒有 精確或模糊查詢的接口時可以使用jmeter 獲取指定的值的ID import java.lang.String ; String getTargetName"iphone632g"; //判讀相應結果中是否包含指定值&#xff1a;iphone632g boolean containsCategoryprev.getResponseDataAsString().contains(getTarge…

mysql 結果保存到文件_將MySQL中sql運行結果保存到文件

將MySQL中sql運行結果保存到文件有兩種方法。方法一&#xff1a;在mysql>提示符中使用teemysql> tee output.txtLogging to file output.txtmysql> noteeOutfile disabled.或者mysql> \T output.txtLogging to file output.txtmysql> \tOutfile disabled.這個類…

獲取電腦和操作系統信息-uname

用法&#xff1a;uname [選項]...輸出一組系統信息。如果不跟隨選項&#xff0c;則視為只附加-s 選項。-a, --all 以如下次序輸出所有信息。其中若-p 和-i 的探測結果不可知則被省略&#xff1a;-s, --kernel-name 輸出內核名稱-n, --nodename 輸出網絡節點…

MobileSpace-關于我的激情的故事

by Monte Thakkar通過Monte Thakkar MobileSpace-關于我的激情的故事 (MobileSpace — A story about my passions) 我發現&#xff0c;學習和教授iOS開發的旅程 (My journey to discovering, learning, and teaching iOS development) “Let this be the first thing you hea…

Do you have an English name? 你有英文名嗎?

文中提到的所有人名都是虛構的&#xff0c;如有雷同&#xff0c;純屬巧合。當然&#xff0c;你的洋名兒也可能是德文、法文、意大利文&#xff0c;等々々々。 全球化時代&#xff0c;和老外的交流也多了。“高端”的程序員想要進歐美系外企&#xff0c;想要出國看世界&#xff…