我一直覺得eoj的題解寫的可以,所以思路和題解基本參考eoj官方題解。
連線:這場真不愧是oi爺出題,我還沒摸鍵盤,只是在地鐵上看了看a,知道是個lca,沒有想出來dfs序,就開始自閉了。
但我覺得這場題目很好,值得一寫。
a.
/*
首先要知道兩個結論:
1.就是n個點的lca就是dfs序差最大的一組數的lca,所以先要對這5個點進行dfs序排序,求出5個點的lca
2.其餘的點u對已經有的點合併:u對已存在的點求lca,深度最深的lca就是離這個點u最近的公共節點
複雜度o(10qlogn)
*/#includeusing namespace std;
typedef long long ll;
#define debug(x) cout<<#x<<':'<>g[maxn];
void dfs(int root,int b)
int sz=g[root].size();
for(int i=0;i=0;i--)
if(x==y) return x;
for(int i=31;i>=0;i--)
}return father[x][0];
}bool cmp(int a,int b)
}ans+=dis[a[j]]-dis[bst_lca];
}printf("%d\n",ans);
}return 0;
}
b./*
對每個人起終點bfs求單源最短路,然後算通過每點的概率
pre陣列表示到該點最短路的數量,1表示從起點出發,0表示從終點出發
複雜度o(n*k)
*/#includeusing namespace std;
typedef long long ll;
const int maxn=1e5+100;
const int inf =0x3f3f3f3f;
double sum[maxn];
vectorg[maxn];
int n,m,u,v,k;
int a[maxn],b[maxn],pre[maxn][2],d[maxn][2],vis[maxn];
#define debug(x) cout<<#x<<':'for(int i=1;i<=n;i++) vis[i]=0,d[i][f]=inf;
q.push(s);d[s][f]=0;pre[s][f]=1;
while(!q.empty())else if(d[v][f]==d[u][f]+1)}}
}int main()
scanf("%d",&k);
for(int i=1;i<=k;i++)
}int ans=1;
double dmax=0;
for(int i=1;i<=n;i++)
printf("%d",ans-1);
}
c./*
這題我一開始就覺得是一道lazy線段樹,但以下的**是根據eoj說的題解補的,我覺得這個寫法更簡單
核心思想是:牢牢把握住每段區間最小的值,也就意味著對於當前這個區間[mini[w].first,mini[w].second]必然有i,
而絕沒有比它小的數,那就意味著可以隨意取這個區間之內的乙個位置來放這個值
*/#includeusing namespace std;
const int maxn=2e5+100;
int ans[maxn],vis[maxn],n,q;
//#define debug(x) cout<<#x<<':'void deal(int n)
int main(),maxi[i]=;
s.insert(i);
}while(q--)
queueq;
for(int i=n;i>=1;i--)
s.erase(st, ed);}}
for (auto to : s)
ans[to] = q.front();q.pop();
}for (int i = 1; i <= n; ++i)
//system("pause");
return 0;
}
牛客小白月賽13 補題(ACDG)
a 通過已經給的 打表找規律,偶數輸出 1,奇數輸出1 includeusing namespace std int main void huaj ll a,ll b int main qianz 0 0 houz n 1 0 qianz 1 mp 1 houz n mp n for i 2 i n...
牛客的小白月賽24補題
沒注意負數取模 呀呀呀呀,打腦殼 保證取模後的結果為正數 x mod mod mod 思路1.挨個嘗試肯定超時 2.就是把平方項展開 a2 b2 2ab 每個平方項的出現次數n 1次 每個2ab形式的和 最後一定注意取余為正數 戳我試試看 include include include includ...
新生賽補題
題目大意 構造乙個長度為n的嚴格遞增序列,每個數都屬於 1,m 求方案數,結果模998244353。dp的轉移方程 第一位數 i 代表的是遍歷到第幾個數了,j代表的是當前位是幾。dp i j dp i 1 j dp i j 1 ac include using namespace std const...