1. 程式人生 > 實用技巧 >7.16每日一題題解

7.16每日一題題解

National Project

涉及知識點:

  • 數學
  • 思維

solution:

  • 通過題意可知,本題一共有兩個地方要解決
  • 第一個就是要修完,第二個是要至少有一半的路是高質量的
  • 那麼因為好天氣和壞天氣是可以看做一個週期的,所以需要的總天數至少是一半路的長度/g(這個地方代表起碼修高質量路要的天數)*(g+b)
  • 然後我們要考慮一半路的長度和g的關係(其實沒必要考慮g和b的關係或者g和n的關係),
    • 發現如果一半路的長度 mod g 為零,那麼代表我們多修了一個b天的需要減掉
    • 發現如果一半路的長度 mod g 不為零,那麼代表我們少修了一個大於1小於g的天數,加上即可

std:

#include <cstdio>
#include <algorithm>
#include<iomanip>
#include <iostream>
#include <cmath>
#include <string>
#include <vector>
#include <set>
#include <queue>
#include <cstring>
#include<stack>
#include <cassert>
#include<map>
 

using namespace std;
typedef long long LL;
 
LL   n, k, m ;


LL i,j,g;
int main()
{
   
   double m ;
   int b,n;cin >>n;
   for(int i=1;i<=n;i++){
    cin >>m>> g>>b;
    j = ceil(m/2);
    LL sum =0 ;
    sum +=j/g*(g+b);
    if(j%g==0)sum-=b;
    else sum+=j%g;
    k = m;
   cout<<max(k,sum)<<endl;
   }
 
    return 0;
 
}