牛客-牛牛的Link Power II
题目传送门
sol:可以用线段树来维护,线段树的节点除了标配的$l$和$r$同时记录该区间$link$的个数记为$cnt$,该区间$link$点的和记为$sum$,该区间题目中所谓的能量记为$dis$。然后$cnt$和$sum$就直接两个儿子相加就好,$dis$还要另外加上$segTree[rs].sum * segTree[ls].cnt - segTree[ls].sum * segTree[rs].cnt$这部分。
- 线段树
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
typedef pair<int, int> PII;
const int MAXN = 1e5 + ;
const int MOD = 1e9 + ;
struct Node {
int l, r;
int cnt;
int sum, dis;
} segTree[ * MAXN];
void push_up(int i) {
int ls = i << , rs = i << | ;
segTree[i].cnt = segTree[ls].cnt + segTree[rs].cnt;
segTree[i].sum = (segTree[ls].sum + segTree[rs].sum) % MOD;
segTree[i].dis = (1LL * segTree[rs].sum * segTree[ls].cnt - 1LL * segTree[ls].sum * segTree[rs].cnt) % MOD;
segTree[i].dis = (1LL * MOD + segTree[i].dis + segTree[ls].dis + segTree[rs].dis) % MOD;
}
void build(int i, int l, int r) {
segTree[i].l = l;
segTree[i].r = r;
if (l == r) {
int k = getchar() ^ '';
segTree[i].cnt = k;
segTree[i].sum = k * l;
return;
}
int mid = l + r >> ;
build(i << , l, mid);
build(i << | , mid + , r);
push_up(i);
}
void update(int i, int k, int data) {
if (segTree[i].l == segTree[i].r) {
segTree[i].cnt = data;
segTree[i].sum = data * segTree[i].l;
return;
}
int mid = segTree[i].l + segTree[i].r >> ;
if (k <= mid) update(i << , k, data);
else update(i << | , k, data);
push_up(i);
}
int main() {
int n; scanf("%d%*c", &n);
build(, , n);
printf("%d\n", segTree[].dis);
int q; scanf("%d", &q);
while (q--) {
int op, k;
scanf("%d%d", &op, &k);
if (op == ) update(, k, );
else update(, k, );
printf("%d\n", segTree[].dis);
}
return ;
}这个线段树如果要查询某个区间的dis其实不大好写,但是题目中所有的查询都是针对整棵树,也就是segTree[1]。所以省掉了询问函数。
牛客-牛牛的Link Power II的更多相关文章
- 2020牛客寒假算法基础集训营3 - G. 牛牛的Link Power II(线段树)
题目链接:牛牛的Link Power II 题意:给你一个只含$0$和$1$的串,定义串的$Link$值为串中两个的$1$之间的距离的和,$(u,v)$和$(v,u)$被看认为是同一对,有$m$次操作 ...
- 2020牛客寒假算法基础集训营3 G.牛牛的Link Power II (树状数组维护前缀和)
https://ac.nowcoder.com/acm/contest/3004/G 发现每个“1”对于它本身位置产生的影响贡献为0,对前面的“1”有产生贡献,对后面的"1"也产生 ...
- 牛客挑战赛 39 牛牛与序列 隔板法 容斥 dp
LINK:牛牛与序列 (牛客div1的E题怎么这么水... 还没D难. 定义一个序列合法 当且仅当存在一个位置i满足 $a_i>a_,a_j<a_$且对于所有的位置i,$1 \leq a_ ...
- 2019牛客暑期多校训练营(第九场)A:Power of Fibonacci(斐波拉契幂次和)
题意:求Σfi^m%p. zoj上p是1e9+7,牛客是1e9: 对于这两个,分别有不同的做法. 前者利用公式,公式里面有sqrt(5),我们只需要二次剩余求即可. 后者mod=1e9,5才 ...
- 牛客训练21674——牛牛与LCM
Problem 链接:https://ac.nowcoder.com/acm/problem/21674 来源:牛客网 牛牛最近在学习初等数论,他的数学老师给他出了一道题,他觉得太简单了, 懒得做,于 ...
- 牛牛与后缀表达式_via牛客网
题目 链接:https://ac.nowcoder.com/acm/contest/28537/B 来源:牛客网 时间限制:C/C++ 3秒,其他语言6秒 空间限制:C/C++ 262144K,其他语 ...
- 牛客多校第九场 && ZOJ3774 The power of Fibonacci(二次剩余定理+斐波那契数列通项/循环节)题解
题意1.1: 求\(\sum_{i=1}^n Fib^m\mod 1e9+9\),\(n\in[1, 1e9], m\in[1, 1e4]\) 思路1.1 我们首先需要知道斐波那契数列的通项是:\(F ...
- 牛客 小a与星际探索 bfs
链接:https://ac.nowcoder.com/acm/contest/317/C?&headNav=acm来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ ...
- 牛客练习赛38 D 出题人的手环
链接 [https://ac.nowcoder.com/acm/contest/358/D] 题意 链接:https://ac.nowcoder.com/acm/contest/358/D 来源:牛客 ...
随机推荐
- 18个python的高效编程技巧
01 交换变量 >>>a=3 >>>b=6 这个情况如果要交换变量在c++中,肯定需要一个空变量.但是python不需要,只需一行,大家看清楚了 >>& ...
- 吴裕雄--天生自然JAVA SPRING框架开发学习笔记:Java Spring的特点和优点
Spring 是另一个主流的 Java Web 开发框架,该框架是一个轻量级的应用框架,具有很高的凝聚力和吸引力. Spring 是分层的 Java SE/EE full-stack 轻量级开源框架, ...
- UML-线程标示法
继续前一章<缓存策略>,既然用缓存,那如何保证数据同步呢?即:缓存里的数据和DB里的数据一致. 解决:LocalProducts每隔N分钟查询并更新它的缓存(定时器) 如果LocalPro ...
- 201771010123汪慧和《面向对象程序设计Java》第十六周实验总结
一.理论部分 1.程序与进程的概念 ‐程序是一段静态的代码,它是应用程序执行的蓝本. ‐进程是程序的一次动态执行,它对应了从代码加载.执行至执行完毕的一个完整过程. ‐操作系统为每个进程分配一段独立的 ...
- python counter、闭包、generator、解数学方程、异常
1.counter 2.闭包 3.generator 4.解数学方程 5.异常 1.python库——counter from collections import Counter breakfast ...
- dbcp连接池的一些方法
创建连接 // 简写版: Connection conn =null; Statement st =null; conn = DBCP.getConnection(); st=conn.createS ...
- eclipse导入tomcat源码
我的开发环境:windows7 64位 一.官网下载tomcat源码.在此奉上一站地址:http://archive.apache.org/dist/tomcat/: 二.编译源码生成.jar文件: ...
- ZOJ 3765 Lights (zju March I)伸展树Splay
ZJU 三月月赛题,当时见这个题目没辙,没学过splay,敲了个链表TLE了,所以回来好好学了下Splay,这道题目是伸展树的第二题,对于伸展树的各项操作有了更多的理解,这题不同于上一题的用指针表示整 ...
- 查看docker的挂载目录
docker inspect container_name | grep Mounts -A 20docker inspect container_id | grep Mounts -A 20
- PAT Advanced 1135 Is It A Red-Black Tree (30) [红⿊树]
题目 There is a kind of balanced binary search tree named red-black tree in the data structure. It has ...