记录编号 611361 评测结果 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
题目名称 [THUPC 2025 Final] 石墨烯 最终得分 100
用户昵称 GravatarLikableP 是否通过 通过
代码语言 C++ 运行时间 6.325 s
提交时间 2026-01-28 22:44:27 内存使用 5.75 MiB
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll t,n,k,pos,a[1000009],stk[1000009];
inline ll read(){
  ll s = 0,w = 1;
  char ch = getchar();
  while (ch > '9' || ch < '0'){ if (ch == '-') w = -1; ch = getchar();}
  while (ch <= '9' && ch >= '0') s = (s << 1) + (s << 3) + (ch ^ 48),ch = getchar();
  return s * w;
}
bool judge(ll x){
  ll l = 1,r = 0,res = 0;
  for (ll i = pos;i >= pos - n;i -= 1){
    if (l <= r && stk[l] - i > x) l += 1;
    if (pos - i >= x) res += max(0ll,a[stk[l]] - a[i]);
    if (res > k) return 0;
    while (l <= r && a[stk[r]] > a[i]) r -= 1;
    stk[++ r] = i;
  }
  return 1;
}
int main(){
  freopen("thupc_2025_canteen.in", "r", stdin);
  freopen("thupc_2025_canteen.out", "w", stdout);
  t = read();
  while (t --){
    n = read(),k = read();
    ll suma = 0;
    for (ll i = 1;i <= n;i += 1) a[i] = read(),suma += a[i];
    for (ll i = 1;i <= n;i += 1) a[i] -= read(),a[i + n] = a[i];
    if (suma == k){puts("0"); continue;}
    for (ll i = 1;i <= 2 * n;i += 1) a[i] += a[i - 1];
    pos = n;
    for (ll i = n + 1;i <= 2 * n;i += 1) if (a[i] < a[pos]) pos = i;
    ll l = 1,r = n,ans = n;
    while (l <= r){
      ll mid = (l + r) >> 1;
      if (judge(mid)) ans = mid,r = mid - 1;
      else l = mid + 1;
    }
    printf("%lld\n",ans);
  }
  return 0;
}