1. 程式人生 > >NOIP2014提高組模擬題 8.9

NOIP2014提高組模擬題 8.9

一、最大配對

題意:給兩個序列,要求選k組,每組從兩個序列中各選一個數,要使各組數的差的和最大。

小論:兩個序列分別排序。每次用一個序列的最大的減另一個序列的最小的。

當時情況:估計100分,結果50分。雖然題目有提醒答案可能超過2^31-1,我也看到了,但想著等下打完再改,於是我打著打著就忘了……最後掛了50分。實在不應該。這個慘痛的教訓告訴我們:以後碼程式碼時,發現錯漏要及時改正,或加個註釋提醒自己,以防悲劇的發生。好,就此打住。

二、旅行

題意:一組數a[1]..a[n]。可任意次交換相鄰的兩個數,但每次交換的較前的數,必須在前一次交換的較前的數的後面。要使最後交換後的序列每兩個相鄰的數的差的總和最小。

小論:DP(這題描述神似以前的某題,但方法迥乎不同。)我們可以發現,將第 i 個數一直換到第 j 個數,交換後的第i , i+1 , i+2 , ... , j-1與交換前的第i+1, i+2 , ... ,j 分別對應相同。也就是說,將第 i 個數換到第 j 個數,第 i ~ j-1個數間的相對位置沒發生變化,即這一段裡每兩個相鄰的數的差的總和不變 。於是我們可用s [ i ] 記錄【到第 i 個數不進行任何交換的答案】,也就是前 i 個數每相鄰兩數的差的總和。設f [ i , 0 ]為 第 i 個數到第n個數,第  i 個數不交換的最優解;f [ i , 1 ]為第 i 個數到第n個數, 第 i 個數交換的最優解。從n-1倒推到1。有f [ i , 0 ]=max(   f [ i +1,0]+| a [ i ]- a [ i+1] | , f [ i+1 ,1 ]+ | a [ i ]- a [ i+2 ] |  );(因為如果i+1 個數交換的話,第i+1個數會變成原來的第 i+2 個數)。

對於f [ i ,1 ],我們列舉它交換到的位置  j ,用min( f [ j+1 ,0]+| a[ i ]-a[ j] |  + | a[ i ]-a[ j+1 ] | + s[ j ]- s[ i+1 ], f[ j+1 ,1]+ | a[ i ]- a[ j] | +  | a[ i ]-a[ j+2 ] |+s[ j ]-s[ i+1 ]) 來更新f [i , 1]。

注意方面:臨界位置的處理。對於j=n 和j=n-1 的情況,明顯不用加上a[ i ]和a[ j+1 ]那坨玩意的比較了。

當時情況:估計20分,實際20分。之前打出了個dp,最後1小時又想了想發現之前的想法是錯的。最後只能交了個暴力上去。

三、資源勘探

題意:給出一個n*m 的矩陣,B[i, j]表示僅包含前i行與前j列的子矩陣有多少個數字恰好出現一次,那麼你所要輸出所有B[i, j]之和mod 19900907

小論:設f[i,1]為數i橫座標的最小值,f[i,2]為數i橫最標的次小值(一開始都是m+1)f[i,3]為數i最近出現的行數。從(11)掃到(nm)。在第j行掃到一個數i,在答案中增加(f[i,2]-f[i,1])*(j-f[i,3])(因為在縱座標為f[i,3]~j-1,橫座標從f[i,1]~f[i,2]-1的矩陣中,第i個數都只出現過一次),並更新f[i]。最後掃一遍每個數更新答案(因為最後一次更新的還沒算)。

當時情況:估計30分,實際20分。以為又是dp,想了半天沒想出來,浪費了大量時間,仍然只能上交暴力。

四、排列統計

題意:對於給定的一個長度為n的序列{B[n]},問有多少個序列{A[n]}對於所有的i滿足:A[1]A[i]i個數字中有恰好B[i]個數字小等於i。其中{A[n]}1n的一個排列,即1nn個數字在序列A[I]中恰好出現一次。(原諒我語文不好不知如何描述於是把題目描述搬運了過來。)

小論:用一個矩陣表示一個序列A

比如

0 0 1 0 0

0 1 0 0 0

