打卡信奥刷题(3140)用C++实现信奥题 P7628 [COCI 2011/2012 #1] PLES

张开发
2026/4/20 21:28:00 15 分钟阅读

分享文章

打卡信奥刷题(3140)用C++实现信奥题 P7628 [COCI 2011/2012 #1] PLES
P7628 [COCI 2011/2012 #1] PLES题目描述舞会上有N NN个男孩和N NN个女孩我们知道他们的身高。规定每个人最多只能和一个舞伴跳舞。每个男孩要么想和比他高的女孩跳舞要么想和比他矮的女孩跳舞。类似地每个女孩要么想和比她高的男孩跳舞要么想和比她矮的男孩跳舞。没有同样高的男孩和女孩想和对方跳舞。求如果遵照每个人的意愿最大的舞伴对数是多少。输入格式输入的第一行包含一个正整数N NN。接下来N NN行每行包含一个整数A i A_iAi​。A i A_iAi​的绝对值表示第i ii个男孩的身高。如果A i A_iAi​为正数表示第i ii个男孩想和比他高的女孩跳舞如果A i A_iAi​为负数表示第i ii个男孩想和比他矮的女孩跳舞。接下来N NN行每行包含一个整数B j B_jBj​。B j B_jBj​的绝对值表示第j jj个女孩的身高。如果B j B_jBj​为正数表示第j jj个女孩想和比他高的男孩跳舞如果B j B_jBj​为负数表示第j jj个女孩想和比他矮的男孩跳舞。输出格式输出一行一个整数表示最大的舞伴对数。输入输出样例 #1输入 #11 -1800 1800输出 #10输入输出样例 #2输入 #21 1700 -1800输出 #21输入输出样例 #3输入 #32 -1800 -2200 1900 1700输出 #32说明/提示【数据范围】对于100 % 100\%100%的数据1 ≤ N ≤ 10 5 1 \le N \le 10^51≤N≤1051500 ≤ ∣ A i , B j ∣ ≤ 2500 1500 \le |A_i,B_j| \le 25001500≤∣Ai​,Bj​∣≤2500。【说明】本题分值按 COCI 原题设置满分110 110110。题目译自COCI2011-2012 CONTEST #1T4 PLES。C实现#includebits/stdc.husingnamespacestd;intn,x,o,oo,ooo,oooo,ans,a[1000010],b[1000010],c[1000010],d[1000010],l1;boolcmp(intx,inty){returnxy;}intmain(){scanf(%d,n);for(inti1;in;i){scanf(%d,x);if(x0)a[o]x;elseb[oo]x;}for(inti1;in;i){scanf(%d,x);if(x0)c[ooo]x;elsed[oooo]x;}sort(a1,a1o,cmp);//由于该数组统计的负数绝对值小的反而大 所以应从大到小排sort(c1,c1ooo,cmp);//同上sort(b1,b1oo);sort(d1,d1oooo);for(inti1;io;i){if(d[l]-a[i]loooo){ans;l;}}l1;for(inti1;iooo;i){if(b[l]-c[i]loo){ans;l;}}printf(%d,ans);return0;}后续接下来我会不断用C来实现信奥比赛中的算法题、GESP考级编程题实现、白名单赛事考题实现记录日常的编程生活、比赛心得感兴趣的请关注我后续将继续分享相关内容

更多文章