题目描述

给出一个长度为  的数列  和一个长度为  的数列 ,求  有多少个长度为  的连续子数列能与  匹配。

两个数列可以匹配,当且仅当存在一种方案,使两个数列中的数可以两两配对,两个数可以配对当且仅当它们的和不小于 。

输入格式

第一行三个数字 。
第二行有  个数字 。
第三行有  个数字 。

输出格式

输出一个数字, 有多少个长度为  的连续子数列能与  匹配。

样例

样例输入 1

5 2 10
5 3
1 8 5 5 7

样例输出 1

2

样例输入 2

2 2 6
2 3
3 4

样例输出 2

1

样例输入 3

4 2 10
5 5
9 3 8 9

样例输出 3

1

数据范围与提示

对于  的数据,;
对于  的数据,;
对于  的数据,;
对于  的数据,。

SOLUTION:
用霍尔定理可以推出一个式子
对a的一个区间
用sum i 表示a中连接b i的点的个数
若对于每一个sum i 满足 sum i>=i 则可以完美匹配
CODE:
#include <bits/stdc++.h>#define REP(i, a, b) for (int i = a; i <= b; ++i)
typedef long long ll;using namespace std;void File() {freopen("loj6062.in", "r", stdin);freopen("loj6062.out", "w", stdout);
}const int maxn = 1.5e5 + 10;
int n, m, h, a[maxn], b[maxn], ans;struct Segment_Tree {
#define mid ((l + r) >> 1)
#define lc rt << 1
#define rc rt << 1 | 1
#define lson lc, l, mid
#define rson rc, mid + 1, rint Min[maxn << 2], tag[maxn << 2];void pushdown(int rt) {Min[lc] += tag[rt];tag[lc] += tag[rt];Min[rc] += tag[rt];tag[rc] += tag[rt];tag[rt] = 0;}void build(int rt, int l, int r) {if (l == r)Min[rt] = -l;else {build(lson);build(rson);Min[rt] = min(Min[lc], Min[rc]);}}void modify(int rt, int l, int r, int L, int R, int x) {if (L > R)return;if (L <= l && r <= R) {Min[rt] += x;tag[rt] += x;} else {if (tag[rt])pushdown(rt);if (L <= mid)modify(lson, L, R, x);if (R >= mid + 1)modify(rson, L, R, x);Min[rt] = min(Min[lc], Min[rc]);}}
} T;void init() {scanf("%d%d%d", &n, &m, &h);REP(i, 1, m) scanf("%d", &b[i]);sort(b + 1, b + m + 1);REP(i, 1, n) {scanf("%d", &a[i]);a[i] = lower_bound(b + 1, b + m + 1, h - a[i]) - b;}T.build(1, 1, m);REP(i, 1, m - 1) T.modify(1, 1, m, a[i], m, 1);
}int main() {// File();init();REP(i, m, n) {T.modify(1, 1, m, a[i], m, 1);ans += (T.Min[1] >= 0);T.modify(1, 1, m, a[i - m + 1], m, -1);}printf("%d\n", ans);return 0;
}

  

转载于:https://www.cnblogs.com/zhangbuang/p/11270793.html