0 0 0 0 1

1 0 0 0 0

0 0 0 1 0

表示 32514

B[i]即表示以(1,1)為左上角,(i,i)為右下角的矩陣中1的個數。可以發現原來那個大矩陣是由n-1個反的’L’形與(1,1)組成的。對於B[i]-B[i-1],

如果它為1:則可以在第i-1’L’形的格子中選一個填1。由於大矩陣每行每列最多隻有11,所以這個’L’形中可以選(i*2–1–b[i-1])個格子填1

如果它為2:則可以在第i-1’L’形的格子中選兩個填2。而不可能在第(i , i )上填1(如果填了,剩下一個1無論填在哪都會與其在同一行或同一列)。所以方案數為(i – 1– b[i-1]^2

如果它為0:不管它。

如果它大於2:不可能。

最後把方案乘起來就行。由於答案很大,所以需使用高精度。

當時情況:估計30分,實際30分。第三題浪費了大量時間,使這題基本上沒多少時間思考,直接打了暴力。

總結:這套模擬題充分暴露了自己的問題:貪快貪多。第一題打完後沒好好檢查就不管了,想著要趕緊打完後面的題,多拿些分。可後面的題卻怎麼也想不到正解,對著題目乾瞪眼半天,最後也只能交個暴力上去,而第一題本能AC,反而因為自己的疏漏跪了。今後做題要改變策略,先把會做的、胸有成竹的題100%拿下,不留缺漏。對於暫時想不出正解的題,換個思路(就算掛也不要吊死在一棵樹上),或者暫時放一放,做做後面的題。這樣方能發揮出自己的正常水平,不留遺憾。

相關推薦

NOIP2014提高模擬 8.9

一、最大配對 題意:給兩個序列,要求選k組,每組從兩個序列中各選一個數,要使各組數的差的和最大。 小論:兩個序列分別排序。每次用一個序列的最大的減另一個序列的最小的。 當時情況:估計100分,結果50分。雖然題目有提醒答案可能超過2^31-1,我也看到了,但想著等下打完再改

NOIP2014提高模擬8.9

#include #include struct ecc{ int se,fi,ln,la; }b[1110*1100]; int a[1101][1101],n,m,i,j,k,g[1210*1200],tot;//g為連結串列頭指標,b.se為次小值,b.fi為最小值,b.ln行號,b.la為上一次

NOIP2018提高模擬(五)

一個 con mat space 特殊 pen prime pri print 字符串(string) Description 小林與亮亮正在做一個遊戲。小林隨意地寫出一個字符串,字符串只由大寫 字母組成,然後指定一個非負整數 m,亮亮可以進行至多 m 次操作,每次操作

jzoj 5850.【NOIP提高模擬2018.8.25】e 可持久化線段樹+lca

Description Input Output Data Constraint 分析: 最小連通塊可以看作是所有點到他們的lcalca路徑的並集,因為是取最小值,所以重複的不會有貢獻。 我們對這棵樹建可持久化線段樹,每個點的線段樹相

jzoj 5849.【NOIP提高模擬2018.8.25】d 排序+權值線段樹

Description Input Output Data Constraint 分析: 所有矩陣的交集最大面積顯然為min(xi)∗min(yi)min(xi)∗min(yi

[jzoj 5770]【2018提高模擬A8.6】可愛精靈寶貝 (區間dp)

以及 stdin isdigit char spa ios 遺憾 etc 時間 傳送門 Description Branimirko是一個對可愛精靈寶貝十分癡迷的玩家。最近,他閑得沒事組織了一場捉精靈的遊戲。遊戲在一條街道上舉行,街道上一側有一排房子,從左到右房子標號由1到

[JZOJ5817] 【NOIP提高A模擬2018.8.15】 抄代碼

esp pre col font getch tput lin esc out Description J 君是機房的紅太陽,每次模擬她總是 AK 虐場。然而在 NOIP2117 中,居然出現了另一位 AK 的選手 C 君! 這引起了組委會的懷疑,組委會認為 C 君有

[JZOJ5818] 【NOIP提高A模擬2018.8.15】 做運動

put stdin output 天氣 如果 char 使用 fields 快速 Description 一天,Y 君在測量體重的時候驚訝的發現,由於常年坐在電腦前認真學習,她的體重有了突 飛猛進的增長。 幸好 Y 君現在退役了,她有大量的時間來做運動,她決定每天從

【JZOJ5821】【NOIP提高A模擬2018.8.16】 手機信號(set/權值線段樹)

solution 線段 插入 函數 efi putc 所有 water 打了 Problem Hint Solution 這道題就是一道考驗你細節處理的題。 我們用形如(l,r,v)的三元組表示一個區間的信號站,意為從l到r每隔v有一個信號站。 考慮用set/權值線段

JZOJ_100029. 【NOIP2017提高A模擬7.8】陪審團 (Standard IO)

qsort sta begin tput 關心 關鍵字 int 最有 制度 Description 陪審團制度歷來是司法研究中的一個熱議話題,由於陪審團的成員組成會對案件最終的結果產生巨大的影響,訴訟雙方往往圍繞陪審團由哪些人組成這一議題激烈爭奪。 小 W 提出了

NOIp2014提高初賽錯簡析

roi 全部 del 軟件 又是 http 排序 lock 最小值 總體分析 \(89pts\),粗略來看選擇題錯的比較多,\(-6pts\)。同時又是尿性的填空殺扣了\(5pts\)。 不過後面的兩大題全對了還是可喜可賀 錯題精析 單項選擇T8 編譯器的主要功能是( )

[JZOJ 5852] [NOIP2018提高模擬9.6] 相交 解題報告 (倍增+LCA)

題目連結: http://172.16.0.132/senior/#main/show/5852 題目: 題目大意: 多組詢問,每次詢問樹上兩條鏈是否相交 題解: 兩條鏈相交併且僅當某一條鏈的兩個端點的LCA在另一個端點上 對於每次詢問,我們分別處理出兩條鏈端點的LCA,通過倍增判斷是否存在

2018年9月15日提高模擬賽 T1 購物

大意 給定nn件商品,現在你有kk張降價券,可以讓aiai降至bibi在購買金額不超過mm最多能購買的物品數量 思路 首先顯然可以發現,用降價券是永遠比不用要好的,所以我們在一開始優先選擇

2018年9月15日提高模擬賽 T2 拆網線

大意 給定一張nn個點,n−1n−1條邊的無向聯通圖,現要在圖中至少有一個由mm個點組成的聯通分量中的點數必須不小於2的情況下,割去儘量多的邊。 思路 樹形dpdp 一條邊可以用兩隻企鵝

2018年9月15日提高模擬賽 T3 密室

大意 給定一些點的先決條件,問到達終點至少需要經過幾個點 思路 可以把點與點之間的距離看作1,然後跑最短路 需要注意的事判斷的過程中弱國一個一個去判斷速度太過抵消,可以用狀態壓縮的方法表示一種狀態,正常轉移即可 程式碼 #incl

2018年9月15日提高模擬賽 總結

我好菜啊。。。 所有的題都不會做呀,只會打暴力呢。。。 從此次解題報告開始,以後的解題報告中將會新增賽時理解程度與賽後理解程度(一天內) 具體分為C,C+,B-,B,B+,A-,A,A+,S,

2018年9月22日提高模擬賽 T1 遨遊

大意 給定一些城市間的路費,先要找出最大的LLL,同時R≥LR\geq LR≥L並且RRR要最小,使得sss到ttt間經過的城市可以免費 思路 在題目中並沒有明確給出所有城市間的路費,因為其還需要考慮優惠的情況,所以我們先預處理所有城市的預處理情況,再分別二分

2018年9月22日提高模擬賽 T2 今天你AK了嗎

大意 求nnn的全排列的第kkk個 思路 裸的逆康拓展可以直接拿60,套上高精度可拿70(優化可到80,甚至90) 但是,我們也可以通過一些公式來優化 kn!=kn−1n\frac{k}{n!}=\frac{\frac{k}{n-1}}{n}n!k​=nn−1

2018年9月22日提高模擬賽 T3 簡單數學題

大意 對於一個正整數NNN,存在一個正整數TTT(0&lt;T&lt;N0&lt;T&lt;N0<T<N),使得N−T/2N−T\frac{N-T/2}{N-