NOIP2014模擬11 3 噪音

2022-08-18 05:06:12 字數 1100 閱讀 5383

fj有m個牛棚,編號1至m,剛開始所有牛棚都是空的。fj有n頭牛,編號1至n,這n頭牛按照編號從小到大依次排隊走進牛棚,每一天只有一頭奶牛走進牛棚。第i頭奶牛選擇走進第p[i]個牛棚。由於奶牛是群體動物,所以每當一頭奶牛x進入牛棚y之後,牛棚y裡的所有奶牛們都會喊一聲「歡迎歡迎,熱烈歡迎」,由於聲音很大,所以產生噪音,產生噪音的大小等於該牛棚裡所有奶牛(包括剛進去的奶牛x在內)的數量。fj很討厭噪音,所以fj決定最多可以使用k次「清空」操作,每次「清空」操作就是選擇乙個牛棚,把該牛棚裡所有奶牛都清理出去,那些奶牛永遠消失。「清空」操作只能在噪音產生後執行。現在的問題是:fj應該選擇如何執行「清空」操作,才能使得所有奶牛進入牛棚後所產生的噪音總和最小?

發現,每個牛棚產生的噪音互相之間沒有關係,所以我們分開做。

我們知道對於乙個牛棚,如果不進行「清空」操作,每次有牛進入的牛棚所產生的噪音將會是1、2、3、4……。

如果清空一次,當清空操作的位置在二等分點的時候,產生的噪音最小,

如果清空兩次,當清空操作的位置在三等分點的時候,產生的噪音最小,

……如此類推,

設\(f[i][j]\),表示第i個牛棚,清空j次的最小值,這個直接計算。

再設\(ff[i]\),表示總共清空i次的最小值。

類似於揹包,乙個乙個牛棚加入。

#include #include #include #include #include #include #include const long long maxlongint=2147483647;

const long long mo=1000000007;

const long long n=505;

using namespace std;

long long a[n],f[n][n],n,m,k,ff[n];

long long val(long long x)

int main()

for(long long i=1;i<=m;i++) }

for(long long i=1;i<=m;i++) }

printf("%lld",ff[k]);

}

NOIP2014模擬11 3 蛋糕

今天是bessie的生日,他買了乙個蛋糕和朋友們一起分享,蛋糕可以看成是乙個r行c列的 共有r c個格仔,每個格仔都有乙個0至9的數字,表示該格仔蛋糕擁有的巧克力。現在bessie要把蛋糕橫的切3刀再豎的切3刀,由於bessie刀法厲害,所以每個格仔蛋糕都是完整的,顯然蛋糕會被切成16份,然後bes...

noip2014 螺旋矩陣 (模擬)

p1913螺旋矩陣 accepted 標籤 noip普及組2014 乙個 n 行 n 列的螺旋矩陣可由如下方法生成 從矩陣的左上角 第 1 行第 1 列 出發,初始時向右移動 如果前方是未曾經過的格仔,則繼續前進,否則右轉 重複上述操作直至經過矩陣中所有格仔。根據經過順序,在格仔中 依次填入 1,2...

NOIP2014 比例簡化 模擬

輸入檔案 ratio.in輸出檔案 ratio.out簡單對比 時間限制 1 s 記憶體限制 256 mb 在社交 上,經常會看到針對某乙個觀點同意與否的民意調查以及結果。例如,對某一觀點表示支援的有1498人,反對的有902人,那麼贊同與反對的比例可以簡單的記為1498 902。不過,如果把調查結...