CF掉分日記 6 6 6 8

2022-02-05 09:46:06 字數 2488 閱讀 2104

---恢復內容開始---

寫的效果依舊不好 還沒寫完前四題比賽就結束了 而且這些普及組的題目 我大多還是缺少簡單演算法的靈性 總是把問題搞複雜化。

6.5 a 第一道題非常水 簡單分析發現是乙個快速冪的逆過程。logn時間內解決。

b 這是乙個比平成的模擬要難上一點點的 模擬 因為有可能爆ll 所以寫之前要把該考慮到的情況考慮好再寫。

c 一眼不可做 也看不懂題目是什麼意思,還是看不懂棄掉以後看見了再寫

d 感覺能寫 一段序列分成k段 第一段乘1 第二段乘2... 求最大值 顯然dp 然後 f[i][j] 表示前 i個數字分成j段的最大值 這個dp 是n^2k的相當難受 貌似斜率優化可以到nk 然後? 然後還是掛掉。

亂搞出來乙個貪心 是 我從後往前拿第k 段 k-1段 每次我都選取最大的那個字尾和 nlogn 發現一直wa 沒有考慮到一些因素並不是字尾和最大的是最優的因為當前數字造成的貢獻不只只有前面的而且還是有後面的,所以說不太會寫,考慮設p1 p2 ...pk 為每一段的斷點 顯然p1=1; pi發現我們只需取最大的這幾個bp值即可 注意p1是強制取1的。

剩下的題目沒看結束了。。。

6.8 a 是一道非常水的題目注意好關係就能ac

b 猛一看感覺是不可寫的 但是實際上畫個圖發現每次放棋子只能放在上乙個棋子的 右邊 或者下邊注意維護好輪換放即可。

c 是一道比較有意思的題目 看起來也不可做深入理解發現只會有兩種情況 1 列舉每次放哪個數字了如果當前手牌中沒有的話就一直取數字直至把這個數字取出來 然後模擬放回去。

或者是 在這個隊伍之中就直接模擬排序好 如果可以成功那麼一定優於第一種決策。這樣就ok了!

d 好像是乙個排列計數 看了一下不會寫棄掉了現在再看 n<=2e5 看完題解 發現是乙個很妙的樹形dp

題目:哦 原來是這樣的 對於乙個無根樹來說我們以任意的角度來看的話我們可以想象成每個點都可以是根,所以 可以以1為根 然後發現 1 任何位置都是可以放的。

考慮1的子樹 由於子樹必須是在乙個圓弧之上 顯然 。 所以子樹們和父親們放的位置決定了父親的初始方案數 仔細思考1可以放n個位置我們讓其按照乙個方式放的話也把所有方案數遍歷到了。

好題 於是就有轉移了。下面放**:

//

#include

#include#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define inf 2147483646

#define ll long long

#define min(x,y) (x>y?y:x)

#define max(x,y) (x>y?x:y)

#define ri register ll

#define up(p,i,n) for(ll i=p;i<=n;++i)

#define db double

#define mod 998244353

using

namespace

std;

char buf[1

<<15],*fs,*ft;

inline

char

getc()

inline ll read()

while(ch>='

0'&&ch<='9')

return x*f;

}inline

void

put(ll x)

const

int maxn=200010

;int

n,len;

ll fac[maxn],sz[maxn],f[maxn];

//f[i] 表示以i為根的子樹內部的方案數

intvis[maxn];

int lin[maxn<<1],nex[maxn<<1],ver[maxn<<1

];inline

void add(int x,int

y)inline

void dfs(int

x)

//f[x]=fac[sz[x]];

if(x!=1)f[x]=fac[sz[x]];

else f[x]=fac[sz[x]-1

]; f[x]=f[x]*sum%mod;

}int

main()

for(int i=1;i<=n;++i)fac[i]=fac[i-1]*i%mod;

dfs(1);

put(f[

1]*n%mod);

return0;

}

view code

剩下的題目就不說了。。不太會寫也沒有時間了。

cf刷題日記 1 28 2 1

題意 給你一棵樹,每個節點上有若干餅乾,並且給出每個節點上吃一塊餅乾需要多少時間,同時給出走過一條邊所需時間。總時限為 tt,兩個人輪流進行操作 mitya從當前節點擊擇乙個子節點向下走,或者直接結束遊戲並往根回動吃餅乾 vasya割斷當前節點到其某個子節點的邊,或者什麼都不做。問mitya可以吃到...

ubunt1404 down掉如何恢復日記總結

問題 假期歸來,我的ubuntu無法進入登入介面了。grub正常,結果進入initramfs,顯示路徑找不到,建議我兩點1 check路徑 2check rootdelay。解決 在grub.cfg 檔案加上rootdelay 90。如果我兩者都check了 可能就不會這麼糾結了。我check了路徑...

CF1168B Good Triple 性質分析

給出01串s,求數對 l,r 個數,使得能找到至少一對 x,k 使1 x,k s 且l x題解 這是乙個 01 串.這個性質不是白給的qaq.考慮暴力,複雜度貌似是 n 2 級別的.然而,我們發現每乙個區間長度不會超過 9,直接暴力解決即可.code include define maxn 1000...