暂无链接

战争

【题目描述】

人类在火星上的殖民地日渐发达,它们之间自然地构建起了多条交通运输道路,形成一个树状结构。

具体的说,人类在火星上已经有了nnn个殖民地,用编号1∼n1\sim n1∼n表示,这nnn个殖民地由n−1n−1n−1条边连通。

同时,编号为i殖民地拥有一定的文明点数wiw_iwi​,并且wi=iw_i=iwi​=i。两个殖民地u,vu,vu,v可以交流并产生文明价值,当且仅当u,vu,vu,v连通,交流产生的文明价值为wu×wvw_u×w_vwu​×wv​,不连通的殖民地无法产生文明价值。火星的文明价值即为所有殖民地点对u,vu,vu,v的文明价值的和。

公元233323332333年,外星文明进攻了火星。这一场浩劫导致一些殖民地在许多场先后进行的战争中被破坏,一共进行了mmm场战争,每一场战争有多个殖民地被破坏。破坏后的殖民地残存大量辐射寸草不生,既无法被经过也无法与其他殖民地交流。全球陷入了空前的危机。

为了做好最坏的打算,你希望可以准确计算出战争爆发前(没有殖民地被破坏时)火星的文明价值,以及每轮战斗后,火星现存的文明价值。

【输入】

第一行两个正整数: n,mn,mn,m分别表示殖民地个数和战争场数

第二行n−1n−1n−1个整数,第iii个数fif_ifi​代表殖民地i+1i+1i+1与fif_ifi​有一条道路(0&lt;fi≤i)(0&lt;f_i≤i)(0<fi​≤i)。

接下来依次有mmm行:

第iii行第一个数为正整数kkk,接下来kkk个数分别代表第iii时刻被破坏的殖民地编号。

【输出】

一共有m+1m+1m+1行输出。

第一行输出在000时刻的答案,

第222到m+1m+1m+1行分别输出一个整数sumsumsum表示第i−1i−1i−1时刻后(即一些殖民地在i−1时刻被破坏后)的答案。(注:答案对(109+710^9+7109+7)取模)

【输入样例】

3 2
1 2
1 2
1 3

【输出样例】

11
0
0

【提示】
【数据范围】

对于30%30\%30%的数据:n≤200n≤200n≤200
对于60%60\%60%的数据:n≤2000n≤2000n≤2000
对于100%100\%100%的数据:n≤106,m≤nn≤10^6,m≤nn≤106,m≤n

题解

离线删除操作,倒着做插入操作,加入点后如果联通块个数减少,新联通块的权值即为原来两个联通块的权值之和加上两权值之积。

所以我们大力并查集,维护联通块权值和即可。

代码
#include<bits/stdc++.h>
#define pos add[i][j]
using namespace std;
const int M=1e6+6,mod=1e9+7;
int f[M],ans[M],val[M],n,m,r;
bool gg[M];
char c;
vector<int>add[M],mmp[M];
int read()
{for(r=0;!isdigit(c);c=getchar());for(;isdigit(c);c=getchar())r=(r<<1)+(r<<3)+c-'0';return r;
}
void out(int x)
{if(x>9)out(x/10);putchar(x%10+'0');
}
int root(int v){return f[v]==v?v:f[v]=root(f[v]);}
void link(int x,int y){if(root(x)==root(y))return;(val[root(y)]+=val[root(x)])%=mod;f[root(x)]=root(y);}
void in()
{n=read(),m=read();for(int i=2,a;i<=n;++i)a=read(),mmp[a].push_back(i),mmp[i].push_back(a);for(int i=1,j,a,b;i<=m;++i)for(a=read(),j=1;j<=a;++j)b=read(),add[i].push_back(b),gg[b]=1;
}
void ac()
{for(int i=1;i<=n;++i)f[i]=val[i]=i;for(int i=1;i<=n;++i)if(!gg[i])for(int j=mmp[i].size()-1;j>=0;--j)if(!gg[mmp[i][j]]&&root(i)!=root(mmp[i][j]))ans[m+1]+=val[root(i)]*val[root(mmp[i][j])],link(i,mmp[i][j]);for(int i=m;i;--i){ans[i]=ans[i+1];for(int j=add[i].size()-1;j>=0;--j)gg[add[i][j]]=0;for(int j=add[i].size()-1;j>=0;--j)for(int k=mmp[pos].size()-1;k>=0;--k)if(!gg[mmp[pos][k]]&&root(mmp[pos][k])!=root(pos))(ans[i]+=1ll*val[root(mmp[pos][k])]*val[root(pos)]%mod)%=mod,link(mmp[pos][k],pos);}for(int i=1;i<=m+1;++i)out(ans[i]),putchar(10);
}
int main(){in(),ac();}

