Souvenir Shop 解題報告

2022-04-29 21:09:07 字數 824 閱讀 4945

魔幻題目,這誰搞得到啊...

考場上完全sb了寫了個線段樹合併,想必我是個複雜度分析都沒學過的入門級選手

發現這個網格圖dag它的出度最多只有2

如果按照先走朝上的一條邊進行dfs走後續遍歷,就是遍歷完兒子再加自己,那麼dfn大於它的一定不會比它低

然後再按照先走朝右的乙個邊走後續遍歷,dfn2大於它的一定不會比它左

那麼它可以到達的點滿足\(\le dfn1_i,\le dfn2_i\)就可以了...

然後就是普及組隨便統計一下的問題了...

code:

#include #include #include #include const int n=3e5+10;

template void read(t &x)

struct koito_yuu

else

}dfs1(1);

dfsclock=0;

memset(vis,0,sizeof vis);

dfs2(1);

std::sort(yuu+1,yuu+1+n);

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

ans[yuu[i].now]=qry(yuu[i].dfn2);

} for(int i=1;i<=n;i++) printf("%d\n",ans[i]);

return 0;

}

2019.3.26

USACO Hamming Codes 解題報告

資料小,暴力搜尋可以搞定。但是推薦使用dfs,每個節點 數 有取與不取兩個分支。注意 0是必須出現的。證明如下 最終得到的結果序列中,0是必須出現的,證明如下 如果存在另乙個滿足要求的結果序列s 其最小值為a1 n 0,那麼序列s s n 是滿足條件的最小解,且首元素為0 id xpli1 prog...

USACO Closed Fences 解題報告

幾何題看著就很有畏懼感。這裡用的是最 的演算法,時間複雜度應該在n 2。還沒看別人的解題報告,不過我猜nlogn的解法是有的。比如判斷乙個fence是不是valid的時候,這裡將所有的線段兩兩比較,看是否相交。但是有個叫line sweep的演算法,可以在nlogn的時間複雜度內完成。既然accep...

Wiggle Subsequence解題報告

這道題和最長子序列,divisible subset題目類似,都可以用o n2 的時間複雜度完成。可以想象,對於第i個數,dp i dp j 1,當且僅當dp j 1 dp i 而且nums j 和nums i 的差值和j所處位置的差值符號相反。所以,如下 class solution if dp ...