题意

题目链接

Sol

\(f[i][j]\)表示前\(i\)行\(j\)列的贡献,转移的时候枚举从哪里转移而来,复杂度\(O(n^4)\)

然后考虑每一行的贡献,动态开节点线段树维护一下每种颜色的答案

转移的时候用总的方案减去相同颜色的方案

复杂度\(O(n^2 log^2 n)\)

#include<bits/stdc++.h>
#define LL long long
using namespace std;
const int MAXN = 1001, INF = 1e9 + 10, mod = 1000000007, SS = MAXN * MAXN * 10;
inline int read() {
char c = getchar(); int x = 0, f = 1;
while(c < '0' || c > '9') {if(c == '-') f = -1; c = getchar();}
while(c >= '0' && c <= '9') x = x * 10 + c - '0', c = getchar();
return x * f;
}
int add(int x, int y) {
if(x + y < 0) return x + y + mod;
return x + y >= mod ? x + y - mod : x + y;
}
int N, M, K, c[MAXN][MAXN], f[MAXN][MAXN], tot;
int root[SS], ls[SS], rs[SS], sum[SS];
void IntAdd(int &k, int l, int r, int pos, int val) {
if(!k) k = ++tot;
sum[k] = add(sum[k], val);
if(l == r) return ;
int mid = l + r >> 1;
if(pos <= mid) IntAdd(ls[k], l, mid, pos, val);
else IntAdd(rs[k], mid + 1, r, pos, val);
}
int Query(int k, int l, int r, int ll, int rr) {
if(!k) return 0;
if(ll <= l && r <= rr) return sum[k];
int mid = l + r >> 1;
if(ll > mid) return Query(rs[k], mid + 1, r, ll, rr);
else if(rr <= mid) return Query(ls[k], l, mid, ll, rr);
else return add(Query(ls[k], l, mid, ll, rr), Query(rs[k], mid + 1, r, ll, rr));
}
signed main() {
N = read(); M = read(); K = read();
f[1][1] = 1;
for(int i = 1; i <= N; i++) {
for(int j = 1; j <= M; j++) {
int k = read(); c[i][j] = k;
if(!f[i][j]) f[i][j] = add(Query(root[0], 1, M, 1, j - 1), -Query(root[k], 1, M, 1, j - 1)); }
for(int j = 1; j <= M; j++)
IntAdd(root[0], 1, M, j, f[i][j]),
IntAdd(root[c[i][j]], 1, M, j, f[i][j]);
}
cout << f[N][M];
return 0;
}

