【链接】h在这里写链接


【题意】


让你在n个点组成的集合里面选取不为空的集合s.
使得这里面的点没有出现某个点a和b,ax>=bx且ay>=by;
问你s的个数。

【题解】


我们把这些点按照(x,y)升序排(x优先,y次之).
然后按顺序处理这些点。
会发现.
我们在处理(x,y)点的时候.
只有它的左上方那些点是可以和他在一起的。
(也即xi<x 且 yi > y)
随便取左上方的矩形区域里面的一个点。都能组成一个集合。
但是随便取的那个点,可能也可以和它的左上方的更小的矩形区域里的某个点组合。
会发现这是一个DP的问题。
只要维护sum((x,y)的左上角矩形区域内的dp(x,y) )就可以了。
因为随便加上哪一个点的dp(xi,yi),就表示一定选(x,y)和(xi,yi)然后问题就能转化成以(xi,yi)作为(x,y)的一个问题了。
(隐藏含义:xi+1..x之间的所有点都不选。)
这个问题显然是重叠的。(之前已经解决过了。);
写个树状数组就能搞定。
把(1,1)..(x,y)这个矩形区域的减掉。就是左上角的了。
(选完(x,y)之后,dp(x,y)=左上角的dp(x,y)之和 + 1)
(因为不选(x,y)的左上角里的任意一个点也是可以的,只选(x,y),供后面的点继续做DP);
但是答案只递增(x,y)左上角的dp(x,y)之和

【错的次数】


0

【反思】


在这了写反思

【代码】

#include <bits/stdc++.h>
using namespace std; const int N = 1e5;
const long long MOD = 1e9 + 7; struct BI {
long long a[N + 10]; int lowbit(int x) {
return x&(-x);
} void add(int x, long long y) {
while (x <= N) {
a[x] = ((a[x] + y) % MOD + MOD) % MOD;
x += lowbit(x);
}
} long long sum(int x) {
long long now = 0;
while (x > 0) {
now = ((now + a[x]) % MOD + MOD) % MOD;
x -= lowbit(x);
}
return now;
} long long get_sum(int l, int r) {
return sum(r) - sum(l - 1);
} }b; vector <pair <int, int> > v;
int n;
long long sum = 0, ans = 0; int main() {
//freopen("F:\\rush.txt", "r", stdin);
ios::sync_with_stdio(0), cin.tie(0);
cin >> n;
for (int i = 1, x, y; i <= n; i++) {
cin >> x >> y;
v.push_back(make_pair(x, y));
}
sort(v.begin(), v.end());
b.add(v[0].second, 1);
int j = 1;
sum = 1;
while (j <= (int)v.size() - 1 && v[j].first == v[0].first) {
b.add(v[j].second, 1);
sum += 1;
j++;
}
ans = n;
for (int i = j; i <= n - 1; i++) {
long long temp = b.get_sum(1, v[i].second);
long long temp1 = ((sum - temp) % MOD + MOD) % MOD;
b.add(v[i].second, (temp1 + 1) % MOD);
ans = (ans + temp1) % MOD;
sum = (sum + temp1 + 1) % MOD;
}
cout << ans << endl;
return 0;
}

