2013 Multi-University Training Contest 10
HDU-4698 Counting
题意:给定一个二维平面,其中x取值为1-N,y取值为1-M,现给定K个点,问至少包括K个点中的一个的满足要求的<Xmin, Xmax, Ymin, Ymax>共有多少中取值情况。也就是说K个点中至少一个点落在所给定的区间内。
解法:正面求解,由于点只有1000个,因此直接暴力离散化之后的x轴坐标,对于y轴则可以通过增加一个一个加入点,使用一个set来维护纵轴有多少种不同的取法。
#include <cstdlib>
#include <cstring>
#include <cstdio>
#include <algorithm>
#include <set>
using namespace std; typedef long long LL;
const int N = ;
const int mod = int(1e9)+;
const int inf = 0x7fffffff;
struct Point {
int x, y;
Point() {}
Point(int _x, int _y) : x(_x), y(_y) {}
bool operator < (const Point &t) const {
if (x != t.x) return x < t.x;
else return y < t.y;
}
}p[N];
int n, m, K;
int val[N];
set<int>st;
set<int>::iterator it1, it2; int main() {
while (scanf("%d %d %d", &n, &m, &K) != EOF) {
for (int i = ; i <= K; ++i) {
scanf("%d %d", &p[i].x, &p[i].y);
val[i] = p[i].x;
}
sort(p+, p+K+);
sort(val+, val++K);
int cnt = unique(val, val+K+)-val; // 去重之后的x轴坐标
val[] = ; val[cnt++] = n+;
LL ret = ;
for (int i = ; i < cnt-; ++i) {
st.clear(); st.insert(); st.insert(m+);
LL sum = ;
for (int j = i; j < cnt-; ++j) {
int left = lower_bound(p+, p++K, Point(val[j], ))-p;
int right = upper_bound(p+, p++K, Point(val[j], inf))-p;
for (int k = left; k < right; ++k) { // x轴取值为val[j]的点一次性取出来
if (st.count(p[k].y)) continue;
st.insert(p[k].y);
it1 = it2 = st.find(p[k].y);
it1--, it2++; // 找前一个和后一个
sum = (sum+1LL*(p[k].y-*(it1))*(*(it2)-p[k].y)%mod)%mod; // 新增加的y值对,统计只跨过该点的
}
ret = (ret+sum*(val[i]-val[i-])%mod*(val[j+]-val[j])%mod)%mod
}
}
printf("%I64d\n", ret);
}
return ;
}
2013 Multi-University Training Contest 10的更多相关文章
- 2016 Multi-University Training Contest 10
solved 7/11 2016 Multi-University Training Contest 10 题解链接 分类讨论 1001 Median(BH) 题意: 有长度为n排好序的序列,给两段子 ...
- hdu 5416 CRB and Tree(2015 Multi-University Training Contest 10)
CRB and Tree Time Limit: 8000/4000 MS (J ...
- 2015 Multi-University Training Contest 10 hdu 5406 CRB and Apple
CRB and Apple Time Limit: 12000/6000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)To ...
- 2015 Multi-University Training Contest 10 hdu 5412 CRB and Queries
CRB and Queries Time Limit: 12000/6000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Other ...
- [二分,multiset] 2019 Multi-University Training Contest 10 Welcome Party
Welcome Party Time Limit: 4000/4000 MS (Java/Others) Memory Limit: 524288/524288 K (Java/Others)T ...
- 2015 Multi-University Training Contest 10(9/11)
2015 Multi-University Training Contest 10 5406 CRB and Apple 1.排序之后费用流 spfa用stack才能过 //#pragma GCC o ...
- hdu4705 Y 2013 Multi-University Training Contest 10
Y Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) Total Submis ...
- hdu4704 Sum 2013 Multi-University Training Contest 10 数论题
Sum Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) Total Subm ...
- 2016 Multi-University Training Contest 10 || hdu 5860 Death Sequence(递推+单线约瑟夫问题)
题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=5860 题目大意:给你n个人排成一列编号,每次杀第一个人第i×k+1个人一直杀到没的杀.然后 ...
随机推荐
- React Native微信分享 朋友圈分享 Android/iOS 通用
超详细React Native实现微信好友/朋友圈分享功能-Android/iOS双平台通用 2016/06/16 | React Native技术文章 | Sky丶清| 暂无评论 | 1 ...
- 怎么样 解决nginx负载均衡的session共享问题呢
php服务器有多台,用nginx做负载均衡,这样同一个IP访问同一个页面会被分配到不同的服务器上,如果session不同步的话,就会出现很多问题,比如说最常见的登录状态,下面提供了几种方式来解决ses ...
- 嵌入式jetty的HTTP实现
2 嵌入式jetty的HTTP实现 布拉君君 2.1 简单HTTP实现 2.1.1 HTTP SERVER端实现 2.1.1.1 HTTP SERVER端实现概述 在代码中嵌入一个Jetty s ...
- SQLite详解
一.新建SQLite操作类(继承SQLiteOpenHelper) public class SQLiteTest extends SQLiteOpenHelper { final static St ...
- js笔记----(运动)淡入淡出
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...
- nodejs表单验证
//创建express连接 var exp = require('xepress'), http = require('http'); //初始化exprerss模块 var app = exp(); ...
- oracle触发器自增字段
1.创建序列 代码 -- Create sequence create sequence seq_userinfo minvalue 1 start with 1 increment by 1; 2. ...
- hiho 第118周 网络流四·最小路径覆盖
描述 国庆期间正是旅游和游玩的高峰期. 小Hi和小Ho的学习小组为了研究课题,决定趁此机会派出若干个调查团去沿途查看一下H市内各个景点的游客情况. H市一共有N个旅游景点(编号1..N),由M条单向游 ...
- torch基本命令
命令行输入th进入torch框架 命令行输入th + lua文件表示用torch执行lua文件
- log4j---------学习总结(一)
一.log4j框架 log4j可靠的,快速的,可扩展的(灵活的)日志框架 log4j具有高可配置性,可以通过外部配置文件来控制 log4j可以根据日志不同级别来过滤日志, log4j可以将日志记录直接 ...