首页 > 其他分享 >G. Path Prefixes

G. Path Prefixes

时间:2024-03-14 15:55:27浏览次数:29  
标签:read ll back next Prefixes Path st sum

原题链接

题解

深搜带上 \(sum_a\) ,然后把经过的 \(sum_b\) 放入栈里, 二分查找

code

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

inline void read(ll &x) {
	x = 0;
	ll flag = 1;
	char c = getchar();
    while(c < '0' || c > '9'){
        if(c == '-')flag = -1;
        c = getchar();
    }
	while(c >= '0' && c <= '9') {
		x = (x << 3) + (x << 1) + (c ^ 48);
		c = getchar();
	}
	x *= flag;
}

inline void write(ll x)
{
    if(x < 0){
    	putchar('-');
		x = -x;
	}
    if(x > 9)
		write(x / 10);
    putchar(x % 10 + '0');
}

struct node
{
    ll to,blue,red;
};
vector<node> G[200005];
vector<ll> st;
ll ans[200006]={0};
void dfs(ll now,ll sum)
{
    ans[now]=upper_bound(st.begin(),st.end(),sum)-st.begin();//找到最后一个小于等于sum的值
    for(auto next:G[now])
    {
        ll to=next.to,a=next.blue,b=next.red;
        if(st.size())st.push_back(st.back()+b);
        else st.push_back(b);
        dfs(to,sum+a);
        st.pop_back();
    }
}
int main()
{
    ll t;
    read(t);
    while(t--)
    {
        ll n;
        read(n);
        for(ll i=2;i<=n;i++)
        {
            ll x,y,w;
            read(x); read(y); read(w);
            G[x].push_back({i,y,w});
        }

        dfs(1,0);
        G[1].clear();
        for(ll i=2;i<=n;i++)
        {
            write(ans[i]);
            putchar(' ');
            G[i].clear();
        }
        puts("");
    }

    return 0;
}

标签:read,ll,back,next,Prefixes,Path,st,sum
From: https://www.cnblogs.com/pure4knowledge/p/18073042

相关文章

  • (笔记)FPGA多周期路径及set_multicycle_path详解
    默认情况下综合工具会把每条路径定义为单周期路径,即源触发器在时钟的任一边沿启动(launch)的数据都应该由目的触发器在时钟的下一上升沿捕获(capture)。有的设计可能存在时序例外(timingexceptions),如多周期路径、虚假路径等。数据从起点到终点的传输时间需要一个时钟周期以上才能稳定......
  • python得scrapy提取数据 xpath注意事项
    在提取器过滤数据这个地方被坑了很久,确实有点坑,有点难以理解,多注意下就可以了。frommultiprocessingimportallow_connection_picklingfromscrapy.spidersimportSpiderfrom..itemsimportCnblogshaha01ItemclasscnblogSpider(Spider):name="cnblogsHAHA01"#定......
  • UVM宏解释+odt文件转doc+merge命令和difflib+python调用命令+clog2和系统函数+java添
    UVM宏解释UVM_DISABLE_AUTO_ITEM_RECORDINGhttps://blog.csdn.net/MGoop/article/details/127295965itemrecord的方法主要是用于记录事务信息的,原理是调用accept_tr,begin_tr,end_tr。似乎和波形上显示出各个事务相关。默认情况下,在调用get_next_item()和item_done()时自动......
  • Count Valid Paths in a Tree
    CountValidPathsinaTreeThereisanundirectedtreewith n nodeslabeledfrom 1 to n.Youaregiventheinteger n anda2Dintegerarray edges oflength n-1,where edges[i]=[ui,vi] indicatesthatthereisanedgebetweennodes ui and v......
  • UVA12101 Prime Path
    PrimePath\(link\)题面翻译给你个整数\(T(T\leq100)\),接下来\(T\)行数据。每次给你俩数\(a,b\)(保证都是四位数且都为无前导零的质数),问\(a\)经过几次变换可以变成\(b\)。输出最少可以经过几次变换变成\(b\)的次数。如果变不成直接输出Impossible。规定\(a\)可以......
  • 告别os.path,拥抱pathlib
    pathlib模块是在Python3.4版本中首次被引入到标准库中的,作为一个可选模块。从Python3.6开始,内置的open函数以及os、shutil和os.path模块中的各种函数都可以正确地使用pathlib.Path对象了。最初,pathlib给人的感觉只是os.path的一个不必要的面向对象版本,不过,当你实际去......
  • Binary Tree Maximum Path Sum
    SourceGivenabinarytree,findthemaximumpathsum.Thepathmaystartandendatanynodeinthetree.ExampleGiventhebelowbinarytree,1/\23Return6.题解1-递归中仅返回子树路径长度题目很短,要求返回最大路径和。咋看一下......
  • python urllib.parse urlparse path url路径分割
    前言全局说明pythonurllib.parseurlparsepathurl路径分割一、获取路径部分#!/usr/bin/envpython3#coding:UTF-8#-*-coding:UTF-8-*-fromurllib.parseimporturlparseurl='http://www.baidu.com/aa/bb/cc/index.html'print("url:",url)parsed......
  • [Maven] pom.xml报"parent.relativePath" of POM xxxxxx
    0序1问题描述springboot项目pom.xml/maven报'parent.relativePath'ofPOMcom.know-data.framework:know-data-study-springboot:1.0.0-SNAPSHOT(F:\xxx\know-data-parent\know-data-study-parent\know-data-study-springboot\pom.xml)pointsatcom.k......
  • SqlServer:FOR XML PATH('')
    业务需求:需要将一个流程的所有节点办理人,接收时间,以每一条requestid为主,横向的排列起来展示。而OAe9里面,workflow_currentoperator表就是存节点接收人,接收时间的。 它的结构如下:一个requestid下面有很多节点数据,每个节点也可能重复,因为有办理人,抄送人。在结构上,我们需要将......