• [FZYZOJ 2106] 备份数据


    P2106 -- 备份数据

    时间限制:250MS

    内存限制:1024KB

    Description

    其实,在PXT想办法逃出机房的时候,CJK已经知道了事情的经过。整个一中的所有服务器受到了黑客的攻击,这些黑客的目的很明显——毁掉所有的成绩数据。如果成绩丢失,所有学生将会面临在寒假重新参加所有科目的考试!那将是多大的损失!看着座位旁堆得高高的书本,CJK决定拼尽全力,将数据备份下来。

    风,轻轻地略过总控制室,带着沙沙的令人有一丝寒意的雨丝。光是服务器,就有50万台,每一台都存着几百G的数据……CJK不敢想了。如何把这些数据备份起来呢?

    突然,他眼角瞥到一个小相框——那是他的好基友X。他们曾经无话不谈,可现在却天各一方……CJK将相框反过来,他惊奇的发现——相框的背面写着的,竟是他们以前上课无聊时,随口谈起的数据备份法。而X,竟然把它具体化了——CJK不禁泪流满面……

    根据X的理论体系,把N台服务器构成树形结构,每一台服务器都有一个“父亲”和一个“数据关键字”。每个服务器的数据关键字由数据经过很强的压缩得到,都在2^32以内。当CJK执行“备份”指令的时候,从距离CJK(0号服务器)最远的服务器开始,每一台服务器通过“推送操作”:将父亲的数据关键字加上自己的数据关键字,来完成数据传输,将自己的数据移动到父亲服务器。也就是说,这是这样的一个操作:

    Data[Father[i]] += Data[i];

    当然,一台服务器只有自己的儿子都推送完成,才能向自己的父亲推送,所以是按照深度从大到小的顺序推送。这样一层一层上去,最后数据会汇总到CJK的服务器(编号为0,数据关键字初始为0)里。由于绝妙的压缩方式,那几千几万的数据变为一个小小的整数,一中有救了!CJK需要这个数据对2^32取模(求余)的结果,他只需要用这个数就能恢复出所有数据。

    突然,CJK发现自己不能动弹了。黑客已经趁CJK陷入回忆的那一瞬间,将CJK控制锁定。时间和内存都所剩无几,CJK希望你能帮他完成这项艰巨的任务。

    让我们帮助CJK,一起备份数据,解放寒假!

    Input Format

    第一行一个整数N,表示N台服务器。

    下面N行,每行N个整数,第i行表示编号为i的服务器。

    每一行两个整数,分别表示第i个服务器的父亲和数据关键字。

    Output Format

    一个整数,表示CJK需要的数字。

    Sample Input

    1
    0 0

    Sample Output

    0
    

    Hint

    40:N <= 100

    100: N <= 500 000

    【题解】其实嘛,就是把所有的数据加在一起而已

    而且发现数据规模非常小,没必要取模。

    于是很快AC了。。。

    1 #include<bits/stdc++.h>
    2 using namespace std;
    3 int main() {
    4     int a,b,c=0;
    5     scanf("%d",&a);
    6     while(a--) {scanf("%*d%d",&b);c+=b;}
    7     printf("%u
    ",c);
    8     return 0;
    9 }
    View Code
    这篇文章由TonyFang发布。 所有解释权归TonyFang所有。 Mailto: tony-fang@map-le.net
  • 相关阅读:
    alias这个命令还是很有用的
    为什么不推荐用破解版的winrar
    chrome headless
    关于PDF的一些书籍
    PDF的一些工具
    3DPDF是个什么东西?
    你可能不知道的pdf的功能
    为什么一些公司把dwg文件转化为pdf
    关于pdf阅读器的选择
    接外包怎么保护自己的作品
  • 原文地址:https://www.cnblogs.com/TonyNeal/p/fzyzoj2106.html
Copyright © 2020-2023  润新知