洛谷P3120 [USACO15FEB]牛跳房子(动态开节点线段树)的更多相关文章

  1. 洛谷 P3120 [USACO15FEB]牛跳房子(金)Cow Hopscotch (Gold)

    P3120 [USACO15FEB]牛跳房子(金)Cow Hopscotch (Gold) 就像人类喜欢跳格子游戏一样,FJ的奶牛们发明了一种新的跳格子游戏.虽然这种接近一吨的笨拙的动物玩跳格子游戏几 ...

  2. 洛谷P3313 [SDOI2014]旅行(树链剖分 动态开节点线段树)

    题意 题目链接 Sol 树链剖分板子 + 动态开节点线段树板子 #include<bits/stdc++.h> #define Pair pair<int, int> #def ...

  3. 洛谷P3960 列队(动态开节点线段树)

    题意 题目链接 Sol 看不懂splay..,看不懂树状数组... 只会暴力动态开节点线段树 观察之后不难发现,我们对于行和列需要支持的操作都是相同的:找到第\(k\)大的元素并删除,在末尾插入一个元 ...

  4. BZOJ4636: 蒟蒻的数列(动态开节点线段树)

    题意 题目链接 Sol 直接上动态开节点线段树 因为只有一次询问,所以中途不需要下传标记 #include<bits/stdc++.h> #define LL long long usin ...

  5. Codeforces 803G Periodic RMQ Problem ST表+动态开节点线段树

    思路: (我也不知道这是不是正解) ST表预处理出来原数列的两点之间的min 再搞一个动态开节点线段树 节点记录ans 和标记 lazy=-1 当前节点的ans可用  lazy=0 没被覆盖过 els ...

  6. 洛谷P4632 [APIO2018] New Home 新家(动态开节点线段树 二分答案 扫描线 set)

    题意 题目链接 Sol 这题没有想象中的那么难,但也绝对不简单. 首先把所有的询问离线,按照出现的顺序.维护时间轴来处理每个询问 对于每个询问\((x_i, y_i)\),可以二分答案\(mid\). ...

  7. BZOJ 3065 替罪羊树+动态开节点线段树

    思路: RT 可以看VFK的题解 我写了半天拍了半天... 不过是$nlog^2n$的 要写垃圾回收的 线段树 如果某个节点的sum是0  也可以free掉 //By SiriusRen #inclu ...

  8. 【BZOJ-4636】蒟蒻的数列 动态开点线段树 ||(离散化) + 标记永久化

    4636: 蒟蒻的数列 Time Limit: 30 Sec  Memory Limit: 256 MBSubmit: 247  Solved: 113[Submit][Status][Discuss ...

  9. BZOJ 3531 [Sdoi2014]旅行 树链剖分+动态开点线段树

    题意 S国有N个城市,编号从1到N.城市间用N-1条双向道路连接,满足从一个城市出发可以到达其它所有城市.每个城市信仰不同的宗教,如飞天面条神教.隐形独角兽教.绝地教都是常见的信仰. 为了方便,我们用 ...

随机推荐

  1. 【wireshark】插件开发(一):概述

    1. 概述 wireshark提供了灵活的插件机制,使用户可以方便地扩展wireshark的功能.插件的功能主要包括,但不限于协议解析器. 可以使用Lua或C语言来编写Wireshark插件,下表对比 ...

  2. 逆向工程生成的Mapper.xml以及*Example.java详解

    逆向工程生成的接口中的方法详解 在我上一篇的博客中讲解了如何使用Mybayis逆向工程针对单表自动生成mapper.java.mapper.xml.实体类,今天我们先针对mapper.java接口中的 ...

  3. 【xsy1144】选物品 主席树

    题目大意:$N$ 件物品摆成一排,给每个物品定义两个属性 $A$ 和$ B$,两件物品的 差异度 定义为它们两种属性的差的绝对值中较大的一个.如果要求出一些物品的差异度,我们先定义一个 理想物品,使它 ...

  4. POJ 2346

    #include<iostream> #include<stdio.h> using namespace std; ,,,,}; int main() { int num; c ...

  5. LeetCode All in One题解汇总(持续更新中...)

    突然很想刷刷题,LeetCode是一个不错的选择,忽略了输入输出,更好的突出了算法,省去了不少时间. dalao们发现了任何错误,或是代码无法通过,或是有更好的解法,或是有任何疑问和建议的话,可以在对 ...

  6. (转) mysql之status和variables区别及用法详解

    原文:http://blog.csdn.net/andyzhaojianhui/article/details/50052117

  7. Java学习之路(十二):IO流<二>

    字符流 字符流是可以直接读写字符的IO流 使用字符流从文件中读取字符的时候,需要先读取到字节数据,让后在转换为字符 使用字符流向文件中写入字符时,需要把字符转为字节在写入文件 Reader和Write ...

  8. 【jQuery源码】preFilter

    preFilter: { "ATTR": function( match ) { //属性名解码 match[1] = match[1].replace( runescape, f ...

  9. 【数组】Sort Colors

    题目: Given an array with n objects colored red, white or blue, sort them so that objects of the same ...

  10. Windows Server2016服务器系统创建域服务器

    原先是有图片,因为图片是直接粘贴上来的,发布之后图片都看见了,然后都使用上传图片的方式才搞定,这也是博客园比较坑的地方: 也可以查看该链接含图片: http://www.cnblogs.com/all ...