2401_87299144 2024-11-13 12:15
浏览 2
已结题

打印机问题,测试用例过了,但就是过不了,求解答

img


#include <bits/stdc++.h>
#define ll unsigned long long
using namespace std;
ll n,k,sum,ans;
ll t[105],l[105],w[105];
int judge(ll s){
    sum=0;
    int i;
    for(i=0;i<n;i++){
        ll circle=s/(t[i]*l[i]+w[i]);
        ll resttime=s%(t[i]*l[i]+w[i]);
        sum+=circle*l[i];
        if(resttime>=t[i]*l[i]){
            sum+=l[i];
        }else if(resttime>t[i]){
            sum+=resttime/t[i];
        }
    }
    if(sum<k)return 0;
    else return 1;
}
void solve(){
    cin>>n>>k;
    int i;
    for(i=0;i<n;i++){
        cin>>t[i]>>l[i]>>w[i];
    }
    ll l1=0,r1=1e12,mid;
    while(l1<=r1){
        mid=(l1+r1)>>1;
        if(judge(mid)){
            ans=mid;
            r1=mid-1;
        }else{
            l1=mid+1;
        }
    }
    cout<<ans<<endl;
}
int main()
{
    int t;
    cin>>t;
    while(t--){
        solve();
    }
    return 0;
}
  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 11月21日
    • 创建了问题 11月13日