【BZOJ3939】Cow Hopscotch(动态开点线段树)
题意:
const mo=;
var t:array[..]of record
l,r,s:longint;
end; sum,a,dp:array[..,..]of longint;
root:array[..]of longint;
f:array[..]of longint;
n,m,i,j,s1,s2,cnt,k:longint; procedure pushup(x:longint);
var l,r:longint;
begin
l:=t[x].l; r:=t[x].r;
t[x].s:=(t[l].s+t[r].s) mod mo;
end; procedure update(var p:longint;l,r,x,v:longint);
var mid:longint;
begin
if p= then
begin
inc(cnt); p:=cnt;
end;
if l=r then
begin
t[p].s:=(t[p].s+v) mod mo; exit;
end;
mid:=(l+r)>>;
if x<=mid then update(t[p].l,l,mid,x,v)
else update(t[p].r,mid+,r,x,v);
pushup(p);
end; function query(p,l,r,x,y:longint):longint;
var mid:longint;
begin if (p=)or(x>y) then exit();
if (x<=l)and(y>=r) then exit(t[p].s);
mid:=(l+r)>>;
query:=;
if x<=mid then query:=(query+query(t[p].l,l,mid,x,y)) mod mo;
if y>mid then query:=(query+query(t[p].r,mid+,r,x,y)) mod mo;
end; begin
// assign(input,'bzoj3939.in'); reset(input);
// assign(output,'bzoj3939.out'); rewrite(output);
readln(n,m,k);
for i:= to n do
for j:= to m do read(a[i,j]); dp[,]:=;
for i:= to m do sum[,i]:=;
update(root[a[,]],,m,,); for i:= to n do
begin
for j:=m downto do
begin
s1:=sum[i-,j-];
s2:=query(root[a[i,j]],,m,,j-);
dp[i,j]:=((s1-s2) mod mo+mo) mod mo;
update(root[a[i,j]],,m,j,dp[i,j]);
end;
for j:= to m do
begin
f[j]:=(f[j-]+dp[i,j]) mod mo;
sum[i,j]:=(sum[i-,j]+f[j]) mod mo;
end;
end;
writeln(dp[n,m]);
{for i:=1 to n do
begin
for j:=1 to m do write(dp[i,j],' ');
writeln;
end; } close(input);
close(output);
end.
【BZOJ3939】Cow Hopscotch(动态开点线段树)的更多相关文章
- 【bzoj3939】[Usaco2015 Feb]Cow Hopscotch 动态开点线段树优化dp
题目描述 Just like humans enjoy playing the game of Hopscotch, Farmer John's cows have invented a varian ...
- [2016湖南长沙培训Day4][前鬼后鬼的守护 chen] (动态开点线段树+中位数 or 动规 or 贪心+堆优化)
题目大意 给定一个长度为n的正整数序列,令修改一个数的代价为修改前后两个数的绝对值之差,求用最小代价将序列转换为不减序列. 其中,n满足小于500000,序列中的正整数小于10^9 题解(引自mzx神 ...
- [bzoj 3531][SDOI2014]旅行(树链剖分+动态开点线段树)
题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=3531 分析: 对于每个颜色(颜色<=10^5)都建立一颗线段树 什么!那么不是M ...
- 【BZOJ-4636】蒟蒻的数列 动态开点线段树 ||(离散化) + 标记永久化
4636: 蒟蒻的数列 Time Limit: 30 Sec Memory Limit: 256 MBSubmit: 247 Solved: 113[Submit][Status][Discuss ...
- codeforces 893F - Physical Education Lessons 动态开点线段树合并
https://codeforces.com/contest/893/problem/F 题意: 给一个有根树, 多次查询,每次查询对于$x$i点的子树中,距离$x$小于等于$k$的所有点中权值最小的 ...
- codeforces 915E - Physical Education Lessons 动态开点线段树
题意: 最大$10^9$的区间, $3*10^5$次区间修改,每次操作后求整个区间的和 题解: 裸的动态开点线段树,计算清楚数据范围是关键... 经过尝试 $2*10^7$会$MLE$ $10^7$会 ...
- CF915E Physical Education Lessons 动态开点线段树
题目链接 CF915E Physical Education Lessons 题解 动态开点线段树 代码 /* 动态开点线段树 */ #include<cstdio> #include&l ...
- 洛谷P3313 [SDOI2014]旅行(树链剖分 动态开节点线段树)
题意 题目链接 Sol 树链剖分板子 + 动态开节点线段树板子 #include<bits/stdc++.h> #define Pair pair<int, int> #def ...
- NOIP2017 列队——动态开点线段树
Description: Sylvia 是一个热爱学习的女♂孩子. 前段时间,Sylvia 参加了学校的军训.众所周知,军训的时候需要站方阵. Sylvia 所在的方阵中有n×m名学生,方阵的行数为 ...
- 洛谷P3120 [USACO15FEB]牛跳房子(动态开节点线段树)
题意 题目链接 Sol \(f[i][j]\)表示前\(i\)行\(j\)列的贡献,转移的时候枚举从哪里转移而来,复杂度\(O(n^4)\) 然后考虑每一行的贡献,动态开节点线段树维护一下每种颜色的答 ...
随机推荐
- Lambda表达式。
函数式编程思想: 面向对象思想:做一件事,先找能解决这件事的对象,然后调用该对象相应方法. 面向过程思想:只要能获取到结果,怎么做的不重要,重视结果,不重视过程. 冗余的代码: public stat ...
- js中不容小觑的var声明
在学习vue相关课程中,有一次跟着老师敲代码,写出了如下代码: var Child = { template:`<div @click='handleClick'><slot> ...
- php 生成饼状图,折线图,条形图 通用类 2
生成饼状图,折线图,条形图通用的php类,这里使用的是国外的 HighCharts,前台页面别忘了调用HighCahrt js HighCharts中文网站 http://www.hcharts. ...
- hdu 2192 MagicBuilding
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission( ...
- Docker Hello World容器运行报错的解决办法
费了好大力气从Docker官网下载了Docker Community Editor的安装镜像,Docker.dmg, 总共将近500MB,双击进行安装: 命令行里使用docker version查看版 ...
- ref版的 摄像头 读取 因为id的时候,id不能重复 还要用时间戳,比较麻烦
<!-- * @description 摄像头vue版实例 * @fileName cameraObject.vue * @author 彭成刚 * @date // :: * @version ...
- Android N requires the IDE to be running with Java 1.8 or later
Android Studio需要两个JDK: ide jdk和project jdk: 前者是IDE本身运行使用的JDK. 后者用于编译Java代码 Project JDK 可以通过file-&g ...
- packet capture
1.下载地址:https://www.coolapk.com/apk/app.greyshirts.sslcapture
- C指针复制字符串从一个数组到另一个数组
#include <stdio.h> void copyString (char *to, char *from) { while ( *from ) // from指针遇 ...
- layui使用小记(持续更新)
关于Select等Form表单元素,在使用的时候部分特性会失效 如select自带的Search功能: 其实在使用Form表单元素的时候,你如果需要layui自带的一些功能(搜索,验证等),请用< ...