2018 7 21NOIP模擬賽?解題報告

2022-04-30 05:00:09 字數 2313 閱讀 6878

題面

預計得分:70 + 60 + 30 = 160

實際得分:40 + 60 + 0 = 100

t1陣列開小了

t2比賽結束後5min ac

t3加了個記憶話搜尋wa了、、

zbq吊打std啊orz

此題$o(nlog)$做法:

乙個很顯然的思路:對每個做括號維護乙個大根堆,每次取最大的。

但是這樣有不優的情況,比如$()), 1, 3, 5$

那麼我們還需要對每個已經加入的右括號維護乙個小根堆。每次判斷是否替換掉更小的會更優

#include#include

#include

#include

#define ll long long

using

namespace

std;

const

int maxn = 2 * 1e5 + 10, inf =1e9;

inline

intread()

while(c >= '

0' && c <= '

9') x = x * 10 + c - '

0', c =getchar();

return x *f;

}int

n;priority_queue

mx;priority_queue

, greater >mi;

char

s[maxn];

inta[maxn];

intmain()

else

if(!mi.empty() && a[i] > mi.top()) ans -= mi.top(), mi.pop(), ans +=a[i], mi.push(a[i]);

}printf("%d

", ans);

return0;

}

很顯然每個位置就那麼幾種可能

直接暴力判斷就好,字首和優化

/*

60:直接bfs

*/#include

#include

#include

#define ll long long

using

namespace

std;

const

int maxn = 1e5 + 10, inf =1e9;

inline

intread()

while(c >= '

0' && c <= '

9') x = x * 10 + c - '

0', c =getchar();

return x *f;

}int

n, m, k;

int a[1001][1001], down[maxn], vis[1001][1001

];struct

node p[maxn];

bool pd(int x, int

y) int hsum[1001][1001], lsum[1001][1001

]; bool line(int x1, int y11, int x2, int y2, int

id)

if(y11 ==y2)

}int

main() ;

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

for(int j = 1; j <= m; j++)

hsum[i][j] = hsum[i][j - 1] +a[i][j],

lsum[i][j] = lsum[i - 1][j] +a[i][j];

int ans = 0

;

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

if(flag == 1) continue

;

for(int k = 1; k <= m; k++)

if(!line(xx2, yy2, xx2, k, i) && !line(xx2, k, xx1, k, i) && !line(xx1, yy1, xx1, k, i))

}printf("%d

", ans);

return0;

}/*20 20 3

1 1 20 20

2 1 2 20

3 1 1 20

3 3 3

1 3 2 2

1 1 3 3

1 2 2 1

*/

神仙題。

很顯然答案是一棵樹,那麼直接書上倍增就好

滿分做法不會。。

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 ...

NOIP模擬賽 分錢

題目描述 兩個人在街上撿到了一些錢,這些錢共有n張,他們等了很久也沒有等來失主,於是決定把錢平分。但錢可能無法平分。他們先把能夠平分的錢盡量先平分了,使得剩下不能平分的錢盡量少。這些不能平分的錢怎麼辦呢他?他們決定拿去賭場裡面賭一把。他們運氣太好了,那些不能平分的錢變成了雙倍,於是他們就把那個錢分了...