NOIP模拟赛
T1
1.聰明的小偷
?(thief.pas/c/cpp)
【問(wèn)題描述】
從前有一個(gè)收藏家收藏了許多相同的硬幣,并且將它們放在了n個(gè)排成一排的口袋里,每個(gè)口袋里都裝了一定數(shù)量的硬幣。
這些硬幣價(jià)值不菲,自然引起不少人覬(ji,4)覦(yu,2),于是收藏家每天都會(huì)來(lái)檢查一次這n個(gè)口袋,首先他會(huì)先檢查每個(gè)口袋是不是都有硬幣,之后他會(huì)計(jì)算出第1個(gè)和第2個(gè)口袋的硬幣數(shù)量之和,第2個(gè)與第3個(gè)口袋的硬幣數(shù)量和,如此直到第n-1個(gè)與第n個(gè)口袋的硬幣數(shù)量之和,得到n-1個(gè)數(shù)的序列。
如果收藏家發(fā)現(xiàn)某個(gè)口袋沒(méi)有硬幣,或者他計(jì)算得到的序列較上一天相比有變動(dòng),那么收藏家就知道肯定有人動(dòng)了他的硬幣。
有一個(gè)聰明的小偷,他想在收藏家不知道的情況下偷走一些硬幣,為此,他不僅可以偷偷地從某個(gè)口袋中拿出一些硬幣,也可以將硬幣在口袋間任意移動(dòng),現(xiàn)在他想知道對(duì)于給定的n個(gè)口袋及對(duì)應(yīng)的硬幣數(shù)量,他最多能拿多少枚硬幣。
小偷是很聰明的,他早就算出來(lái)啦,但是他想考考作為徒弟的你……
?
【數(shù)據(jù)規(guī)模與約定】
????對(duì)于50%的數(shù)據(jù),有2≤n≤20,每個(gè)口袋中硬幣數(shù)量≤20。
????對(duì)于100%的數(shù)據(jù),有2≤n≤999,每個(gè)口袋中硬幣數(shù)量≤10000且為正整數(shù)。
?
貪心提,自己造了幾組數(shù)據(jù),連蒙帶猜找到規(guī)律就可以了
當(dāng)n為偶數(shù)時(shí),答案一定為 0,當(dāng) n為奇數(shù)時(shí),答案為所有編號(hào)為奇數(shù)的口袋中硬幣數(shù)量的最小值 -1。
注:n<=3時(shí)奇數(shù)也不行
?
?
?
T2
?
?
2.無(wú)名
?(noname.pas/c/cpp)
【問(wèn)題描述】
????這道題實(shí)在不知道該取什么名字比較好,于是就取了這個(gè)名字。
????給定一個(gè)長(zhǎng)度為n的正整數(shù)序列,你的任務(wù)就是求出至少需要修改序列中的多少個(gè)數(shù)才能使得該數(shù)列成為一個(gè)嚴(yán)格(即不允許相等)單調(diào)遞增的正整數(shù)序列,對(duì)序列中的任意一個(gè)數(shù),你都可以將其修改為任意的正整數(shù)。
?
【數(shù)據(jù)規(guī)模與約定】
對(duì)于30%的數(shù)據(jù),有1≤n≤10。
對(duì)于80%的數(shù)據(jù),有1≤n,T≤50,且輸入序列中每個(gè)數(shù)均不超過(guò)50。
對(duì)于100%的數(shù)據(jù),有1≤n≤50000,1≤T≤5000,輸入序列中每個(gè)數(shù)均為不超過(guò)1000000000(10^9)的正整數(shù),且每個(gè)測(cè)試點(diǎn)中T組數(shù)據(jù)對(duì)應(yīng)的n值總和不超過(guò)500000。
?
看到數(shù)據(jù)范圍就果斷選擇80分算法
80分:
DP
f[i][j] 代表前i個(gè)數(shù)最后一位為j時(shí)的最小改變策略
?
?
x 表示可以任意數(shù)變到的最大值
?
正解:
簡(jiǎn)單來(lái)說(shuō)就是:構(gòu)造序列b[i] = a[i] – i;答案即為序列總長(zhǎng)度減去B的最長(zhǎng)不下降子序列。
(nlogn)二分優(yōu)化lis
?
T3
?
?
3.服務(wù)
?(service.pas/c/cpp)
【問(wèn)題描述】
????一家公司為它在各地的用戶提供服務(wù),公司有三名負(fù)責(zé)這項(xiàng)工作的員工,分別編號(hào)為1,2,3,服務(wù)的地點(diǎn)有n個(gè),分別編號(hào)為1,2,3,...n,把從編號(hào)為p的服務(wù)地點(diǎn)直接到達(dá)編號(hào)為q的服務(wù)地點(diǎn)所需的移動(dòng)費(fèi)用記為C(p,q),顯然C(p,p)=0(停留在原地不需要費(fèi)用),但不保證對(duì)任意p,q均有C(p,q)=C(q,p)。
????初始時(shí)員工1在地點(diǎn)1,員工2在地點(diǎn)2,員工3在地點(diǎn)3,現(xiàn)在公司依次收到了L個(gè)服務(wù)請(qǐng)求,每個(gè)請(qǐng)求需要一名員工趕到其指定的地點(diǎn)進(jìn)行服務(wù),員工可以選擇直達(dá),也可以選擇經(jīng)過(guò)若干個(gè)服務(wù)地點(diǎn)中轉(zhuǎn),特別地,如果指派的員工已在當(dāng)前請(qǐng)求所在地,則該請(qǐng)求不需要任何移動(dòng)費(fèi)用即可被處理。
????出于公平起見(jiàn),所有請(qǐng)求必須按順序處理,這意味著即使一名員工在趕往當(dāng)前請(qǐng)求的途中經(jīng)過(guò)之后的請(qǐng)求所在的地點(diǎn),他也不可以先處理之后的請(qǐng)求,但是公司不限制每位員工趕往請(qǐng)求地點(diǎn)的路線,也允許一個(gè)服務(wù)地點(diǎn)有多名員工。
????你的任務(wù)就是對(duì)于這L個(gè)請(qǐng)求,找到一個(gè)服務(wù)方案(即對(duì)每個(gè)請(qǐng)求分配合適的員工去服務(wù)以及規(guī)劃移動(dòng)路線),使得三名員工提供服務(wù)的總移動(dòng)費(fèi)用最小。
?
【數(shù)據(jù)規(guī)模與約定】
????每個(gè)測(cè)試點(diǎn)5分,各個(gè)測(cè)試點(diǎn)數(shù)據(jù)范圍如下:
| 測(cè)試點(diǎn)編號(hào) | n | L |
| 1-3 | ? | ? |
| 4-6 | ? | ? |
| 7-10 | ? | ? |
| 11-14 | ? | ? |
| 15-17 | ? | ? |
| 18-20 | ? | ? |
????對(duì)于所有的測(cè)試點(diǎn),均有數(shù)據(jù)組數(shù),地點(diǎn)數(shù),給定的C矩陣主對(duì)角線上的數(shù)全部為0,且輸入數(shù)據(jù)中所有的數(shù)均為不超過(guò)2000的非負(fù)整數(shù)。
從考試開(kāi)始到結(jié)束都沒(méi)想過(guò)4維的DP
打了不知道多長(zhǎng)時(shí)間的暴力后 果斷放棄提交()
正解:
首先用Floyd求最短路。
4 維 DP f[k][i1][i2][i3] 代表做到第 k 個(gè)任務(wù)是3人在 i1 i2 i3 時(shí)的費(fèi)用。
5重循環(huán)。
優(yōu)化
因?yàn)橛腥蝿?wù),所以可已確定完成這個(gè)任務(wù)前后某個(gè)人的位置 完成第 k 個(gè)任務(wù)前一定有一個(gè)人在 b[k1-1] 的位置 完成第 k 個(gè)任務(wù)后一定有一個(gè)人在 p[k1] 的位置。所以就能剩一沖循環(huán)了(4重)。
因?yàn)榭梢源_定某個(gè)人的位置,所以可以再省略一維 i3。i1,i2都不到p[k1]的位值,i3一定就在;i1或 i2到 b[k1]的位值,i3一定就不在;
所以:并列3個(gè)核心
注:初始化f[0][1][2]=0;
b[0]=3;
?
轉(zhuǎn)載于:https://www.cnblogs.com/cylyz/p/9757264.html
總結(jié)
- 上一篇: 输卵管堵塞手术多少钱
- 下一篇: Can't create table..