1 条题解
-
0
-
时间转换:
- 每个研发中心i的本地时间 = 世界标准时间 + 小时
- 会议时间段 [x, x+1] 必须完全落在 [9, 18] 区间内
-
数学表达:
- 对于研发中心 i ,需要满足: (因为会议需要完整 1 小时,所以结束时间x+1+T_i ≤ 18)
-
等价条件:
-
问题转化:
- 寻找一个 x (0 ≤ x ≤ 23),使得满足条件的研发中心尽可能多
- 注意: x 是实数,但实际上只需要考虑整点(因为会议在整点开始)
#include<bits/stdc++.h> using namespace std; const int N=1e3+10; int a[N], b[N]; // a[i]存储第i个中心的工程师数,b[i]存储时区差 int main() { int n; cin >> n; // 输入研发中心数量 for(int i=1; i<=n; i++){ cin >> a[i] >> b[i]; // 输入每个中心的工程师数和时区差 } int ans = 0; // 初始化最大工程师数 for(int i=0; i<=23; i++){ // 枚举所有可能的会议开始时间(UTC 0-23点) int sum = 0; // 当前会议时间能参与的工程师总数 for(int j=1; j<=n; j++){ // 遍历每个研发中心 int x = (b[j] + i) % 24; // 计算会议在j中心的本地开始时间 if(x>=9 && x<18){ // 检查会议是否完全在9:00-18:00内(1小时会议,结束时间为x+1) sum += a[j]; // 如果是,累加工程师数 } } ans = max(ans, sum); // 更新最大工程师数 } cout << ans; // 输出结果 return 0; } -
- 1
信息
- ID
- 577
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 2
- 已通过
- 1
- 上传者