bzoj 1227 [SDOI2009]虔诚的墓主人
疯狂re 换了一种写法才过。。。
思路:将x轴离散化,处理出来每个点上下左右一个有多少个点, 对于同一行的两个点来说,他们之间的
这些空的点都是可以一起算的,我们用树状数组按y轴从小到大维护 每一列的贡献和。。
#include<bits/stdc++.h> #define LL long long #define fi first #define se second #define mk make_pair #define pii pair<int,int> #define piii pair<int, pair<int,int> >using namespace std;const int N = 1e5 + 10; const int M = 1e5 + 7; const int inf = 0x3f3f3f3f; const LL INF = 0x3f3f3f3f3f3f3f3f; const int mod = 1e9 + 7; const double eps = 1e-6;int x[N], y[N], tot1, tot2, n, m, w, k,f[N][11], sum[N];struct Bit {int a[N];void modify(int x, int v) {for(int i = x; i <= tot1; i += i & -i) {a[i] += v;}}int sum(int x) {int ans = 0;for(int i = x; i; i -= i & -i) {ans += a[i];}return ans;}int query(int l, int r) {r = min(tot1, r);if(l > r) return 0;return sum(r) - sum(l - 1);}}bit;struct Point {Point(int x = 0, int y = 0) {this -> x = x;this -> y = y;}int x, y, l, r, u, d;bool operator < (const Point &rhs) const {if(y == rhs.y) return x < rhs.x;return y < rhs.y;} }p[N];vector<Point> v[N];int C(int a, int b) {return f[a][b]; }void init() {p[0].y = -1; p[w + 1].y = -1;for(int i = 0; i < N; i++) {for(int j = 0; j <= 10 && j <= i; j++) {if(!j || j == i) f[i][j] = 1;else f[i][j] = f[i - 1][j] + f[i - 1][j - 1];}} }int main() {scanf("%d%d%d", &n, &m, &w);init();for(int i = 1; i <= w; i++) {scanf("%d%d", &p[i].x, &p[i].y);x[++tot1] = p[i].x;y[++tot2] = p[i].y;}scanf("%d", &k);sort(x + 1, x + tot1 + 1); tot1 = unique(x + 1, x + tot1 + 1) - x - 1;sort(y + 1, y + tot2 + 1); tot2 = unique(y + 1, y + tot2 + 1) - y - 1;sort(p + 1, p + w + 1);for(int i = 1; i <= w; i++) p[i].x = lower_bound(x + 1, x + tot1 + 1, p[i].x) - x;int ans = 0, tmp = 0;for(int i = 1; i <= w; i++) {if(p[i].y == p[i -1].y) tmp++;else tmp = 1;p[i].l = tmp;sum[p[i].x]++;p[i].u = sum[p[i].x];}tmp = 0;for(int i = w; i >= 1; i--) {if(p[i].y == p[i + 1].y) tmp++;else tmp = 1;p[i].r = tmp; p[i].d = sum[p[i].x] - p[i].u;}for(int i = 1; i <= w; i++) {bit.modify(p[i].x, C(p[i].u, k) * C(p[i].d, k) - bit.query(p[i].x, p[i].x));if(i > 1 && p[i].y == p[i - 1].y)ans += C(p[i - 1].l, k) * C(p[i].r, k) * bit.query(p[i - 1].x + 1, p[i].x - 1);}printf("%d\n", ans & 2147483647);return 0; }/* */
转载于:https://www.cnblogs.com/CJLHY/p/9129627.html
bzoj 1227 [SDOI2009]虔诚的墓主人相关推荐
- 1227: [SDOI2009]虔诚的墓主人
1227: [SDOI2009]虔诚的墓主人 Time Limit: 5 Sec Memory Limit: 259 MB Submit: 1083 Solved: 514 [Submit][St ...
- BZOJ1227 [SDOI2009]虔诚的墓主人 【树状数组】
题目 小W 是一片新造公墓的管理人.公墓可以看成一块N×M 的矩形,矩形的每个格点,要么种着一棵常青树,要么是一块还没有归属的墓地.当地的居民都是非常虔诚的基督徒,他们愿意提前为自己找一块合适墓地.为 ...
- bzoj1227: [SDOI2009]虔诚的墓主人(树状数组,组合数)
传送门 首先,对于每一块墓地,如果上下左右各有$a,b,c,d$棵树,那么总的虔诚度就是$C_k^a*C_k^b*C_k^c*C_k^d$ 那么我们先把所有的点都给离散,然后按$x$为第一关键字,$y ...
- [SDOI2009]虔诚的墓主人
这个题是今天上午模拟赛做的,考场上代码最后时间紧写得巨丑,所以改完以后还是巨丑 80分做法 这是考场上写的,然而数学实在太渣,不知道在模数下不能做除法,组合数部分写ci了 组合数预处理 首先都知道组合 ...
- 虔诚的墓主人(bzoj 1227)
Description 小W 是一片新造公墓的管理人.公墓可以看成一块N×M 的矩形,矩形的每个格点,要么种着一棵常青树,要么是一块还没有归属的墓地.当地的居民都是非常虔诚的基督徒,他们愿意提前为自己 ...
- 【SDOI2009】【BZOJ1227】虔诚的墓主人
Description 小W 是一片新造公墓的管理人.公墓可以看成一块N×M 的矩形,矩形的每个格点,要么种着一棵常青树,要么是一块还没有归属的墓地.当地的居民都是非常虔诚的基督徒,他们愿意提前为自己 ...
- BZOJ 1875[SDOI2009]HH去散步
题面: 1875: [SDOI2009]HH去散步 Time Limit: 20 Sec Memory Limit: 64 MB Submit: 1750 Solved: 851 [Submit] ...
- BZOJ 1878: [SDOI2009]HH的项链
1878: [SDOI2009]HH的项链 Time Limit: 4 Sec Memory Limit: 64 MB Submit: 3548 Solved: 1757 [Submit][Sta ...
- BZOJ 1878: [SDOI2009]HH的项链( BIT )
离线处理 , 记下询问的左右端点并排序 , 然后可以利用树状数组 , 保证查询区间时每种颜色只计算一次 ------------------------------------------------ ...
最新文章
- c语言农夫过河游戏代码解释,农夫过河C++代码
- SpringBoot 自定义Kafka消息序列化和反序列化
- B1有个自定义表操作慢
- 2019编译ffepeg vs_如何在windows10下使用vs2017编译最新版本的FFmpeg和ffplay
- 如何进入embl的ebi网站fasta3服务器,The EMBL-EBI bioinformatics web and programmatic tools framework...
- ndk linux 最新版本,NDK各版本下载
- x264 scan8存储分析
- web跨域问题解决方案
- 使用vue element-ui 打印组件
- c语言大华面试题,大华股份的一道笔试题 C/C++
- 单片机加减法C语言,单片机的加减法原理
- 汽车如何打蜡 汽车打蜡有什么要注意的地方
- springboot 之 Starter
- 那些年搞不懂的高深术语——依赖倒置•控制反转•依赖注入•面向接口编程
- 女孩学医好还是学计算机好,女生选择学医好吗 学医有多累
- 怎么样导包测试JavaWeb代码?
- SDP offer-answer协商原则
- 奖学金用计算机怎表达,奖学金感谢信怎么写
- github上优秀的第三方开元库整理
- realtek高清晰音频管理器没有声音设置?
热门文章
- asp.net core 2.0 api ajax跨域问题
- 帝国CMS标签 总结2
- 2014校招 百度试题及答案
- android 栈溢出 检查,安卓源码编译完成后打包时出现栈溢出,求大家解决
- 老男孩python爬虫视频教程_python爬虫入门
- JDK1.8 HashMap 深入理解
- (04)System Verilog 利用函数通用总线激励驱动方法
- java 基础做增删改查教学_Java Mybatis 增删改查 简单使用 入门 简版
- 7003.node.js环境搭建及三方软件包
- 【蓝桥杯单片机】PWM(LED亮度调节)