綿陽東辰國際test201910 21

2022-01-29 08:58:15 字數 3644 閱讀 2050

分析:

哈密爾頓環:每個點只經過一次的路線,有哈密爾頓環的圖叫哈密爾頓圖

先考慮只是一條鏈

很容易想到隔乙個跳一次,這樣無論鏈有多長一定是從a出發,b回來

所以直接拓展到樹上即可:

如 果當前節點深度是奇數,那麼我們在dfs前輸出這個點,

否則在dfs完所有孩子之 後再輸出這個點。

part code:

il void dfs(int u,int fa)

for(ri i=head[u];i;i=edg[i].next)

if(!(dp[u]&1))

}

什麼跳兩次的滾出總結:有很多的dfs題**很簡單,卻很容易陷阱去,導致思路開花,應該往簡單的方向想

分析:

首先用kmp或者雜湊對每個 ti,求出它在 s 中的匹配位置

那麼這些位置 中至少得要刪掉乙個

考慮如果兩個區間的r相等時,這時就只用管l最大的

證明

為什麼因為先滿足l較大的,其他的同r的肯定都滿足了

而先滿足l較小的,l較大的不一定滿足,所以這樣一定是最優的

於是對於每個 i,我們可以求出乙個 li

如果沒有的直接從前面dp轉移過來就可以

然後很明顯就要dp

設dp[i]前i個位置都滿足,且最後乙個刪的是i的最小值

li是單調遞增的

所以維護單調遞增佇列dp

分析:

問題轉化:u 的子樹中選 k 個點使它們兩兩 lca 是 u的方案數,對 v 也求同樣的東西,

再把兩者相乘就是最後的答案了

有可能u,v 存在祖孫關係,

不妨設 u 是 v 的祖先,那麼 u 的子樹就要改為以v 的 方向作為根方向前提下的子樹

然後就亂搞就行了

code:

#include#define del(a,i) memset(a,i,sizeof(a))

#define ll long long

#define inl inline

#define il inl void

#define it inl int

#define ill inl ll

#define re register

#define ri re int

#define rl re ll

#define mid ((l+r)>>1)

#define lowbit(x) (x&(-x))

#define inf 0x3f3f3f3f

using namespace std;

templateil read(t &x)

templateil _print(t x)

templateil print(t x)

ll mul(ll a,ll b,ll mod)

it qpow(int x,int m,int mod)

return res%mod;

}const int maxn = 1e5+5,mod = 998244353;

int n,m,l,u,v,k,head[maxn],num_edge,dp[maxn][505];

struct edge

edge(int next,int to):next(next),to(to){}

}edge[maxn<<1];

il add_edge(int u,int v)

it add(int x,int y)

it mul(int x,int y)

int f[maxn][18],dep[maxn],sz[maxn],deg[maxn];

il dfs(int u,int fa)

}it lca(int u,int v)

it jump(int u,int lca)

il calc(int u)

for(ri i=deg[u];i;--i)

dp[u][i]=add(dp[u][i],mul(dp[u][i-1],n-sz[u]));

}int fac[maxn],ifac[maxn],inv[maxn];

il init()

it c(int n,int m)

int ans[maxn],tmp[maxn];

it solve(int u,int k,int t)

ri res=0;

for(ri i=0;i<=min(deg[u],k);++i) res=add(res,mul(mul(fac[i],ans[i]),c(k,i)));

return res;

}int main()

} return 0;

}

綿陽東辰國際test2019 10 31

吐槽 當時腦抽了,總是往難得地方想,實際上很簡單一道簽到題,總結以後要求自己第一題 不能超過50行,不然就不要寫 肯定就是方法錯了 分析 構造的時候就每次在它前面從大到小的放,這樣保證肯定能消完的 吐槽 n3log暴力炸了?我真的是服了我自己了,功底太好了 這題資料用腳造的,暴力能過,這樣這道題就毫...

綿陽東辰國際test10 12

蒟蒻分析 考試時寫個權值線段樹就是調不出來 蒟蒻總結 平時多練手 solution 其實就用樹狀陣列維護一下就行 多了個撤銷操作而已,應該十分鐘就寫完的,我寫了三個小時!code by jklover includeusing namespace std inline int read const ...

綿陽東辰國際test201910 22eve

這是乙個很老的題了 想到肯定和lca樹剖啊有關,但當時我看到1e6的範圍時果斷放棄 結果它m的時限時2秒 說說我的分析 最值問題?不是貪心就是dp 對於dp,如果轉化為線性的,就是乙個單調佇列優化dp的模板 但是想了半天一棵樹怎麼都不能轉化為線性的 對於貪心,考慮乙個點如果能被較多的區間覆蓋就肯定最...