NOIP2018模擬賽10 16 手殘報告

2022-03-13 05:07:24 字數 4939 閱讀 3593

爐石亂鬥模式美滋滋啊,又頹到好晚...

上來t2先敲了樹剖,看t1發現是個思博dp,然後沒過大樣例,寫個暴力發現還是沒過大樣例!?才發現理解錯題意了,真是太菜了

然後看t3發現又要樹剖,想了想發現邊雙縮點似乎能做...結果碼來碼去比賽臨近結束才搞完,趕緊交**.

但是那台機子上的chrome似乎是個假的,開啟什麼網頁都巨慢,最後t1手殘交了份一開始的錯誤**上去,t2t3生死未卜

結果40+0+0 t1錯**居然還有40?!資料這麼水...再交遍正確**一a

t2t3下午檢查的時候發現樹剖犯了sb錯誤 還是記在了我錯誤筆記上的...太菜了

下午改t3邊雙縮點居然a了std是圓方樹的t3?!還跑了rank2?! (雖然現在xxzh巨佬是rank2

而且第一發交的樹剖還是有錯的.這資料無力吐槽了

晚上碼t2,結果至今卡死在70 tle三點,然而那台老年機都跑過了我也不知道咋回事

分析思博dp,\(f[i][j]\)表示當前使用第\(j\)輕功種走到\(i\)這個點的最短時間

\(f[i][j]=min(f[i-a[j]][p]+v[j]+[j!=p] \times w)\)

預處理一下非法情況就好了

**

/*

code by ryecatcher

*/inline char gc()

template inline void read(t &x)

const int maxn=505;

const ll inf=1e17;

int n,k,q;

ll v[maxn];

int a[maxn];

bool fob[maxn][105];

bool ok[maxn][105];

ll w,f[maxn][105];

namespace bf

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

else dfs(now+a[i],i,c+v[i]+w);

} return ;

} void main()

}int main()

memset(fob,0,sizeof(fob));

memset(ok,0,sizeof(ok));

read(q);

while(q--)

for(ri i=0;i<=n;i++)

int t=0;

for(ri i=0;i<=k;i++)if(!fob[0][i])f[0][i]=0;

for(ri i=0;i<=n;i++)

if(flag)ok[i][j]=1;

}} }

if(n<=15)

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

}} }

ll ans=inf;

for(ri i=1;i<=k;i++)ans=min(ans,f[n][i]);

if(ans==inf)puts("-1");

else printf("%lld\n",ans);

return 0;

}

精巧的樹剖,詢問時將所有點按\(dfs\)序排序

欽定當前公共\(lca\)

\(x\),對於排序後第\(i\)個點和\(i-1\)號點的lca \(y\),如果\(y\)在\(x\)子樹中,那麼計算\(i\)到\(y\)路徑貢獻(不包括\(y\)),否則根據dfs序排序後的性質, \(y\)就比\(x\)高明,將\(y\)設為公共\(lca\),計算\(fa[x]\)到\(i\)號點路徑貢獻

然後一直卡在70分。。。以後能用樹狀陣列再也不用線段樹了

/*

code by ryecatcher

*/inline char gc()

#define gc getchar

template inline void read(t &x)

const int maxn=200005;

const int inf=0x7fffffff;

int n,q;

int que[10000005],cnt=0;

struct edgeedge[maxn<<1];

int h[maxn],num_edge=1;

inline void add_edge(int f,int to)

ll w[maxn];

int dep[maxn],fa[maxn],dfn[maxn],top[maxn],size[maxn],son[maxn],tot=0,rnk[maxn];

void dfs_1(int now)

return ;

}void dfs_2(int now,int t)

}int l,r,t;

ll dta,ans=0;

ll s[maxn<<2];

inline void add()

inline ll sum(int x)

inline ll calc(int l,int r)

bool cmp(int a,int b)

inline void query_path(int x,int y)

inline void solve()