「2017 山东一轮集训 Day2」Pair (霍尔定理+线段树)相关推荐

  1. LOJ#6103. 「2017 山东二轮集训 Day2」第一题 解题报告

    LOJ#6103. 「2017 山东二轮集训 Day2」第一题 解题报告 前置知识:闭区间上的连续函数的零点存在性定理: 我们定义这样的函数: 定义域为 [ l , r ] ∩ Z [l,r]\cap ...

  2. #6073. 「2017 山东一轮集训 Day5」距离(树链剖分 + 永久标记主席树)

    #6073. 「2017 山东一轮集训 Day5」距离 给定一颗有nnn个节点带边权的树,以及一个排列ppp,path(u,v)path(u, v)path(u,v)为u,vu, vu,v路径上的点集 ...

  3. Loj #6077. 「2017 山东一轮集训 Day7」逆序对

    Loj #6077. 「2017 山东一轮集训 Day7」逆序对 Solution 令fi,jf_{i,j}fi,j​表示前iii个数产生jjj个逆序对的方案数,每次考虑把i+1i+1i+1加入,有i ...

  4. 容斥问卷调查反馈——Co-prime,Character Encoding,Tree and Constraints,「2017 山东一轮集训 Day7」逆序对

    文章目录 Co-prime source solution code Character Encoding source solution code Tree and Constraints sour ...

  5. LOJ#6072. 「2017 山东一轮集训 Day5」苹果树 解题报告

    LOJ#6072. 「2017 山东一轮集训 Day5」苹果树 解题报告 好苹果会组成连通块,整棵树的权值为 ∑ i = 1 n c i [ c i ≥ 0 ] [ s i z n u m ( c i ...

  6. LOJ#6074. 「2017 山东一轮集训 Day6」子序列

    LOJ#6074. 「2017 山东一轮集训 Day6」子序列 先考虑全局询问怎么做,设 f ( i , c ) f(i,c) f(i,c) 表示在 S 1 ⋯ i S_{1\cdots i} S1⋯ ...

  7. LOJ6079「2017 山东一轮集训 Day7」养猫

    养ImmortalCO k可重区间问题 的增强版:有上下界! 直接都选择s[i],然后再把一些调整到e[i] 考虑通过最大流的"最大",使得至少每k个有me个e, 通过最大流的&q ...

  8. 「2017 山东一轮集训 Day5」距离

    /* 写完开店再写这个题目顿时神清气爽, 腰也不疼了, 眼也不花了首先考虑将询问拆开, 就是查询一些到根的链和点k的关系根据我们开店的结论, 一个点集到一个定点的距离和可以分三部分算 那么就很简单了吧 ...

  9. [LOJ#6068]. 「2017 山东一轮集训 Day4」棋盘[费用流]

    题意 题目链接 分析 考虑每个棋子对对应的横向纵向的极大区间的影响:记之前这个区间中的点数为 \(x\) ,那么此次多配对的数量即 \(x\) . 考虑费用流,\(S\rightarrow 横向区间 ...

最新文章

  1. 一个严重损坏Excel深度修复案例
  2. Android NullPointerException解决方法(空指针异常)
  3. 2021.02.03 Visual QA论文阅读
  4. .net生成文字图片
  5. java如何改注释_关于Java:更改字符串值的注释
  6. django-一对多关系
  7. 将json字符串转换成html,根据json字符串生成Html的一种方式
  8. 基于simulink的16QAM仿真模型
  9. rs232接口_USB转RS232接口9针串口线,工控数据转接线驱动安装方法
  10. JAVA根据开始时间和结束时间获取天数
  11. 家庭生活保养保洁大全(化学保洁)
  12. 云原生架构下的 API 网关实践: Kong (三)
  13. 计算机主板提示ahci,电脑BIOS没有AHCI功能没有办法BIOS刷新怎么办
  14. 如何给边框添加阴影效果
  15. DPDK系列之三DPDK介绍及简单应用
  16. re管理器修改音量_[教程] 自己手动修改音量键和开机键的功能方法(小更新)
  17. Vue-创建组件时报错:Component names should conform to valid custom element name in html5 specification.
  18. 软件开发必备各大网站软件提交入口 软件发布入口汇总
  19. 王者荣耀改名神器助手微信小程序
  20. 能改变你一生的五句话

热门文章

  1. JButton 做图片框
  2. DLA实现跨地域、跨实例的多AnalyticDB读写访问
  3. 洛谷 2585 [ZJOI2006]三色二叉树——树形dp
  4. WPF 问题 PresentationCore.dll!System.Windows.Media.Composition.DUCE.Channel.SyncFlush() 分析
  5. !JS实战之随机像素图
  6. HTTP GET与POST区别
  7. There is no public key available for the following key IDs
  8. 人生致命的8个经典问题,你也常常犯傻
  9. 小小树微博制作记录笔记(一)
  10. 求教PHP+oracle的开发