noip模擬賽 遭遇

2022-05-01 07:54:11 字數 1615 閱讀 4555

分析:暴力挺好打的,對於前30%的資料神搜,hi相同的資料將所有的建築按照c從小到大排序,看最多能跳多少,ci=0的資料將所有的建築按照h從小到大排序,列舉起點和終點,看能否跳這麼多,取個max就可以了.這樣70分就到手了.

部分分的提示還是比較明顯的,要消除乙個引數的影響,那麼就按照h從小到大排序,顯然只有可能順著跳過城市,不能跳過去又跳回來.那麼就是乙個比較簡單的dp了:f[i][j]表示跳了i次,最後一次跳到j的最小花費,轉移的話列舉j之前的k就能轉移了,最後倒敘列舉i看哪乙個f[i][j]<=t就可以了.

多個引數有影響的常見策略是消除乙個引數的影響,常見的辦法就是排序,如果乙個點不能經過多次,那麼就想乙個辦法讓它強行不經過這個點.

暴力:

#include #include 

#include

#include

#include

using

namespace

std;

int n, t, ans, vis[1010

];bool flag1 = true, flag2 = true

;struct

node

e[55

];bool

cmp1(node a, node b)

bool

cmp2(node a, node b)

void dfs(int u, int sum,int

tot)

}}int

main()

for (int i = 1; i <= n; i++)

scanf("%d

", &t);

if (n <= 5 || (!flag1 && !flag2))

printf(

"%d\n

", ans);

}else

if(flag1)

printf(

"%d\n

", ans - 1

); }

else

ans = max(ans, j - i + 1

); }

printf(

"%d\n

", ans - 1

); }

return0;

}

正解:

#include #include 

#include

#include

#include

using

namespace

std;

intn,t;

int f[60][60

];struct

node

e[60

];bool

cmp(node a, node b)

intmain()

printf(

"0\n");

return0;

}

NOIP2016複賽模擬賽2 遭遇戰

問題描述 有一n n矩陣,左上角為 0,0 右下角為 n 1,n 1 有兩個人,給出初始位置及方向,速度相同,兩人都不會走自己走過的路,當兩人向乙個方向前進時會一直走到不能走為止,若不能走,玩家a會右轉,玩家b會左轉,若完全不能動時則停止,問兩人相遇的座標 不能相遇則輸出 1 輸入 第一行t,表示t...

noip模擬賽 密碼

表示沒看懂演算法3 問題描述 有壓迫,就有反抗。mored的寵物在法庭的幫助下終於反抗了。作為乙隻聰明的寵物,他打算把魔法使mored的魔法書盜去,奪取mored的魔法能力。但mored怎麼會讓自己的魔法書輕易地被盜取?mored在魔法書上設定了乙個密碼鎖,密碼鎖上有乙個問題。施以斯臥鋪魔法吧,你有...

NOIP模擬賽 老師

題目描述 一座有n層的教學樓裡有一些學生,第i 0 i n 層有studentsi個學生。你被給定了乙個數k,如果第i層有x個學生,那麼這一層需要 x k 個老師。你可以調整每個學生的樓層,但是每個學生至多只能調整一層,就是說第i層的學生只能去第i 1層 如果有的話 第i層 第i 1層 如果i 1 ...