首页 > 其他分享 >Polynomial Round 2022 E

Polynomial Round 2022 E

时间:2022-12-24 15:56:18浏览次数:63  
标签:int dfs st fa depth 2022 Polynomial Round dp

E. Two Chess Pieces

题链
我们假设d为无限大的时候
那么就可以将a b分开来看
也就是两个点走过的路径和*2即可
要是有d怎么办呢?
我们可以拆成一条一条链来看
要是a在这条链要走的很远
b只走一小截 那么显然我们的b要衍生到a上面d处
然后我们再计算两个点走过的路径和即可
为了方便我们衍生 我们预处理出来每个点的第d个父亲是谁
这样我们就可以快速求出并且打上标记
dp[i][0/1]就是a/b树中i节点上是否是路径上的点
转移的话
儿子是父亲一定是即可
dp[i]|=dp[v]

int n,d,dp[N][2],a[N],f[N];
//在u号点存在
vector<int>g[N];
void dfs(int u,int fa,int st){
    for(auto v:g[u]){
        if(v==fa)continue;
        dfs(v,u,st);
        dp[u][st]|=dp[v][st];
    }
}
void get_fa(int u,int fa,int depth){
    a[depth]=u;
    if(depth>d)f[u]=a[depth-d];
    else f[u]=1;
    for(auto v:g[u]){
        if(v==fa)continue;
        get_fa(v,u,depth+1);
    }
}
void solve(){
    cin>>n>>d;
    for(int i=1;i<n;i++){
        int u,v;cin>>u>>v;
        g[u].push_back(v);
        g[v].push_back(u);
    }
    get_fa(1,0,0);
    for(int i=0;i<=1;i++){
        int m;cin>>m;
        for(int j=1;j<=m;j++){
            int x;cin>>x;
            dp[x][i]=dp[f[x]][i^1]=1;
        }
    }
    dfs(1,0,0);
    dfs(1,0,1);
    int ans=0;
    for(int i=1;i<=n;i++){
        ans+=dp[i][0]+dp[i][1];
    }
    cout<<ans*2-4<<endl;
}

标签:int,dfs,st,fa,depth,2022,Polynomial,Round,dp
From: https://www.cnblogs.com/ycllz/p/17002952.html

相关文章

  • [CTS2022] 独立集问题
    首先我们有一些发现,一个点在操作过一次后再操作第二次时周围一圈点都已经归零,意味着操作第二次时该点的权值会直接去反,那么这个点的正负性是可以任意变化的,这也就意味着一......
  • 2022.12.24 动态规划练习
    洛谷P5858「SWTR-03」GoldenSword题目背景小E不幸在一场战斗中失去了他的金宝剑。题目描述制造一把金宝剑需要\(n\)种原料,编号为\(1\)到\(n\),编号为\(i\)的......
  • Codeforces Round #770 (Div. 2)B,C
    CodeforcesRound#770(Div.2)B,C还是惨绝人寰的只做了一个题,ε=(´ο`*)))唉BB这一道题大意是是首先有一个d,然后有n个操作,从1到n,每一次我们都需要选择让d=d+a[i]还是d......
  • 2022.12.24 - vant按需引入样式不展示问题
    vue项目中引入vant组件,若发现vant组件样式失效,通常有以下几种解决方法:方法一:引入全局样式 在引入vant组件的地方或者全局引入vant组件所有的样式,引入方法为:在vue引入van......
  • 告别伤心的2022喜迎未知的2023
    2022年终于快要结束了。2022年对于我来说是个伤心的一年。老父亲在我们万般不舍下还是离开了我们,去了我们每个人终将要去的另外一个世界。公司的项目因运营失败而解散研......
  • 2022-12-24 #19 也不愿在拥抱过浓墨重彩的热烈后 被迫离开
    昨天打了八个小时文明六,自入手后第一次胜利啊!(王子难度,朝鲜科技胜利)感觉一整把打下来还有很多瑕疵。。。昨晚vp了一下2022CCPCGuilin。B题没写完有点可惜。感觉这......
  • 【20221224】每日一题
    classSolution{public:stringlargestMerge(stringword1,stringword2){stringans;inti=0,j=0;while(i<word1.size()||......
  • P8294 [省选联考 2022] 最大权独立集问题
    题解可以发现对于一个子树,假设移出的点为\(u\),移入的点到\(v\),那么这棵子树的根一定是\(LCA(u,v)\).于是可以设\(dp_{u,v}\)表示在以\(LCA(u,v)\)为根的子树......
  • 我的2022年个人总结
    前言去年8月份到今年年初,可以算是这几年来过得最愉快、最充实的一段时间,在去年年底所写的个人总结博客开篇中,也很容易看出自己当时的良好状态:去年上半年,由于上家公司的......
  • P8290 [省选联考 2022] 填树
    https://www.luogu.com.cn/problem/P8290题解记\(P(l,r)\)表示最小值为\(l\)(至少\(1\)个),其它数在\([l,r]\)的第一问的答案,\(Q(l,r)\)表示最小值为\(l\)(至少\(1\)个)......