2019 11 08 NOIP提高組 模擬 B 組

2021-09-29 10:58:49 字數 3540 閱讀 3306

洛谷 2873 泥水坑

洛谷 2869 美食的食草動物

洛谷 2870 最佳牛線

#include

#include

#include

#include

#define rr register

using

namespace std;

const

int n=

1001

;struct reca[n*n]

;int n,m,xx[n]

,yy[n]

,f[n]

,now,tot;

double ans;

inline

signed

iut(

)bool

cmp(

const rec a,

const rec b)

inline

long

longw(

int x)

inline

signed

getf

(int u)

signed

main()

for(rr int i=

1;i++i)

for(rr int j=i+

1;j<=n;

++j)if(

getf

(i)!=

getf

(j)) a[

++tot]

=(rec)

;sort

(a+1

,a+1

+tot,cmp)

;for

(rr int p=

1;now++p)

return

!printf

("%.2lf"

,ans)

;}

#include

#include

#include

#define rr register

using

namespace std;

const

int dx[4]

=,dy[4]

=;struct rec

;int zx,zy,n,dis[

1011][

1011];

bool v[

1011][

1011];

inline

signed

iut(

)signed

main()

rr queueq; q.

push

((rec));

v[zx]

[zy]=1

; dis[zx]

[zy]=0

;while

(q.size()

));}

}}

其實題目應該翻譯成美食家標準的食草動物

n

nn頭牛,m

mm種飼料,牛所想要的是不低於它想要的**以及不低於它想要的鮮美程度,每種飼料最多只能被一頭牛享用,問農夫所需的最小費用

首先,考慮按照鮮美程度從大到小排序,然後雙指標,然後要取出費用最優的刪掉,考慮用平衡樹,但是stl::multiset不是更好嗎

#include

#include

#include

#include

#define rr register

using

namespace std;

const

int n=

100011

;struct rec

}a[n]

,b[n]

;multiset<

int>uk;

bool flag;

int n,m;

long

long ans;

inline

signed

iut(

)signed

main()

;for

(rr int i=

1;i<=m;

++i)

b[i]

=(rec)

;sort

(a+1

,a+1

+n),

sort

(b+1

,b+1

+m);

for(rr int i=

1,j=

1;i<=n;

++i)

ans+

=*it; uk.

erase

(it);}

printf

("%lld"

,flag?-1

:ans)

;return0;

}

有乙個字串,可以從首尾取出乙個字母,問依次組成的字串字典序最小的方案

首先如果乙個字串首尾字元不同,那麼肯定選擇小的,但問題是如果相等選其中乙個會不會導致答案不優,所以考慮找到第乙個不相等的位置,使用二分判定,用哈希求是否相等,時間複雜度o(n

logn

)o(nlogn)

o(nlog

n)字尾陣列dalao太強了

#include

#include

#define rr register

using

namespace std;

typedef

unsigned

long

long ull;

const ull p=

13731

;ull ba[

500011

],pr[

500011

],su[

500011];

char a[

500011];

int n,now;

inline ull spr

(int l,

int r)

inline ull ssu

(int l,

int r)

signed

main()

for(rr int i=

1;i<=n;

++i) pr[i]

=p*pr[i-1]

+(a[i]^64

);for(rr int i=n;i>=1;

--i) su[i]

=p*su[i+1]

+(a[i]^64

);rr int l=

1,r=n;

while

(l<=r)

if(a[l+l-1]

)putchar

(a[l++])

;else

putchar

(a[r--])

;if((

++now)%80

==0)putchar(10

);}return0;

}

NOIP提高組 矩陣

在麥克雷的面前出現了乙個有n m個格仔的矩陣,每個格仔用 或 表示,表示這個格仔可以放東西,則表示這個格仔不能放東西。現在他拿著一條1 2大小的木棒,好奇的他想知道對於一些子矩陣,有多少種放木棒的方案。因為棍子是1 2的,所以很容易就能發現,兩個被分割的塊,除了跨越兩個塊擺放木棍的方案數會對答案有影...

NOIP提高組2005 過河

過河 river 問題描述 在河上有一座獨木橋,乙隻青蛙想沿著獨木橋從河的一側跳到另一側。在橋上有一些石子,青蛙很討厭踩在這些石子上。由於橋的長度和青蛙一次跳過的距離都是正整數,我們可以把獨木橋上青蛙可能到達的點看成數軸上的一串整點 0,1,l 其中l是橋的長度 座標為0的點表示橋的起點,座標為l的...

NOIP提高組 20151029模擬

其實這套題目並不算太難,但是還是發揮不了100 水平。第一題直接線性篩法,求出質數,然後就可以判斷乙個數是否為質數了。這道題還可以用miller rabin去求,後者的速度較快,如果資料再大些,就要使用後者了。第二題,比賽時發現了,當n 7時,答案會每四個一迴圈,但是就沒有繼續往下想,其實想下去會想...