• 51 Nod 1307 绳子与重物


                           1307 绳子与重物
    有N条绳子编号 0 至 N - 1,每条绳子后面栓了一个重物重量为Wi,绳子的最大负重为Ci。每条绳子或挂在别的绳子下或直接挂在钩子上(编号-1)。如果绳子下所有重物的重量大于绳子的最大负重就会断掉(等于不会断)。依次给出每条绳子的负重Ci、重物的重量Wi以及绳子会挂在之前的哪条绳子的下面,问最多挂多少个绳子而不会出现绳子断掉的情况。
     
    例如下图:
     
    5, 2, -1
    3, 3, 0
    6, 1, -1
    3, 1, 0
    3, 2, 3
     
     
     
    挂到第4个时会有绳子断掉,所以输出3。
     
     
    Input
    第1行:1个数N,表示绳子的数量(1 <= N <= 50000)。
    第2 - N + 1行:每行3个数,Ci, Wi, Pi,Ci表示最大负重,Wi表示重物的重量,Pi表示挂在哪个绳子上,如果直接挂在钩子上则Pi = -1(1 <= Ci <= 10^9,1 <= Wi <= 10^9,-1 <= Pi <= N - 2)。
    Output
    输出1个数,最多挂到第几个绳子,不会出现绳子断掉的情况。
    Input示例
    5
    5 2 -1
    3 3 0
    6 1 -1
    3 1 0
    3 2 3
    Output示例
    3

    思路: 并查集 每次向上更新 当前绳子的负重 如果超出限制 就退出
     
     1 #include <cstdio>
     2 #include <cctype>
     3 
     4 typedef long long LL;
     5 
     6 const int MAXN=50010;
     7 
     8 int n;
     9 
    10 bool flag;
    11 
    12 int w[MAXN],c[MAXN],f[MAXN];
    13 
    14 LL d[MAXN];
    15 
    16 inline void read(int&x) {
    17     int f=1;register char c=getchar();
    18     for(x=0;!isdigit(c);c=='-'&&(f=-1),c=getchar());
    19     for(;isdigit(c);x=x*10+c-48,c=getchar());
    20     x=x*f;
    21 }
    22 
    23 bool find(int p,int v) {
    24     if(p==-1) return true;
    25     if(d[p]+v>c[p]) return false;
    26     d[p]+=v;
    27     if(find(f[p],v)) return true;
    28     return false;
    29 }
    30 
    31 int hh() {
    32     read(n);
    33     
    34     for(int fa,i=0; i<n; ++i) {
    35         read(c[i]);read(w[i]);read(fa);
    36         f[i]=fa;
    37         if(!find(i,w[i])) {
    38             flag=true;
    39             printf("%d
    ",i);
    40             break;
    41         }
    42     }
    43     if(!flag) printf("%d
    ",n);
    44     
    45     return 0;
    46 }
    47 
    48 int sb=hh();
    49 int main(int argc,char**argv) {;}
    代码
    
    
    
     
  • 相关阅读:
    令人眼花缭乱的XP封面:)
    GT3.9.5中新增的DRS服务
    4月12日后WinXP系统将会强制下载SP2(zz)
    全球手机排名出炉 摩托三星西门子位置调整(zz)
    元宵佳节,悬谜竞猜
    Laszlo平台简介(zz)
    笔记本市场见闻
    最近Wallop好像较难上去啊
    Dell再次表示不采用AMD处理器(zz)
    Media Player Classic 6.4.8.3发布(zz)
  • 原文地址:https://www.cnblogs.com/whistle13326/p/7732059.html
Copyright © 2020-2023  润新知