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;
 
}
posted @ 2020-07-16 11:54  QFNU-ACM  阅读(122)  评论(0编辑  收藏  举报