题目链接: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(数学)的更多相关文章

  1. ACM-ICPC 2018 徐州赛区网络预赛 J. Maze Designer (最大生成树+LCA求节点距离)

    ACM-ICPC 2018 徐州赛区网络预赛 J. Maze Designer J. Maze Designer After the long vacation, the maze designer ...

  2. ACM-ICPC 2018 南京赛区网络预赛 J.sum

    A square-free integer is an integer which is indivisible by any square number except 11. For example ...

  3. 计蒜客 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 ...

  4. 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 ...

  5. 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 ...

  6. ACM ICPC 2018 青岛赛区 部分金牌题题解(K,L,I,G)

     目录: K Airdrop I Soldier Game L Sub-cycle Graph G Repair the Artwork ———————————————————— ps:楼主脑残有点严 ...

  7. ACM-ICPC 2018 南京赛区网络预赛 J题Sum(线性筛素数)

    题目链接:https://nanti.jisuanke.com/t/30999 参考自博客:https://kuangbin.github.io/2018/09/01/2018-ACM-ICPC-Na ...

  8. ACM-ICPC 2018 徐州赛区网络预赛 J Maze Designer(最大生成树+LCA)

    https://nanti.jisuanke.com/t/31462 题意 一个N*M的矩形,每个格点到其邻近点的边有其权值,需要构建出一个迷宫,使得构建迷宫的边权之和最小,之后Q次查询,每次给出两点 ...

  9. 大数开方 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 ...

随机推荐

  1. Coloring Edges 【拓扑判环】

    题目链接:https://vjudge.net/contest/330119#problem/A 题目大意: 1.给出一张有向图,给该图涂色,要求同一个环里的边不可以全部都为同一种颜色.问最少需要多少 ...

  2. [转帖]你不曾见过的国产CPU:可能是最全的龙芯系列芯片家谱(下)

    你不曾见过的国产CPU:可能是最全的龙芯系列芯片家谱(下) https://www.ijiwei.com/html/news/newsdetail?source=pc&news_id=7177 ...

  3. 处理vue页面406问题纪要

    1.servlet-mapping url-pattern / 与 /* 的区别注意关注 2.mvc:resource 是否生效,注意关注,如不生效,可在 web.xml中配置<servlet- ...

  4. 【数据结构】P1996 约瑟夫问题

    [题目链接] https://www.luogu.org/problem/P1996 题目描述 n个人(n<=100)围成一圈,从第一个人开始报数,数到m的人出列,再由下一个人重新从1开始报数, ...

  5. sleep(0)、usleep(0)与sched_yield() 调度

    结论: 如果你是为了耗掉一个机器周期 ,那直接asm ("nop") , 如果是为了让权,建议把 所有使用 usleep(0)  换成 sched_yield() ; 最近发现很多 ...

  6. php 获取城市ip

    /** * 获取ip城市信息 * CreateBy XueSong * @param string $ip * @return array|bool|mixed */ function getCity ...

  7. 怎样通过html标签名获取元素节点集合

    方法1. 使用document.querySelectorAll(); 方法2. 使用document.getElementsByTagName(); document.querySelectorAl ...

  8. springboot由于bean加载顺序导致的问题

    先记录现象: dubbo整合zipkin时,我的配置文件是这样的 @Bean("okHttpSender") public OkHttpSenderFactoryBean okHt ...

  9. 服务器上office不能正常使用?

    (1)确保dll版本和服务器上office版本一致 (2)配置dcom (3)项目配置文件中添加用户模拟语句 <system.web> <identity impersonate=& ...

  10. 安装 node.js npm,cnpm

    参考:https://blog.csdn.net/suiyuehuimou/article/details/74143436 https://www.liaoxuefeng.com/wiki/0014 ...