檔案排版4 14

2021-08-18 20:00:44 字數 1735 閱讀 3179

寫電子郵件是有趣的,但不幸的是經常寫不好看,主要是因為所有的行不一樣長,你的上司想要發排版精美的電子郵件,你的任務是為他編寫乙個電子郵件排版程式。

完成這個任務最簡單的辦法是在太短的行中的單詞之間插入空格,但這並不是最好的方法,考慮如下例子:

this is the example you  are

actually considering.

假設我們想將第二行變得和第一行一樣長,靠簡單地插入空格則我們將得到如下結果:

this is the example you  are

actually        considering.

this  is  the  example   you

are  actually   considering.

當然,這必須對難看程度進行量化。因此我們必須給出單詞之間的空格的難看程度,乙個包含n個空格符的空白段,其難看程度值為(n-1)2

,程式的目的是使難看程度的總和最小化。例如,第乙個例子的難看程度是1+7*7=50,而第二個例子的難看程度僅為1+1+1+4+1+4=12。

輸出時,每一行的開頭和結尾處都必須是乙個單詞,即每行開頭和結尾處不能有空白。唯一例外的是該行僅有乙個單詞組成的情況,對於這種情況你可將單詞放在該行開頭處輸出,此時如果該單詞比該行應有的長度短則我們指定它的難看程度為500,當然在這種情況下,該行的實際長度即為該單詞的長度。

(單詞長度=n 難看程度為 0)

輸入

輸入檔案第一行是乙個整數n,表示該段要求達到的寬度,1<=n<=80。該段文章由乙個或多個單詞組成,單詞由ascii碼值為33到126(包含33和126)的字元組成,單詞與單詞之間用空格隔開(可能超過乙個)。單詞長度不會超過段落要求達到的寬度。一段文字所有單詞的總長度不會超過10000個字元,任何一行都不會超過100個字元,任何乙個單詞都在同一行內。

輸出

對於每個段落,找出使其難看程度最小的排版形式並輸出句子:「minimal badness is b.」,b是指按可能的最好排版形式會發生的難看程度值。注意排版後文字行數任意,多餘的空格也可刪除。

樣例

format.in

this is the example you  are

actually considering.

format.out

minimal badness is 12.

這是dp f[i]表示在第i個換行得到的最小的難看程度

#include#define int long long

#define n 1010

using namespace std;

int m,n,f[n],len[n];

char s[n];

inline int calc(int l,int r) //一行只有乙個的情況

int oo=m-(len[r]-len[l-1]);//總共的空格數

if(oo<(r-l))return 20021109;//空格不夠不存在這種情況,直接返回無限大

int a=oo/(r-l);//a是直接分配每個得到的空格(要盡量平均分配)

int b=oo-(r-l)*a;//b是分配後多出來的部分(b一定小於(r-l))

a-=1;

return 1ll*a*a*(r-l-b)+1ll*(a+1)*(a+1)*b;(好好推敲)

}signed main()

414 emacs dired mode多檔案標記

全部學習彙總 以前使用dired mode比較多的操作是刪除多個檔案,可以直接在不同檔案上按d,然後x統一執行。其他的也就是操作或者重新命名,簡單的操作其實還能夠滿足我的需求。今天接觸了乙個多檔案標記的方法,可以在檔案上按m標記,u取消。效果如下 標記成功之後,左邊增加了小星星。之後,可以進行批量的...

4 14 檔案系統

為了說明檔案鏈結的概念,先要介紹unix檔案系統的基本結構。同時,了解i節點和指向i節點的目錄項之間的區別也是很有益的。目前,正在使用的unix檔案系統有多種實現。例如,solaris支援多種不同型別的磁碟檔案系統 傳統的基於bsd的unix檔案系統 稱為ufs 讀 寫dos格式軟盤的檔案系統 稱為...

檔案排版(codevs 1300)

題目描述 description 寫電子郵件是有趣的,但不幸的是經常寫不好看,主要是因為所有的行不一樣長,你的上司想要發排版精美的電子郵件,你的任務是為他編寫乙個電子郵件排版程式。完成這個任務最簡單的辦法是在太短的行中的單詞之間插入空格,但這並不是最好的方法,考慮如下例子 this is the e...