[USACO09MAR]Moon哞哞叫Moon Mooing(模拟)
链接:https://ac.nowcoder.com/acm/contest/1086/F
来源:牛客网
题目描述
A full moon casts some sort of spell on the cows and, like their cousins the wolves and coyotes, they bay at the moon -- mooing instead of howling, of course.
Each 'moo' lasts a certain amount of time. A short 'moo' might last time 1; a longer one might last time 24 or even 1,000,000,000 or longer (cows can really moo when they want to). No 'moo' will last more than or equal to 2^63.
It should come as no surprise that the cows have a pattern to their moos. Bessie will choose an integer c (1 <= c <= 100) that is the initial length of a moo.
After Bessie moos for length c, the cows calculate times for subsequent moos. They apply two formulae to each moo time to yield even more moo times. The two formulae are:
f1(c)=a1*c/d1+b1 (integer divide, of course) and
f2(c)=a2*c/d2+b2.
They then successively use the two new times created by evaluating f1(c) and f2(c) to create even more mooing times. They keep a sorted list of all the possible mooing times (discarding duplicates).
They are allowed to moo a total of N times (1 <= N <= 4,000,000). Please determine the length of the longest moo before they must quit.
The constants in the formulae have these constraints: 1 <= d1 < a1; d1 < a1 <= 20; 0 <= b1 <= 20; 1 <= d2 < a2; d2 < a2 <= 20; 0 <= b2 <= 20.
Consider an example where c=3 and N=10. The constants are:
a1=4 b1=3 d1=3
a2=17 b2=8 d2=2
The first mooing time is 3, given by the value of c. The total list of mooing times is:
1. c=3 -> 3 6. f2(3)=17*3/2+8 -> 33
2. f1(3)=4*3/3+3 -> 7 7. f1(28)=4*28/3+3 -> 40
3. f1(7)=4*7/3+3 -> 12 8. f1(33)=4*33/3+3 -> 47
4. f1(12)=4*12/3+3 -> 19 9. f1(40)=4*40/3+3 -> 56
5. f1(19)=4*19/3+3 -> 28 10. f1(47)=4*47/3+3 -> 65
The tenth time is 65, which would be the proper answer for this set of inputs.