x=que[1],ans=w[x];

for(ri i=2;i<=cnt;i++)

else

} printf("%lld\n",ans);

return ;

}int main()

#define gc getchar

template inline void read(t &x)

const int maxn=200005;

const int inf=0x7fffffff;

int n,m,q;

ll w[maxn],val[maxn];

struct edgeedge[maxn<<1];

struct sese[maxn<<1];

int h[maxn],num_edge=1;

inline void add_edge(int f,int to)

int sh[maxn],num_se=1;

inline void add_se(int f,int to)

namespace tree

void update(int now,int l,int r)

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

if(t<=mid)update(now<<1,l,mid);

else update(now<<1|1,mid+1,r);

up(now);

return ;

} ll ans=inf;

void query(int now,int l,int r)

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

if(l<=mid)query(now<<1,l,mid);

if(middfn[y])std::swap(x,y);

l=dfn[x],r=dfn[y];

query(1,1,n);

return ;

} void main()

else}}

return; }}

int inb[maxn],cnt=0;

multiset mib[maxn];

int dep[maxn],rnk[maxn],fa[maxn],dfn[maxn],tot=0,size[maxn],son[maxn],top[maxn];

void dfs_1(int now)

void update(int now,int l,int r)

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

if(t<=mid)update(now<<1,l,mid);

else update(now<<1|1,mid+1,r);

up(now);

return ;

}ll ans=inf;

void query(int now,int l,int r)

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

if(l<=mid)query(now<<1,l,mid);

if(middfn[y])std::swap(x,y);

l=dfn[x],r=dfn[y];//puts("wtf");

//printf("%d %d %d %d\n",x,y,l,r);

query(1,1,cnt);

return ;

}int low[maxn],dd[maxn],pc=0;

bool bri[maxn<<1];

void tarjan(int now,int id)

} else if(i!=(id^1))low[now]=min(low[now],dd[v]);

} return ;

}void pre_dfs(int now,int fa)

return ;

}bool fg=0;

void pre_ck(int now,int fa)

pre_ck(v,now);

} return ;

}int main()

pre_ck(1,0);

if(!fg)

memset(vis,0,sizeof(vis));

for(ri i=1;i<=n;i++)if(!dd[i])tarjan(i,0);

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

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

} }//printf("--%d--\n",cnt);

dep[1]=1,fa[1]=0;

tot=0;

dfs_1(1);

dfs_2(1,1);

build(1,1,cnt);

read(q);

char opt[5];

while(q--)

else

} }return 0;

}

NOIP2018模擬賽2018 10 18 輕功

description 題目背景 尊者神高達進入了基三的世界,作為乙個 mmorpg 做任務是必不可少的,然而跑地圖卻令人十分不爽。好在基三可以使用輕功,但是尊者神高達有些手殘,他決定用梅花樁練習輕功。題目描述 一共有 n 個木樁,要求從起點 0 開始,經過所有梅花樁,恰好到達終點 n,尊者神高達一...

NOIP2018模擬賽2018 10 18 開荒

description 題目背景 尊者神高達作為乙個萌新,在公升級路上死亡無數次後被乙隻大黃嘰帶回了師門。他加入師門後發現有無窮無盡的師兄弟姐妹,這幾天新副本開了,尊者神高達的師門作為乙個 pve師門,於是他們決定組織一起去開荒。題目描述 師門可以看做以 1 為根的一棵樹,師門中的每乙個人都有一定的...

NOIp2018模擬賽三十六

好久沒打模擬賽了。今天一樣是兩道國集,一道bzoj題 成績 13 0 95 108 a題開始看錯題了。導致樣例都沒看懂,結果xfz提醒我後我理解了乙個我自認為正確的題意 事實證明我和xfz都錯了qwq 然後瞎打了乙個線段樹,結果只有13分。c題一看就是乙個大平衡樹,開始手打了100 行發現自己肯定調...