hihocoder挑戰賽20小記

2021-07-24 08:51:21 字數 2741 閱讀 5382

2016.11.4

晚上六點點開了一場看上去通過人數比較多的hihoround(20),virtual participate了一下。感覺這場還是比較友好的,和我以前做的hihoround只能做一題,或者爆零不一樣。在兩個小時裡寫了3個題(a,b,c),d看上去像是個經典問題,但從來沒寫過(幾何基本等於殘疾),便直接放棄了。

這場是島娘出的,我還以為是ta朋友出的。

感覺題挺不錯。題解寫的也不錯。

官方題解:

#include 

#include

#include

#include

using

namespace

std;

const

int maxn = 1e5 + 5;

#define lson o * 2,l,mid

#define rson o * 2 + 1,mid + 1,r

struct segmenttree

void build(int o,int l,int r)

int mid = (l + r) >> 1;

build(lson);

build(rson);

pushup(o);

}void update(int o,int l,int r,int p,int val)

int mid = (l + r) >> 1;

if(p <= mid) update(lson,p,val);

else update(rson,p,val);

pushup(o);

}int query(int o,int l,int r,int ql,int qr)

int ans = 0;

int mid = (l + r) >> 1;

if(ql <= mid)

if(qr > mid)

return ans;

}}tree;

int n,m;

int main()

int ans;

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

return

0;}

b:

這是乙個括號匹配型別的問題。仔細分析發現,其實可以是個dp。 dp

[i]=

dp[l

eft]

+1,l

eft是

使得s[

left

+1]−

s[i]

形成乙個

合法括號

序列的最

靠近i的

位置,那

麼ans

=∑dp

[i],

這樣的話

是個o(

n2)的

dp,再

仔細觀察

可以發現

,其實l

eft就

是同層的

上乙個位

置,而且

dept

h從高減

的時候,

要把上一

層pre

的刪掉。

(dep

th指的

是比如(

(()(

))),

內層括號

就是第三

層,外面

就是第二

層,第一

層.這樣

就是線性

的了)具

體見**

。 **:

#include 

#include

#include

#include

#include

using

namespace

std;

const

int maxn = 1e6 + 5;

int dp[maxn];

int num[maxn];

char s[maxn];

char stack[maxn];

int top;

int main()elseelse}}

long

long ans = 0;

for(int i = 1;i <= n;i++) ans += dp[i];//cout << dp[i] << " ";

cout

<< ans << endl;

return

0;}

c:

數字dp。

題解說二分+dp。

其實二分的過程可以包含在dp的過程中了。不錯的練手題,推薦數字dp欠缺(比如我)的人寫,雖然這個dp**量不大。

我的**(嚴格也不算數字dp了):

#include 

#include

#include

#include

using namespace std;

long

long power[20];

long

long pow8[20];

long

long k;

int d[20];

int main()else

}elseelse

}elseelse}}

}}

first = false;

for(int i = 19;i >= 1;i--)

}

return

0;}

hihoCoder挑戰賽31 題解

時間限制 8000ms 單點時限 1000ms 記憶體限制 256mb 描述 給定n個整數常數c 1 c 2 c n 和乙個整數k。現在需要給2k個整數變數x 1 x 2 x k y 1 y 2 y k 賦值,滿足 1 對於所有1 i k,都有x i y i 2 對於所有1 i n,都存在至少乙個j...

hihoCoder挑戰賽12 順子 模擬

時間限制 6000ms 單點時限 1000ms 記憶體限制 256mb 你在賭場裡玩梭哈,已經被發了4張牌,現在你想要知道發下一張牌後你得到順子的概率是多少?假定賭場使用的是一副牌,四種花色的a 2 3 j q k共52張,這副牌只發給你了4張,你的剩下一張牌從剩下48張中任意取出一張。順子指的是點...

hihoCoder挑戰賽12 計數 打表

時間限制 10000ms 單點時限 1000ms 記憶體限制 256mb rowdark是乙個 的魔法師。在他閱讀大巫術師lich的傳記時,他發現一類黑魔法來召喚遠古生物,魚丸。魔法n能召喚型別i 魚丸當且僅當i能夠被表示為x xor n x對於某個正整數x和固定的n。rowdark想知道型別為 l...