输入描述:
* Line 1: Two space-separated integers: c and N
* Line 2: Three space-separated integers: a1, b1, and d1
* Line 3: Three space-separated integers: a2, b2, and d2
输出描述:
* Line 1: A single line which contains a single integer which is the length of the Nth moo
示例1
输入
输出
一道类似两个序列合并的东西,通法就是上一个优先队列就好了,但是这道题会超时。
但是,仔细观察一下,序列是单增的(a>c),这就很好办了,类似做一个归并就好了。
#include <stdio.h>
#include <string.h>
#include <iostream>
#include <string>
#include <math.h>
#include <algorithm>
#include <vector>
#include <queue>
#include <set>
#include <map>
#include <math.h>
const int INF=0x3f3f3f3f;
typedef long long LL;
const int mod=1e9+;
const int maxn=*1e6+;
using namespace std; LL ans[maxn];//ans数组是一个递增队列 int main()
{
int c,n,a1,b1,d1,a2,b2,d2;
scanf("%d %d %d %d %d %d %d %d",&c,&n,&a1,&b1,&d1,&a2,&b2,&d2);
int cnt=;//队列计数器
int f1=,f2=;//函数计数器
ans[cnt++]=c;//初始元素c入队
while(cnt<=n)
{
LL t=min(a1*ans[f1]/d1+b1, a2*ans[f2]/d2+b2);//取F1()和F2()中的较小值
ans[cnt++]=t;//将该较小值入队
if(t==a1*ans[f1]/d1+b1)//如果较小值来自F1(),则将F1()的指针f1+1
f1++;
if(t==a2*ans[f2]/d2+b2)//如果较小值来自F2(),则将F2()的指针f2+1
f2++;
}//重点理解while循环的内容。因为算出的F1()或F2()的数据单调递增,所以可以用这样的方式生成整个数列
printf("%lld",ans[n]);//最后输出即可。
return ;
}
[USACO09MAR]Moon哞哞叫Moon Mooing(模拟)的更多相关文章
- jQuery Mobile案例,最近用Moon.Web和Moon.Orm做了一套系统
一.简介 先说说,我们的主题.jQuery Mobile,最近用Moon.Web和Moon.Orm做了一套系统 jQuery Mobile是jQuery 在手机上和平板设备上的版本.jQuery ...
- Ubuntu 搭建 Zerotier One MOON 根目录服务器
原文转摘:http://www.congan.wang/archives/947 博主倒腾了一天,总算搞定了,主要是受到各种搭建教程的错误引导,导致关键过程错误.官网的MOON搭建教程:https:/ ...
- 永久免费云服务器搭建国内Moon服务加速ZeroTier
ZeroTier One本身的服务器都在国外访问速度很慢.可以通过搭建国内Moon服务加速解决连接慢的问题. 但是需要有固定外网IP的服务器,可以注册sanfengyun账号申请免费云服务器. 下面是 ...
- Codeforces Round #373 (Div. 2) A B C 水 贪心 模拟(四舍五入进位)
A. Vitya in the Countryside time limit per test 1 second memory limit per test 256 megabytes input s ...
- 【重点突破】——two.js模拟绘制太阳月亮地球转动
一.引言 自学two.js第三方绘图工具库,认识到这是一个非常强大的类似转换器的工具,提供一套固定的接口,可用在各种技术下,包括:Canvas.Svg.WebGL,极大的简化了应用的开发.这里,我使用 ...
- 《转载》PAT 习题
博客出处:http://blog.csdn.net/zhoufenqin/article/details/50497791 题目出处:https://www.patest.cn/contests/pa ...
- NOIP2016普及组复赛解题报告
提高组萌新,DAY1DAY2加起来骗分不到300,写写普及组的题目聊以自慰. (附:洛谷题目链接 T1:https://www.luogu.org/problem/show?pid=1909 T2:h ...
- HTML5资料
1 Canvas教程 <canvas>是一个新的用于通过脚本(通常是JavaScript)绘图的HTML元素.例如,他可以用于绘图.制作图片的组合或者简单的动画(当然并不那么简单).It ...
- Codeforces水题集合[14/未完待续]
Codeforces Round #371 (Div. 2) A. Meeting of Old Friends |B. Filya and Homework A. Meeting of Old Fr ...
随机推荐
- linux下启动mysql提示:Timeout error occurred trying to start MySQL Daemon
启动 mysqld 时经过很长时间显示 Timeout error occurred trying to start MySQL Daemon. 终端进入 mysql 时显示 ERROR 2002 ( ...
- SQL SERVER 2012 OBJECT_ID
原来一个存储过程执行正常,升级sqlserver后提示临时表已存在,后查找资料 sql server 2012 OBJECT_ID('临时表')返回的数值是负数,在 2008r2及前是正数,所以导致 ...
- 一天一个设计模式——Adapter适配器模式(Wrapper模式)
一.模式说明 在现实生活中,当需要将两种设备连接起来,但是两个设备的接口规范又不一致(比如电脑上只有Type-C接口,但是你的显示器是HDMI接口),这时候就需要一个适配器,适配器一端连接电脑,一端连 ...
- redis常用命令--基础
redis默认有个数据库,下标从开始,不支持自定义数据库名字. 使用select index 切换数据库 : select 7 (切换到第八个数据库) dbsize:求当前数据库中键值对的数量. ...
- Ubuntu使用小技巧汇总
1. Ubuntu创建/切换root用户 sudo passwd rootsu root 2. 解决Ubuntu14.04系统没有自带右键打开终端的问题 sudo apt-get install na ...
- [C/C++]'fopen': This function or variable may be unsafe
这个错误也算比较常见吧,当然这个与代码无关,是编译器的问题,主要是VS中出现的,因为微软方面认为fopen函数是不安全的,于是自己搞了一套fopen_s的函数来代替,用前面一个的话编译器是会出错的,所 ...
- 工程日记之ChildLost(2) :如何编写一个多线程的程序
Dispatch Dispatch结合语言特性,运行时,和系统的特点,提供了系统的,全面的高层次API来提升多核多线程编程的能力. Dispatch会自动的根据CPU的使用情况,创建线程来执行任务,并 ...
- 文献阅读报告 - Pedestrian Trajectory Prediction With Learning-based Approaches A Comparative Study
概述 本文献是一篇文献综述,以自动驾驶载具对外围物体行动轨迹的预测为切入点,介绍了基于运动学(kinematics-based)和基于机器学习(learning-based)的两大类预测方法. 并选择 ...
- jQuery 1.3.2 简单实现select二级联动
jQuery 1.3.2 简单实现select二级联动 复制代码代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transiti ...
- 吴裕雄--天生自然TensorFlow2教程:数学运算
import tensorflow as tf b = tf.fill([2, 2], 2.) a = tf.ones([2, 2]) a+b a-b a*b a/b b // a b % a tf. ...