Codeforces 161A Dress'em in Vests!
来源:互联网 发布:私募股权投资数据 编辑:程序博客网 时间:2024/04/29 05:30
题意:
给你n<=1e5个a[i]和m<=1e5个b[i]和x、y,每个a[i]有个适配范围(a[i]-x,a[i]+y),每个b[i]如果在某个a[i]范围内即可适配而且只适配一次,问你最多能有几个b[i]适配。
思路:
先将a、b排个序,然后枚举a[i]和b[j]如果能适配就i++,j++,如果b[j]<a[i]-x那么说明b[j]对后面的a[i]也都不能适配(因为我们已经将a按从小到大排了)就j++,否则i++。
#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int MAX=1e5+5;int n,m,x,y,ans[MAX];struct Node{int s,id;}a[MAX],b[MAX];bool cmp(Node a,Node b){return a.s<b.s;}int main(){scanf("%d%d%d%d",&n,&m,&x,&y);for(int i=1;i<=n;i++){scanf("%d",&a[i].s);a[i].id=i;}for(int i=1;i<=m;i++){scanf("%d",&b[i].s);b[i].id=i;}sort(a+1,a+1+n,cmp);sort(b+1,b+1+m,cmp);int j=1,cnt=0;memset(ans,-1,sizeof(ans));for(int i=1;i<=n;i++){while(b[j].s<a[i].s-x&&j<=m) j++;if(a[i].s-x<=b[j].s&&a[i].s+y>=b[j].s){ans[i]=j;j++;cnt++;}if(j>m) break;}printf("%d\n",cnt);for(int i=1;i<=n;i++){if(ans[i]!=-1) printf("%d %d\n",i,ans[i]);}return 0;}
0 0
- Codeforces 161A Dress'em in Vests!
- A. Dress'em in Vests!
- Lesson 13 A new dress
- Leeson 7 A new dress
- codeforces 757 A. Gotta Catch Em' All!
- 【codeforces 757A】Gotta Catch Em' All!
- dress
- dress
- Please dress me in red 笔记
- this style of dress is in fashion
- Codeforces Round #391 -A. Gotta Catch Em' All!
- Codeforces 81A Plug-in
- codeforces Riding in a Lift
- codeforces Trees in a Row
- Thief in a Shop CodeForces
- Pearls in a Row CodeForces
- Trees in a Row CodeForces
- Five-In-a-Row CodeForces
- Python多进程编程
- 大数幂 C语言
- Android笔记 week3.1之"自定义控件"
- WKWebView与Js实战(OC版)
- CODEFORCES 501E Misha and Palindrome Degree <回文串 + 构成回文串的种数>
- Codeforces 161A Dress'em in Vests!
- C# 常见错误处理
- 【NOIP2014】D2T2 寻找道路
- 新的征途
- 修改hosts无法访问google
- Hibernate了解及配置
- ubuntu的Upstart启动流程
- String和equals()、hashCode()
- Activity管理—实现一次关闭所有的activity