2018 icpc 青岛网络赛 J.Press the Button
Press the Button
Time Limit: 1 Second Memory Limit: 131072 KB
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 seconds (no matter what the value of the timer is before the button is pressed), where 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 turns 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 , BaoBao will immediately press the button times; If the current time in seconds is an integer and is a multiple of another given integer , DreamGrid will immediately press the button 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 times after BaoBao finishes pressing the button times.
The game starts at 0 second and ends after seconds (if the button will be pressed at 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 (about 100), indicating the number of test cases. For each test case:
The first and only line contains six integers , , , , and (, ). 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)就会按下按钮b次(d),每次计时器就会重置成v+0.5, 在这段时间内灯亮着,0时刻按下(b+d)次。
当灯亮着的时候,计数器加上你按下的次数的值
当灯灭的时候,会先消耗一次让灯亮起,然后将后续按压的次数记下
求出a和c最小的公倍数之内的计数器次数,然后把剩下的单独求一次就可以了
嗯 当时在现场的时候就有想到这样的做法,但是当时脑子秀逗了,感觉求出他们的最小公倍数那也是1e12,肯定tle,我简直就是睿智,因为a和c最大1e6,也就是说最坏情况只有1e6而已,orz
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll T,a,b,c,d,v,t; ll gcd(ll a,ll b)
{
return !b?a:gcd(b,a%b);
}
int main()
{
scanf("%lld",&T);
while(T--)
{
ll ans = ;
scanf("%lld%lld%lld%lld%lld%lld",&a,&b,&c,&d,&v,&t);
ll lcm = a*c/gcd(a,c);
if(v >= a || v >= c)
{
ans += t/a*b+t/c*d +(b+d-);
}
else
{
ll num = t / lcm;
ll cnt = v;
ll tmpa = a;
ll tmpb = c;
while(tmpa <= lcm || tmpb <= lcm)
{
if(tmpa < tmpb)
{
ans += b;
if(tmpa > cnt)ans --;
cnt = tmpa + v;
tmpa += a; }
else
{
ans += d;
if(tmpb > cnt)ans--;
cnt = tmpb + v;
tmpb += c;
}
}
ans *= num;
t %= lcm;
tmpa = a;
tmpb = c;
cnt = v;
while(tmpa <= t || tmpb <= t)
{
if(tmpa < tmpb)
{
ans += b;
if(tmpa > cnt)ans--;
cnt = tmpa + v;
tmpa += a;
}
else
{
ans += d;
if(tmpb > cnt)ans --;
cnt = tmpb + v;
tmpb += c;
}
}
ans += b+d-;
}
printf("%lld\n",ans);
}
return ;
}
2018 icpc 青岛网络赛 J.Press the Button的更多相关文章
- 2018 ICPC青岛网络赛 B. Red Black Tree(倍增lca好题)
BaoBao has just found a rooted tree with n vertices and (n-1) weighted edges in his backyard. Among ...
- 2018 ICPC 沈阳网络赛
2018 ICPC 沈阳网络赛 Call of Accepted 题目描述:求一个算式的最大值与最小值. solution 按普通算式计算方法做,只不过要同时记住最大值和最小值而已. Convex H ...
- 2018 ICPC 徐州网络赛
2018 ICPC 徐州网络赛 A. Hard to prepare 题目描述:\(n\)个数围成一个环,每个数是\(0\)~\(2^k-1\),相邻两个数的同或值不为零,问方案数. solution ...
- 2018 ICPC 焦作网络赛 E.Jiu Yuan Wants to Eat
题意:四个操作,区间加,区间每个数乘,区间的数变成 2^64-1-x,求区间和. 题解:2^64-1-x=(2^64-1)-x 因为模数为2^64,-x%2^64=-1*x%2^64 由负数取模的性质 ...
- ACM-ICPC 2018 青岛赛区网络预赛 J. Press the Button(数学)
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=4056 题意:有一个按钮,时间倒计器和计数器,在时间[0,t]内, ...
- 2018 ICPC南京网络赛 L Magical Girl Haze 题解
大致题意: 给定一个n个点m条边的图,在可以把路径上至多k条边的权值变为0的情况下,求S到T的最短路. 数据规模: N≤100000,M≤200000,K≤10 建一个立体的图,有k层,每一层是一份原 ...
- 2018.9青岛网络预选赛(J)
传送门:Problem J https://www.cnblogs.com/violet-acmer/p/9664805.html 题目大意: BaoBao和DreamGrid玩游戏,轮流按灯的按钮, ...
- 2018 icpc 徐州网络赛 F Features Track
这个题,我也没想过我这样直接就过了 #include<bits/stdc++.h> using namespace std; ; typedef pair<int,int> p ...
- 2018 ACM-ICPC 青岛网络赛
最近打比赛不知道为什么总是怀疑自己 写完之后不敢交,一定跟学长说一遍自己的思路 然后发现"哦原来我是对的" 然后就A掉了…… 所以还是要有自信 Problem A 最大值直接输出m ...
随机推荐
- Confluence 6 整合到支持的附件存储选项
如果你现在正在存储附件到 WebDav 或者你的数据库中.你可以整合附件的存储到文件系统中.当你的附件从数据库中被合并到文件系统后,你存储在数据库中的附件数据就可以从数据库中删除了. 当附件合并进行的 ...
- ionic3 极光推送
参考网站:http://www.jianshu.com/p/eb8ab29329d9 遇到的问题是 执行以下命令一直报错 cordova plugin add https://github.com/ ...
- Es6模块语法笔记
/** * Created by Administrator on 2017/4/15. */ /*---------------------export命令--------------------- ...
- spring集成jwt验证方式,token验证
为什么要告别session?有这样一个场景,系统的数据量达到千万级,需要几台服务器部署,当一个用户在其中一台服务器登录后,用session保存其登录信息,其他服务器怎么知道该用户登录了?(单点登录), ...
- appium+python测试app使用相对坐标定位元素
我们获取到的是绝对坐标,如果换一个屏幕分辨率不同的手机那这个坐标自然会发生变化,要实现不同手机均能实现点击同一控件自然要用到相对坐标了,具体方法如下: 1.获取当前空间的绝对坐标(x1,y1),开启指 ...
- CHENGDU1-Python编程语言和PEP8规范
CHENGDU1-Python编程语言和PEP8规范 PEP8规范6条? 答:PEP8规范说白了就是一种规范,可以遵守,也可以不遵守,遵守PEP8可以让代码的可读性更高. 代码编排:---缩进,4个空 ...
- 如何获取jar包的在执行机上面的路径
背景: 最近在项目中遇到一个小问题, 几行代码就能解决了 String path = this.getClass().getProtectionDomain().getCodeSource().get ...
- MongoDB 入门
1 MongoDb 简介 MongoDB是为互联网而生的数据库,是文档数据库. 1.1 优点: Schema-less,不需要预先定义表结构,同一个"表"中可以保存多个格式的数据: ...
- (Access denied for user 'root'@'slaver1' (using password: YES))
1.问题描述,启动azkaban的时候报如下所示的错误.之前使用azkaban是root用户,今天使用hadoop用户进行配置和使用,报这个错,说是root连接mysql拒绝了. [hadoop@sl ...
- C#学习-面向对象
封装:把客观事物封装成类,并将类内部的实现隐藏,以保证数据的完整性: 比如年龄赋值为负数,就是个例子.当我们把类的字段定义为公共类型时,外部对象可以直接对类内部的数据进行操作,此时无法对这些操作进行一 ...