ACM-ICPC 2018 青岛赛区网络预赛 J. Press the Button(数学)
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=4056
题意:有一个按钮,时间倒计器和计数器,在时间[0,t]内,某个数如果是a的倍数则按c次按钮,如果是b的倍数则按d次按钮。按钮的规则为:每次按完之后时间倒计器设为v+0.5,如果当时 led 灯是灭的则变亮,否则计数器+1,时间倒计器到0时led 灯变灭。(时间倒计器无时无刻在减小,最小为0)问最后计数器的数值。
题解:如果在按按钮之前led灯为灭的话,则这次按钮对计数器没有贡献,考虑按按钮之前 led 灯灭的总数可得出答案。显示如果v>=a 或者v>=c,则 led 灯只有一开始是灭的;否则考虑a和c的lcm,因为循环节 lcm。lcm范围内a和b的倍数全部筛出来记录一下到这个数灯灭的次数,注意就是0时刻灯一定是灭的但lcm时刻灯有可能是暗的,需要判断下。
#include <bits/stdc++.h>
#include <iomanip>
//#include <unordered_set>
//#include <unordered_map>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
#define lc (o<<1)
#define rc (o<<1)^1
#define mst(a, b) memset(a, b, sizeof(a))
#define pb push_back
#define mp make_pair
#define pii pair<int, int>
#define IOS ios::sync_with_stdio(0);cin.tie(0);
#define random(a, b) rand()*rand()%(b-a+1)+a
#define EARTH_RADIUS 6371004
#define lowerbit(a) (a&(-a))
#define rad(d) ((d)*PI/180.0)
#define sd(a) scanf("%d",&a)
const int maxn = 2e6 + , maxm = , inf = 0x3f3f3f3f;
const ll mod = 1e9 + ;
const double pi=acos(-1.0);
const double eps = 1e-; map<ll,bool>vis;
ll dp[maxn];
vector<ll>vec; int main() {
#ifdef local
freopen("in", "r", stdin);
// freopen("in", "w", stdout);
#endif
int T;
scanf("%d",&T);
while(T--) {
vis.clear();
vec.clear();
int a,b,c,d;
ll v,t;
scanf("%d%d%d%d%lld%lld",&a,&b,&c,&d,&v,&t);
ll lcm = 1ll * a * c / __gcd(a,c);
ll ans = (t / a + ) * b + (t / c + ) * d;
if(v >= a || v >= c) {
ans--;
printf("%lld\n",ans);
continue;
}
for(int i = ; ; i++) {
ll num = 1ll * i * a;
if(num > lcm) break;
vec.push_back(num);
vis[num] = true;
}
for(int i = ; ; i++) {
ll num = 1ll * i * c;
if(num > lcm) break;
if(!vis[num]) vis[num] = true, vec.push_back(num);
}
sort(vec.begin(), vec.end());
int sz = vec.size();
ll pre = ;
dp[] = ;
for(int i = ; i < sz; i++) {
dp[i] = dp[i - ];
ll now = vec[i];
if(now - pre > v) dp[i]++;
pre = now;
}
if(t <= lcm) {
int pos = lower_bound(vec.begin(), vec.end(), t) - vec.begin();
if(vec[pos] > t) pos--;
printf("%lld\n",ans - dp[pos]);
continue;
}
if(dp[sz - ] != dp[sz - ]) {
ans -= dp[sz - ] * (t / lcm);
t %= lcm;
int pos = lower_bound(vec.begin(), vec.end(), t) - vec.begin();
if(vec[pos] > t) pos--;
ans -= dp[pos];
} else {
ans -= dp[sz - ];
t -= lcm;
ans -= ((dp[sz - ] - ) * (t / lcm));
t %= lcm;
int pos = lower_bound(vec.begin(), vec.end(), t) - vec.begin();
if(vec[pos] > t) pos--;
ans -= (dp[pos] - );
}
printf("%lld\n",ans);
}
return ;
}
ACM-ICPC 2018 青岛赛区网络预赛 J. Press the Button(数学)的更多相关文章
- ACM-ICPC 2018 徐州赛区网络预赛 J. Maze Designer (最大生成树+LCA求节点距离)
ACM-ICPC 2018 徐州赛区网络预赛 J. Maze Designer J. Maze Designer After the long vacation, the maze designer ...
- ACM-ICPC 2018 南京赛区网络预赛 J.sum
A square-free integer is an integer which is indivisible by any square number except 11. For example ...
- 计蒜客 30999.Sum-筛无平方因数的数 (ACM-ICPC 2018 南京赛区网络预赛 J)
J. Sum 26.87% 1000ms 512000K A square-free integer is an integer which is indivisible by any squar ...
- ACM-ICPC 2018 沈阳赛区网络预赛 J树分块
J. Ka Chang Given a rooted tree ( the root is node 11 ) of NN nodes. Initially, each node has zero p ...
- ACM-ICPC 2018 焦作赛区网络预赛J题 Participate in E-sports
Jessie and Justin want to participate in e-sports. E-sports contain many games, but they don't know ...
- ACM ICPC 2018 青岛赛区 部分金牌题题解(K,L,I,G)
目录: K Airdrop I Soldier Game L Sub-cycle Graph G Repair the Artwork ———————————————————— ps:楼主脑残有点严 ...
- ACM-ICPC 2018 南京赛区网络预赛 J题Sum(线性筛素数)
题目链接:https://nanti.jisuanke.com/t/30999 参考自博客:https://kuangbin.github.io/2018/09/01/2018-ACM-ICPC-Na ...
- ACM-ICPC 2018 徐州赛区网络预赛 J Maze Designer(最大生成树+LCA)
https://nanti.jisuanke.com/t/31462 题意 一个N*M的矩形,每个格点到其邻近点的边有其权值,需要构建出一个迷宫,使得构建迷宫的边权之和最小,之后Q次查询,每次给出两点 ...
- 大数开方 ACM-ICPC 2018 焦作赛区网络预赛 J. Participate in E-sports
Jessie and Justin want to participate in e-sports. E-sports contain many games, but they don't know ...
随机推荐
- js函数(5)
函数属性方法和构造函数 length属性 函数体中,arguments.length表示传入函数的实参个数. prototype属性 指向一个对象的引用 call方法和apply方法 看作是某个对象的 ...
- 【转】mysql分库分表,数据库分库分表思路
原文:https://www.cnblogs.com/butterfly100/p/9034281.html 同类参考:[转]数据库的分库分表基本思想 数据库分库分表思路 一. 数据切分 关系型数 ...
- H3C 交换机配置ssh登陆
1.开启ssh服务,创建密钥. <D05-S5048-02>system-view [D05-S5048-02]ssh server enable //开启ssh服务 [D05-S5048 ...
- LeetCode 第 15 场双周赛
1287.有序数组中出现次数超过25%的元素 1288.删除被覆盖区间 1286.字母组合迭代器 1289.下降路径最小和 II 下降和不能只保留原数组中最小的两个,hacked. 1287.有序数组 ...
- dede添加自定义变量不显示
dedecms前端无法调用自定义变量要怎么解决,登录他的网站后台看了一下,自定义变量已经添加了,也写入了数据库表中,但是就是前台没办法调用出来,后面想想可能是文件权限不够,具体是哪个文件呢?查了相关文 ...
- python学习-9 pycharm的安装
1.python 开发IDE : pycharm.eclipse等等 安装: 百度搜索pycharm 就可以了,去官网下载专业版.(百度有各种破解方法) #不要 ...
- 第一章 MIZ701 VIVADO 搭建SOC最小系统HelloWorld
本章内容是MIZ701中的第五章,本来也是要过渡一下FPGA部分的,但是由于MIZ701没有单独提供PL部分的晶振时钟,时钟必须通过PS产生,所以本章内容作为Miz701的第一章内容.本章的目的是 ...
- UI自动化的第一步(Python,pip,selenium,PyCharm安装配置)
一,py安装 1.python下载,安装,环境配置 地址:https://www.runoob.com/python/python-install.html 注意:安装时,要勾选自动配置环境变量.这样 ...
- 【php设计模式】享元模式
享元模式其实就是共享独享模式,减少重复实例化对象的操作,从而将实例化对象造成的内存开销降到最低. 享元模式尝试重用现有的同类对象,如果未找到匹配的对象,则创建新对象.我们将通过创建 5 个对象来画出 ...
- input type=color 设置颜色
在设置背景色的时候,使用html5 type=color 标签,但是初始值一直都是黑色的,背景如果没有设置的时候,应该是白色,比如文本图元,所以需要设置一个初始的颜色值, 注意: value不实用,怎 ...