[2018.10.23 T1] 战争相关推荐

  1. 2018.10.23 第2周的第1次小组讨论

    2018.10.23 第2周的第1次小组讨论 签到表 问题陈述 附录一 国际标准的围棋规则 附录2 界面显示 签到表 学号 姓名 状态 1120151719 马小东 到 1120151725 王鹏宇 ...

  2. 数据结构----顺序表的增和遍历(2018/10/23)

    数据结构包含顺序表和链表 顺序表方便改和查 链表便于增删 顺序表的增和遍历: 代码一: 1 using System;2 namespace deaiWith3 {4 class MySeqList& ...

  3. 【NOIP2018模拟赛2018.10.23】木门道伏击战

    题目 木门道伏击战(intercept) [题目背景] 建兴九年(231 年), 诸葛亮率蜀军四出祁山. 司马懿料到蜀军粮草不济,坚守 不出,又命人在成都散布诸葛亮欲谋反的谣言.刘禅听信谣言,下旨命诸 ...

  4. 2018 10 23

    昨天计划11点睡,结果11点躺下,11点30睡的,看看早睡对于今天工作的效果 转载于:https://www.cnblogs.com/swobble/p/9834542.html

  5. 2018年10月训练记录(10.1~10.23)

    前言 这篇博客记录的是我在201820182018年101010月的刷题列表. 由于时间比较匆忙,可能会有一些空链接,但我会尽快将它们补齐的. (目前链接已补至Oct7thOct\ 7thOct 7t ...

  6. 【比赛报告】2018.10.11校赛[8-2情人节欢乐赛] NOIP练习赛卷十二

    比赛时间:2018.10.10 选手:lrllrl 成绩 100+100+100=300 用时:约1h T1 果实计数 显然易得,答案为 b n m o d    k b^n\mod k bnmodk ...

  7. 2018.10.9模拟赛

    2018.10.9模拟赛 T1 trade 正解:贪心 据说lyd讲过但并没有印象QAQ,考场上现推浪费了不少时间 其实就开个小根堆,每次把堆顶取出来看它是不是比当前的 a[i]a[i]a[i] 小, ...

  8. 【一周头条盘点】中国软件网(2018.10.29~2018.11.2)

    每一个企业级应用的人都置顶了中国软件网 中国软件网为你带来最新鲜的行业干货 一周热点 2018年第二季度SaaS公有云市场研究报告 SEG发布了"2018年第二季度SaaS公共市场报告&qu ...

  9. c语言程序设计实验指导交大答案,C语言程序设计实验指导_上交大_课前练习-改错-完善程序-课后练习参考答案--2018.10修改.doc...

    C语言程序设计实验指导_上交大_课前练习-改错-完善程序-课后练习参考答案--2018.10修改.doc 实验一 Visual C集成环境实验内容(一)程序改错1.(1)无法运行(2)将第二个C程序重 ...

  10. 10天精读掌握:计算机组成与设计(COAD:Patterson and Hennessy) (第4天 2018/10.29)

    10天精读掌握:计算机组成与设计COAD:Patterson and Hennessy 第4天 2018/10.29 1. 第4次周计划概览 2. 今日学习成果 3. 今日时间表 4. 今日反思 5. ...

最新文章

  1. Web开发人员必读的12个网站
  2. WinEdt(latex)详而简单教程
  3. mysql-索引-笔记
  4. PhotoGun中文版
  5. cocos2dx3.0-tinyxml在Android环境下解析xml失败的问题
  6. 视频类搜索引擎优化教程侧重点
  7. MySQL中的BLOB类型
  8. 第九篇:Spring Boot整合Spring Data JPA_入门试炼04
  9. innerHTML、innerText和outerHTML、outerText的区别
  10. feign服务器响应数据量过大,SpringCloud之Feign 性能优化
  11. php定时发送生日模块消息_RabbitMQ之消息的可靠性投递
  12. Java中做比较介绍
  13. java安装了怎么打开_怎么安装打开java
  14. 最高效的XML解析方式-----Simple 简化 XML 解析
  15. 【生活】深圳驾考经历
  16. 服务器浏览器怎么打不开网页,电脑能上qq打不开网页怎么回事?
  17. 「实用」打造自我感觉非常漂亮的Mac终端
  18. HTMLdiv标签滑条
  19. 51nod 1423 最大“二货”【单调栈】
  20. Java实验二 货物进销管理系统【简单易懂】

热门文章

  1. Lagrangian乘子法 对偶问题 KKT条件 Slater条件 与凸优化
  2. 怎么破坏联合索引,使ABC的联合索引,走B的索引
  3. Tomcat一直启动不成功,连接不到8080(持续更新带图解释并总结了其他博文)
  4. linux edi esi eax 汇编指令,汇编指令lodsb和stosb、lodsd和stosd
  5. java mysql备份_java调用mysql服务做备份与恢复
  6. 删除html注释 python,用Python提取HTML源码中的注释与去掉注释
  7. selenium-绕过登录
  8. asp.net core 系列之Reponse caching 之 Response Caching Middleware(4)
  9. python 删除大表数据
  10. mysql数据库创建删除带横杠的数据库名