Cows

思路:我们可以按照每个范围的S从小到大排序,相同的S按E从大到小排序,这样的好处是当前范围的S一定大于等于之前范围的S(即当前的范围可能被之前范围的包围),那么我们只需要统计之前的范围E比当前的范围E大于等于的有几个即可。这里需要注意如果两个范围完全相同的情况,我们可以把当前的范围与之前的范围比较,如果相同,直接把之前的答案复制到当前就可。

 #include <iostream>
#include <cstdio>
#include <queue>
#include <algorithm> #define lson (rt << 1)
#define rson ((rt << 1 | 1)
#define ll long long
#define pb push_back using namespace std; const int N = 1e5 + ;
struct node{
int number, l ,r;
bool friend operator<(const node& a, const node & b){
if(a.l != b.l) return a.l < b.l;
else return a.r > b.r;
}
}a;
vector<node > vn;
int tot[N], c[N], Max;
int n; inline int lb(int x){
return x&(-x);
} void add(int x){
for(int i = x; i <= Max; i += lb(i)) ++c[i];
} int sum(int x){
int sum = ;
for(int i = x; i >= ; i -= lb(i)) sum += c[i];
return sum;
} void solve(){ while(scanf("%d", &n) && n){
vn.clear();
Max = ;
for(int i = ; i <= n; ++i){
a.number = i;
scanf("%d%d", &a.l, &a.r);
++a.l; ++a.r;
Max = max(Max, a.r);
vn.pb(a);
}
sort(vn.begin(), vn.end());
for(int i = ; i <= n; ++i) tot[i] = ;
for(int i = ; i <= Max; ++i) c[i] = ;
int pre_l = -, pre_r = -, inx = -;
for(int i = ; i != vn.size(); ++i){
node it = vn[i];
if(it.l == pre_l && it.r == pre_r){ //范围相同
tot[it.number] = tot[inx];
add(it.r);
}
else{
pre_l = it.l; pre_r = it.r; inx = it.number; //改变前一个点
if(it.r - == ) tot[it.number] = sum(Max);
else tot[it.number] = sum(Max) - sum(it.r - );
add(it.r);
}
}
printf("%d", tot[]);
for(int i = ; i <= n; ++i) printf(" %d", tot[i]);
printf("\n");
}
} int main(){ solve(); return ;
}

最新文章

  1. 优化Table View
  2. [转]EntityFramework状态变化AutoDetectChangesEnabled与SaveChanged参数说明
  3. 【转】JVM 堆内存设置原理
  4. 从0开始学Swift笔记整理(三)
  5. SQLite(快速上手版)笔记
  6. 【python练习】截取网页里最新的新闻
  7. Dapper.NET使用(转)
  8. UItableViewCell上的button点击无响应的办法
  9. JS批量替换内容中关键词为超链接,避开已存在的链接和alt、title中的关键词
  10. Wampserver查看php配置信息
  11. #pragma编译指令
  12. Uva - 12050 Palindrome Numbers【数论】
  13. 计算机爱好者协会技术贴markdown第四期
  14. hsdfz -- 6.18 -- day3
  15. C#中执行Dos命令
  16. Javascript将html转成pdf,下载(html2canvas 和 jsPDF)
  17. 64位matlab中libsvm的安装
  18. Spring boot 报错 Unable to start EmbeddedWebApplicationContext due to missing EmbeddedServletContainerFactory bean.
  19. 流程设计器jQuery + svg/vml(Demo3 - 添加流程结点)
  20. redis 远程 访问 安全配置

热门文章

  1. 不一样的ZTree,权限树.js插件
  2. JZOJ 1301. treecut
  3. leetcode 249 250 set和map的简单用法
  4. spring boot actuator服务监控与管理
  5. 随着php7的发布我个人觉得有必要进行一下历史回顾和整理
  6. PHP攻击网站防御代码-以及攻击代码反译
  7. AspNetCore3.1源码解析_2_Hsts中间件
  8. LeetCode-最长回文串
  9. 如何使用域名访问自己的Windows服务器(Java web 项目)
  10. 懂一点Python系列——快速入门