首页 > 其他分享 >P5836 [USACO19DEC] Milk Visits S

P5836 [USACO19DEC] Milk Visits S

时间:2024-04-02 19:45:13浏览次数:16  
标签:fa int Visits finds P5836 dfs now next Milk

原题链接

题解

树上只有两种颜色,我们把每种颜色的连通块记录下来,只有当路径两端的点属于同一连通块且颜色与朋友喜欢的不同时输出0

code

#include<bits/stdc++.h>
using namespace std;

char s[100005];
int fa[100005];
int finds(int now){return fa[now]==now?now:fa[now]=finds(fa[now]);}

vector<int> G[100005];

void dfs(int now,int pre)
{
    for(auto next:G[now])
    {
        if(pre==next) continue;
        dfs(next,now);
        if(s[next]==s[now]) fa[finds(next)]=now;
    }
}
int main()
{
    int n,m;
    cin>>n>>m;
    for(int i=1;i<=n;i++) fa[i]=i;
    cin>>(s+1);
    for(int i=1;i<n;i++)
    {
        int x,y;
        cin>>x>>y;
        G[x].push_back(y);
        G[y].push_back(x);
    }

    dfs(1,1);

    string ans;
    for(int i=1;i<=m;i++)
    {
        int x,y;
        cin>>x>>y;
        char a;
        cin>>a;
        if(finds(x)==finds(y)&&s[finds(x)]!=a) ans+='0';
        else ans+='1';
    }
    cout<<ans;
    return 0;
}

标签:fa,int,Visits,finds,P5836,dfs,now,next,Milk
From: https://www.cnblogs.com/pure4knowledge/p/18111367

相关文章

  • P5837 [USACO19DEC] Milk Pumping G 题解
    原题传送门思路只用堆每一个点跑一边最短路,在用当前点到点\(n\)的距离,再用当前点的\(f\)乘上\(10^6\)除以刚刚算出的值即可。代码#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<vector>#include<queue>usingnamespacestd;#defin......
  • 洛谷题单指南-贪心-P1208 [USACO1.3] 混合牛奶 Mixing Milk
    原题链接:https://www.luogu.com.cn/problem/P1208题意解读:就是一个部分背包问题,贪心模版题。解题思路:优先选择单价低的牛奶即可。100分代码:#include<bits/stdc++.h>usingnamespacestd;constintN=5005;structfarmer{intprice,count;}f[N];boolcmp(fa......
  • P1204 [USACO1.2] 挤牛奶Milking Cows
    原题链接题解细节颇多看代码code#include<bits/stdc++.h>usingnamespacestd;structunit{ints,e;}milk[5005];boolcmp(unita,unitb){returna.s<b.s;}intmain(){intn;cin>>n;for(inti=1;i<=n;i++)cin>>milk[i].s......
  • POJ--3616 Milking Time(DP)
    记录19:522024-1-26http://poj.org/problem?id=3616reference:《挑战程序设计竞赛(第2版)》第二章练习题索引p135一个LIS(最长上升子序列,LongestIncreasingSubsequence)问题的变种dp[i]表示第i个interval结尾能获得最多的milk,首先需要把数据按照起始时间排序,第i个表示......
  • BZOJ1717 Milk Patterns 产奶的模式 (二分+后缀数组+height数组)
    发现这样起标题更能引流(ylg实锤了)题意给定一个长度为\(n\)的数组\(a\),求在\(a\)中出现了至少\(k\)次的最长子串的长度。解法考虑将一个子串拆成两个后缀,即\([l,r]=[l,n]-[r,n]\),发现一个长度为\(x\)的子串\(t\)在\(i,j\)两个位置出现过当且仅当后缀\(i,j\)有......
  • B - Buy One Carton of Milk
    B-BuyOneCartonofMilkhttps://atcoder.jp/contests/abc331/tasks/abc331_b 思路dfs递归搜索,按照依此按照三种策略:6个一打-costS8个一打-costM12个一打-costL 递归到叶子节点终止条件为,总的cost超过预算N,记录此时花费,更新mincost Codehttps://a......
  • milkv-duo启动流程分析:手动构建boot.sd
    目录上电测试制作boot.sd编译Linux内核multi.its上电测试在上一篇,我们构建了fip.bin。让我们继续用以前的boot.sd。我们插上电源,U-Boot2021.10(Oct152023-14:17:51+0800)cvitek_cv180xDRAM:63.3MiBgd->relocaddr=0x82435000.offset=0x2235000MMC:cv-sd@43100......
  • milkv-duo启动流程分析:手动构建fip.bin [2/2]
    手动合成fip.bin和boot.sd[2/2]编译FSBL编译FSBL是为了得到bl2.bin。注意到我们需要配置一些参数:ARCH?=ifneq($(originCROSS_COMPILE),commandline)ifeq($(ARCH),riscv)CROSS_COMPILE:=${CROSS_COMPILE_GLIBC_RISCV64}BOOT_CPU?=riscvelseCROSS_COMPILE:=${......
  • P5838 [USACO19DEC] Milk Visits G
    P5838[USACO19DEC]MilkVisitsGLuoguP5838Solution提供一种奇特的\(\mathcalO(\dfrac{n\sqrtn\logn}{\omega})\)的做法。树链剖分转化成序列问题。然后变成了询问一个区间\(l,r\)是否存在一个颜色\(k\),显然可以\(\mathcalO(n)\)预处理\(\mathcalO(\sqrtn)\)......
  • P5836 [USACO19DEC] Milk Visits S - 洛谷题解
     题目链接:[P5836] USACO19DEC] MilkVisitsS-洛谷|计算机科学教育新生态(luogu.com.cn)这道题可以用并查集来解决。题目中每个结点只有两个状态:H和G。那么我们可以推断出,只有当起点和终点间每个结点的状态相同但是起点(或者终点或起点到终点之间的某一点)与所需状态不同......