• The 2018 ACM-ICPC Asia Qingdao Regional Contest, Online J Press the Button


    BaoBao and DreamGrid are playing a game using a strange button. This button is attached to an LED light (the light is initially off), a counter and a timer and functions as follows:

    • When the button is pressed, the timer is set to (v+0.5) seconds (no matter what the value of the timer is before the button is pressed), where v is a given integer, and starts counting down;
    • When the button is pressed with the LED light off, the LED light will be lit up;
    • When the button is pressed with the LED light on, the value of the counter will be increased by 1;
    • When the timer counts down to 0, the LED light goes out (that is to say, the light is off).

    During the game, BaoBao and DreamGrid will press the button periodically. If the current real time (that is to say, the time elapsed after the game starts, NOT the value of the timer) in seconds is an integer and is a multiple of a given integer a, BaoBao will immediately press the button b times; If the current time in seconds is an integer and is a multiple of another given integer c, DreamGrid will immediately press the button d times.

    Note that

    • 0 is a multiple of every integer;
    • Both BaoBao and DreamGrid are good at pressing the button, so it takes no time for them to finish pressing;
    • If BaoBao and DreamGrid are scheduled to press the button at the same second, DreamGrid will begin pressing the button d times after BaoBao finishes pressing the button b times.

    The game starts at 0 second and ends after t seconds (if the button will be pressed at t seconds, the game will end after the button is pressed). What's the value of the counter when the game ends?

    Input

    There are multiple test cases. The first line of the input contains an integer T (about 100), indicating the number of test cases. For each test case:

    The first and only line contains six integers a, b, c, d, v and t (1a,b,c,d106​​, 1v,t1012​​). Their meanings are described above.

    Output

    For each test case output one line containing one integer, indicating the value of the counter when the game ends.

    Sample Input
    2
    8 2 5 1 2 18
    10 2 5 1 2 10
    
    Sample Output
    6
    4
    
    Hint

    We now explain the first sample test case.

    • At 0 second, the LED light is initially off. After BaoBao presses the button 2 times, the LED light turns on and the value of the counter changes to 1. The value of the timer is also set to 2.5 seconds. After DreamGrid presses the button 1 time, the value of the counter changes to 2.
    • At 2.5 seconds, the timer counts down to 0 and the LED light is off.
    • At 5 seconds, after DreamGrid presses the button 1 time, the LED light is on, and the value of the timer is set to 2.5 seconds.
    • At 7.5 seconds, the timer counts down to 0 and the LED light is off.
    • At 8 seconds, after BaoBao presses the button 2 times, the LED light is on, the value of the counter changes to 3, and the value of the timer is set to 2.5 seconds.
    • At 10 seconds, after DreamGrid presses the button 1 time, the value of the counter changes to 4, and the value of the timer is changed from 0.5 seconds to 2.5 seconds.
    • At 12.5 seconds, the timer counts down to 0 and the LED light is off.
    • At 15 seconds, after DreamGrid presses the button 1 time, the LED light is on, and the value of the timer is set to 2.5 seconds.
    • At 16 seconds, after BaoBao presses the button 2 times, the value of the counter changes to 6, and the value of the timer is changed from 1.5 seconds to 2.5 seconds.
    • At 18 seconds, the game ends.

    求出a和c的最小公倍数,所以0到最小公倍数之间即为一循环节,暴力跑出循环节,最后单独处理即可。

    #include <iostream>
    #include <algorithm>
    #include <cstring>
    #include <cstdio>
    #include <vector>
    #include <queue>
    #include <stack>
    #include <cstdlib>
    #include <iomanip>
    #include <cmath>
    #include <cassert>
    #include <ctime>
    #include <map>
    #include <set>
    using namespace std;
    #pragma comment(linker, "/stck:1024000000,1024000000")
    #define lowbit(x) (x&(-x))
    #define max(x,y) (x>=y?x:y)
    #define min(x,y) (x<=y?x:y)
    #define MAX 100000000000000000
    #define MOD 1000000007
    #define pi acos(-1.0)
    #define ei exp(1)
    #define PI 3.1415926535897932384626433832
    #define ios() ios::sync_with_stdio(true)
    #define INF 0x3f3f3f3f
    #define mem(a) ((a,0,sizeof(a)))
    typedef long long ll;
    ll t, a, b, c, d, v, T;
    int main() {
        scanf("%lld", &T);
        while(T--) {
            scanf("%lld%lld%lld%lld%lld%lld", &a, &b, &c, &d, &v, &t);
            ll g = a/__gcd(a, c)*c;
            ll ans1=b+d-1,l=a,r=c;
            ll pos=0;
            while(l<g || r<g)
            {
                if(l<=r && l<g){
                    if(l-pos>v) ans1+=(b-1);
                    else ans1+=b;
                    pos=l;
                    l+=a;
                }
                else if(l>r && r<g){
                    if(r-pos>v) ans1+=(d-1);
                    else ans1+=d;
                    pos=r;
                    r+=c;
                }
            }
            if(l>=g) l-=a;
            if(r>=g) r-=c;
            ll mid=max(l,r);
            ans1 = t/g*ans1;
            if(g-mid<=v) ans1+=t/g;
            t = t%g;
            ll ans2=b+d-1;
            pos=0,l=a,r=c;
            while(l<=t || r<=t)
            {
                if(l<=r && l<=t){
                    if(l-pos>v) ans2+=(b-1);
                    else ans2+=b;
                    pos=l;
                    l+=a;
                }
                else if(l>r && r<=t){
                    if(r-pos>v) ans2+=(d-1);
                    else ans2+=d;
                    pos=r;
                    r+=c;
                }
            }
            printf("%lld
    ",ans1+ans2);
        }
        return 0;
    }
  • 相关阅读:
    宋宝华:slab在内核内存管理和用户态Memcached的双重存在
    能感知功耗的Linux调度器(EAS)
    内存检测王者之剑—valgrind
    随心所动,厂商的CPU核管理策略介绍
    一文读懂 进程怎么绑定 CPU
    Fastbootd实现原理分析
    cachestat、cachetop、pcstat-linux系统缓存命中率分析工具
    WIFI的WPS和pin码(测试失败)
    视频下载(钉钉、B站等) 解决方案
    DevExpress 报表设计文件(.vsrepx)不显示或显示空白
  • 原文地址:https://www.cnblogs.com/shinianhuanniyijuhaojiubujian/p/9656826.html
Copyright © 2020-2023  润新知