P14340 [JOISC 2019] 考试 / Examination题解
P14340 [JOISC 2019] 考试 / Examination
题目描述
NNN 名学生参加了一场考试,考试包含数学和信息学两个部分。第 iii 名学生(1≤i≤N1 \le i \le N1≤i≤N)在数学部分得了 SiS_iSi 分,在信息学部分得了 TiT_iTi 分。T 教授和 I 教授将根据分数决定每名学生是否通过考试。
- T 教授认为两门科目都重要;他希望数学得分至少为 AAA 分且信息学得分至少为 BBB 分的学生才能通过。
- I 教授只关心总分;他希望总分至少为 CCC 分的学生才能通过。
- 只有两位教授都希望其通过的学生才能通过考试。
你不知道这些标准的具体数值:即 AAA、BBB 和 CCC 的值。相反,给定 QQQ 组整数三元组 (Xj,Yj,Zj)(X_j, Y_j, Z_j)(Xj,Yj,Zj)(1≤j≤Q1 \le j \le Q1≤j≤Q),你希望知道当 A=XjA = X_jA=Xj、B=YjB = Y_jB=Yj、C=ZjC = Z_jC=Zj 时,通过考试的学生人数。
编写一个程序,输入学生人数、每名学生的分数以及一些标准,计算在每组标准下通过考试的学生人数。
输入格式
从标准输入读取以下数据。输入中的所有值均为整数。
N QN\ QN Q
S1 T1S_1\ T_1S1 T1
⋮\vdots⋮
SN TNS_N\ T_NSN TN
X1 Y1 Z1X_1\ Y_1\ Z_1X1 Y1 Z1
⋮\vdots⋮
XQ YQ ZQX_Q\ Y_Q\ Z_QXQ YQ ZQ
输出格式
向标准输出写入 QQQ 行。第 jjj 行(1≤j≤Q1 \le j \le Q1≤j≤Q)应包含当 A=XjA = X_jA=Xj、B=YjB = Y_jB=Yj、C=ZjC = Z_jC=Zj 时通过考试的学生人数。
输入输出样例 #1
输入 #1
5 4
35 100
70 70
45 15
80 40
20 95
20 50 120
10 10 100
60 60 80
0 100 100
输出 #1
2
4
1
1
输入输出样例 #2
输入 #2
10 10
41304 98327
91921 28251
85635 59191
30361 72671
28949 96958
99041 37826
10245 2726
19387 20282
60366 87723
95388 49726
52302 69501 66009
43754 45346 3158
25224 58881 18727
7298 24412 63782
24107 10583 61508
65025 29140 7278
36104 56758 2775
23126 67608 122051
56910 17272 62933
39675 15874 117117
输出 #2
1
3
5
8
8
3
3
3
5
6
说明/提示
样例 1 解释
- 当 A=20A = 20A=20、B=50B = 50B=50 且 C=120C = 120C=120 时,只有第 1 名和第 2 名学生能在数学中至少得 20 分,在信息学中至少得 50 分,且总分至少为 120 分。因此,通过考试的学生人数为 2。
- 当 A=10A = 10A=10、B=10B = 10B=10 且 C=100C = 100C=100 时,只有第 1 名、第 2 名、第 4 名和第 5 名学生能在数学中至少得 10 分,在信息学中至少得 10 分,且总分至少为 100 分。因此,通过考试的学生人数为 4。
- 当 A=60A = 60A=60、B=60B = 60B=60 且 C=80C = 80C=80 时,只有第 2 名学生能在数学中至少得 60 分,在信息学中至少得 60 分,且总分至少为 80 分。因此,通过考试的学生人数为 1。
- 当 A=0A = 0A=0、B=100B = 100B=100 且 C=100C = 100C=100 时,只有第 1 名学生能在数学中至少得 0 分,在信息学中至少得 100 分,且总分至少为 100 分。因此,通过考试的学生人数为 1。
数据范围
- 1≤N≤100 0001 \le N \le 100\,0001≤N≤100000。
- 1≤Q≤100 0001 \le Q \le 100\,0001≤Q≤100000。
- 0≤Si≤1 000 000 0000 \le S_i \le 1\,000\,000\,0000≤Si≤1000000000(1≤i≤N1 \le i \le N1≤i≤N)。
- 0≤Ti≤1 000 000 0000 \le T_i \le 1\,000\,000\,0000≤Ti≤1000000000(1≤i≤N1 \le i \le N1≤i≤N)。
- 0≤Xj≤1 000 000 0000 \le X_j \le 1\,000\,000\,0000≤Xj≤1000000000(1≤j≤Q1 \le j \le Q1≤j≤Q)。
- 0≤Yj≤1 000 000 0000 \le Y_j \le 1\,000\,000\,0000≤Yj≤1000000000(1≤j≤Q1 \le j \le Q1≤j≤Q)。
- 0≤Zj≤2 000 000 0000 \le Z_j \le 2\,000\,000\,0000≤Zj≤2000000000(1≤j≤Q1 \le j \le Q1≤j≤Q)。
子任务
- (2 分)N≤3 000N \le 3\,000N≤3000,Q≤3 000Q \le 3\,000Q≤3000。
- (20 分)Si≤100 000S_i \le 100\,000Si≤100000,Ti≤100 000T_i \le 100\,000Ti≤100000(1≤i≤N1 \le i \le N1≤i≤N),Xj≤100 000X_j \le 100\,000Xj≤100000,Yj≤100 000Y_j \le 100\,000Yj≤100000,Zj=0Z_j = 0Zj=0(1≤j≤Q1 \le j \le Q1≤j≤Q)。
- (21 分)Si≤100 000S_i \le 100\,000Si≤100000,Ti≤100 000T_i \le 100\,000Ti≤100000(1≤i≤N1 \le i \le N1≤i≤N),Xj≤100 000X_j \le 100\,000Xj≤100000,Yj≤100 000Y_j \le 100\,000Yj≤100000,Zj≤200 000Z_j \le 200\,000Zj≤200000(1≤j≤Q1 \le j \le Q1≤j≤Q)。
- (57 分)无额外约束。
翻译由 Qwen3-235B 完成
思路
直接暴力,直接卡过。
代码见下
#include<bits/stdc++.h>
using namespace std;
int n,q,s[200005],t[200005],a,b,c,f;
int main(){
cin>>n>>q;
for(int i=1;i<=n;i++){
cin>>s[i]>>t[i];
}
for(int i=1;i<=q;i++){
cin>>a>>b>>c;
f=0;
for(int j=1;j<=n;j++){
f+=s[j]>=a&t[j]>=b&s[j]+t[j]>=c;
}
cout<<f<<endl;
}
return 0;
}

浙公网安备 33010602011771号