From d0ebfd4b92d407d08f114d62c2215475a6161370 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=84=E6=B5=B7?= <10402852@qq.com> Date: Sun, 17 Dec 2023 09:58:47 +0800 Subject: [PATCH] 'commit' --- TangDou/Topic/PrefixAndSuffix/P1083.cpp | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/TangDou/Topic/PrefixAndSuffix/P1083.cpp b/TangDou/Topic/PrefixAndSuffix/P1083.cpp index b822180..4dc4516 100644 --- a/TangDou/Topic/PrefixAndSuffix/P1083.cpp +++ b/TangDou/Topic/PrefixAndSuffix/P1083.cpp @@ -3,19 +3,19 @@ using namespace std; const int N = 1000010; #define int long long #define endl "\n" -int n, m; // 天数和订单的数量 -int r[N]; // 第i天学校有r[i]个教室可借用 -int d[N], s[N], t[N]; // 借的教室数目、从第s天借到t天 -int cf[N]; // 差分数组 -bool check(int x) { // 判断能不能通过x个人 - memset(cf, 0, sizeof(cf)); // 每次判断都要先初始化差分数组 - int sum = 0; // 记录需要借的教室数 +int n, m; // 天数和订单的数量 +int r[N]; // 第i天学校有r[i]个教室可借用 +int d[N], s[N], t[N]; // 借的教室数目、从第s天借到t天 +int b[N]; // 差分数组 +bool check(int x) { // 判断能不能通过x个人 + memset(b, 0, sizeof(b)); // 每次判断都要先初始化差分数组 + int sum = 0; // 记录需要借的教室数 for (int i = 1; i <= x; i++) { - cf[s[i]] += d[i]; // 因为只会对在s~l之间要借用教室的人产生影响,所以可以差分 - cf[t[i] + 1] -= d[i]; // 差分//注意是t[i]+1,因为要包含t[i]这个点 + b[s[i]] += d[i]; // 因为只会对在s~l之间要借用教室的人产生影响,所以可以差分 + b[t[i] + 1] -= d[i]; // 差分//注意是t[i]+1,因为要包含t[i]这个点 } for (int i = 1; i <= n; i++) { - sum += cf[i]; // 因为cf是差分数组,所以sum就是在第i天的借教室的总数 + sum += b[i]; // 因为cf是差分数组,所以sum就是在第i天的借教室的总数 if (sum > r[i]) // 如果要借的教室多于空的教室 return false; // 不可行 }