【CS Round #48 (Div. 2 only)】Dominant Free Sets的更多相关文章

  1. 【CS Round #48 (Div. 2 only)】8 Divisible

    [链接]h在这里写链接 [题意] 给你一个长度为n的数字(n<=1000) 然后让你任意组合这个数字. 使得这个数字能被8整除. (不能出现前导0) [题解] 只要后三位能被8整除就可以了. 则 ...

  2. 【CS Round #48 (Div. 2 only)】Water Volume

    [链接]h在这里写链接 [题意] 在这里写题意 [题解] 枚举0在哪个位置就好. [错的次数] 0 [反思] 在这了写反思 [代码] #include <bits/stdc++.h> us ...

  3. 【CS Round #48 (Div. 2 only)】Game of Chance

    [链接]h在这里写链接 [题意] 在这里写题意 [题解] 在这里写题解 [错的次数] 0 [反思] 在这了写反思 [代码] #include <bits/stdc++.h> using n ...

  4. 【Codeforces Round #432 (Div. 1) B】Arpa and a list of numbers

    [链接]h在这里写链接 [题意] 定义bad list是一个非空的.最大公约数为1的序列.给定一个序列,有两种操作:花费x将一个元素删除.花费y将一个元素加1,问你将这个序列变为good list所需 ...

  5. 【CS Round #36 (Div. 2 only) A】Bicycle Rental

    [题目链接]:https://csacademy.com/contest/round-36/task/bicycle-rental/ [题意] 让你从n辆车中选一辆车; 每一辆车有3个属性 1.到达车 ...

  6. 【CS Round #37 (Div. 2 only) D】Reconstruct Graph

    [Link]:https://csacademy.com/contest/round-37/task/reconstruct-graph/statement/ [Description] 给你一张图; ...

  7. 【CS Round #37 (Div. 2 only) B】Group Split

    [Link]:https://csacademy.com/contest/round-37/task/group-split/ [Description] 让你把一个数分成两个数a.b的和; (a,b ...

  8. 【CS Round #37 (Div. 2 only) A】Boring Number

    [Link]:https://csacademy.com/contest/round-37/task/boring-number/ [Description] 让你找离平均数最近的一个数的下标; [S ...

  9. 【CS Round #39 (Div. 2 only) D】Seven-segment Display

    [Link]:https://csacademy.com/contest/round-39/task/seven-segment-display/ [Description] 0..9各自有一个数字, ...

随机推荐

  1. Linux中为XEN网桥绑定物理网卡

    XEN虚拟机会默认将可以连通外网的网卡绑定到xenbr0上, 因此如果需要切换到其他物理网卡上时,需要自己配置脚本或执行命令. 1.添加脚本绑定 a.编写一个脚本,指定网卡与网桥绑定的关系 # vim ...

  2. HDOJ 4460 Friend Chains 图的最长路

    类似于树的直径,从随意一个点出发,找到距离该点最远的且度数最少的点. 然后再做一次最短路 Friend Chains Time Limit: 2000/1000 MS (Java/Others)    ...

  3. jquery源码03 (3184 , 3295) support : 功能检测

    <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content ...

  4. 如何让hudson的两个job共用一个svn工作目录

    作者:朱金灿 来源:http://blog.csdn.net/clever101 现在我的需求是这样的:一个软件需要编译完全版本和基础版本,完全版本的基础功能较多,基础版本只包含了基础功能.有时只需要 ...

  5. go channel实现

    go channel实现 Go语言经过多年的发展,于最近推出了第一个稳定版本.相对于C/C++来说,Go有很多独特之出,比如提供了相当抽象的工具,如channel和goroutine.本文主要介绍ch ...

  6. js中的组合模式

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. ajax事件(五)

    建立和探索一个简单示例之后,现在可以深入了解XMLHttpRequest对象支持的功能,以及如何在你的请求中使用它们了.起点就是第二级规范里定义的那些额外事件.之前已经使用一个:readystatec ...

  8. thuwc9102划水记

    thuwc9102划水记 Day -2 时隔两个月之后终于回一次家,心情非常愉悦,开始浪. Day 0 晚上回到学校,然而机房里并没多少人,大佬们明天才回来.╮(╯▽╰)╭ Day 1 中午饭菜挺好吃 ...

  9. mapper.xml中的常用标签

    mybatis的mapper xml文件中的常用标签 https://blog.csdn.net/qq_41426442/article/details/79663467 SQL语句标签 1.查询语句 ...

  10. iptables---linux防火墙

    iptables命令是Linux上常用的防火墙软件,是netfilter项目的一部分.可以直接配置,也可以通过许多前端和图形界面配置. 语法 iptables(选项)(参数) 选项 -t<表&g ...