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\n",c); 8 return 0; 9 }