2017 10 27離線賽總結

2021-08-09 22:33:13 字數 2487 閱讀 9444

思路:最大值最小,很明顯的二分答案。

#include

#define rep(i,f,t ) for(int i=(f),i##_end_=(t);i<=i##_end_;i++)

#define drep(i,f,t ) for(int i=(f),i##_end_=(t);i>=i##_end_;i--)

#define ll long long

#define inf 0x3f3f3f3f

#define n 1005

#define m 205

#define p 1000000007

using

namespace

std;

int n,m,k;

struct p10

}printf("%lld",(dp[n&1][m][k][0]+dp[n&1][m][k][1])%p);

}}p70;

int main()

思路:二分答案,樹鏈剖分或倍增求lca,再樹上差分、字首和,還有一點dfs序。

解1:#include

#define rep(i,f,t ) for(int i=(f),i##_end_=(t);i<=i##_end_;i++)

#define drep(i,f,t ) for(int i=(f),i##_end_=(t);i>=i##_end_;i--)

#define ll long long

#define inf 0x3f3f3f3f

#define n 300005

#define t 19

using

namespace

std;

int n,m,x,y,z,max,cnm;

int d[n],dis[n],val[n],num[n],tmp[n],fa[n][t+5];

struct nodeq[n];

struct node;

vector

e[n];

void dfs(int x,int f)

rep(i,0,e[x].size()-1)

}void up(int &x,int step)

bool check(int mid)

if(!cnt)return

1; drep(i,n,2)tmp[fa[num[i]][0]]+=tmp[num[i]];

rep(i,2,n)if(val[i]>=limit&&tmp[i]==cnt) return

1; return0;}

int main());

e[y].push_back((node));

r+=z;

}dfs(1,0);

rep(i,1,m)

while(l<=r)

cout

《解2:

#include

#define rep(i,f,t ) for(int i=(f),i##_end_=(t);i<=i##_end_;i++)

#define drep(i,f,t ) for(int i=(f),i##_end_=(t);i>=i##_end_;i--)

#define ll long long

#define inf 0x3f3f3f3f

#define n 300005

#define m 19

using

namespace

std;

int n,m;

int d[n],fa[n],son[n],sz[n],top[n],dis[n];//shu pou

int val[n],sum[n],dp[n];

int lt[n],rt[n],list[n],t;//dfs xu

struct node;

vector

e[n];

struct node

}q[n];

void dfs1(int x,int f)

}void dfs2(int x,int tp)

rt[x]=t;

}int lca(int a,int b)

if(a==b)return;

if(d[a]>d[b])swap(a,b);

sum[lt[a]+1]++,sum[lt[b]+1]--;

}bool check(int mid)

dp[sz]=mx;

return q[1].dis-dp[sz]<=mid;

}int main());

e[b].push_back((node));

}dfs1(1,0);

dfs2(1,1);

rep(i,1,m)

sort(q+1,q+1+m);

int l=0,r=q[1].dis,ans;

while(l<=r)

cout

《小結:第2題的dp還是做的慢了點,定義時卡了挺久的,導致第3題敲的很急,敲錯了2次…

2017 7 29 離線賽 總結

本著貪心的思想,我先斜著走到頂,然後直走到終點,顯然這是最優的,但是我忽視了斜著走的最後一步可以和直著走的第一步合併,我錯誤地把兩個過程分開了。假如我當時多找幾組資料來模擬說不定能找到這個錯誤,我也沒敲個暴力來對拍 因為暴力太長了 我得到的教訓是 不能肯定自己演算法的正確性是,不如敲個暴力對拍一下,...

離線賽20171006總結

這次考得還不錯,頗有些遺憾的是因為第一題我離正解已經很近了,可惜考試畢竟是考試,一開始的題目看錯沒看到相鄰的條件浪費了很多時間,到後來就沒有時間去寫正解了。這畢竟也是一種實力,不能說題目看錯失誤問題就不大。上次的考試兩個輸出只能模乙個沒看到導致少了70分。這種失誤還是太低階了,也太致命了。這種題目看...

2017 10 7離線賽總結

失分小結 估分 玄學 實際分數 300 收穫 寫題前仔細分析題目,好好思考 考試過程 第一題真的想不到,只好打個表,結果由於資料半天沒輸出來,心態 有前前後後折騰了半個小時 第二題先是打了個n n暴力,又調了半天,這時考試只剩下兩個小時 第三題思考了大約十分鐘,然後想到了正解,實現比較快,乙個小時就...