嘟嘟嘟

某谷的翻译挺迷的,简单来说就是给一个初值c,然后有两个函数f1 = a1 * x / d1 + b1, f2 = a2 * x / d2 + b2.把c分别带进去,所得的结果也递归带进去,这样的到一串数,输出第n小的。

这道题如果都带进去,然后在排序肯定行不通,因为这一串数不是递增的,不能确定后面多少有比当前数小的。

那或许会想到,可以用一个优先队列维护最小值,这样就避免排序啦。然而数据是4e6,O(nlogn)够强能过啊。

其实没那么难,完全可以用一个普通队列实现这个功能。首先我们建两个指针f1, f2,分别代表该函数该算序列中的哪一个数了。然后得出的x, y取最小值作为本次的答案放到末尾。因为选的是当前最小值,而且f(x) > x,所以可以保证这个队列一定是单调递增的。然后如果f1得出本次的答案,就f1++。

需要注意的是,指针向后移动不能写一个 if 然后else,因为如果两个函数计算出相同的值,应该都向后移动。

 #include<cstdio>
#include<iostream>
#include<algorithm>
#include<cmath>
#include<cstring>
#include<cstdlib>
#include<vector>
#include<queue>
#include<stack>
#include<cctype>
using namespace std;
#define enter puts("")
#define space putchar(' ')
#define Mem(a) memset(a, 0, sizeof(a))
typedef long long ll;
typedef double db;
const int INF = 0x3f3f3f3f;
const db eps = 1e-;
const int maxn = 4e6 + ;
inline ll read()
{
ll ans = ;
char ch = getchar(), last = ' ';
while(!isdigit(ch)) last = ch, ch = getchar();
while(isdigit(ch)) ans = (ans << ) + (ans << ) + ch - '', ch = getchar();
if(last == '-') ans = -ans;
return ans;
}
inline void write(ll x)
{
if(x < ) putchar('-'), x = -x;
if(x >= ) write(x / );
putchar(x % + '');
} int c, n, a1, b1, d1, a2, b2, d2;
int f1 = , f2 = ;
ll a[maxn]; int main()
{
c = read(); n = read();
a1 = read(); b1 = read(); d1 = read(); a2 = read(); b2 = read(); d2 = read();
a[] = c;
for(int i = ; i <= n; ++i)
{
ull x = min(a1 * a[f1] / d1 + b1, a2 * a[f2] / d2 + b2);
a[i] = x;
if(x == a1 * a[f1] / d1 + b1) f1++;
if(x == a2 * a[f2] / d2 + b2) f2++;
}
write(a[n]); enter;
return ;
}

[USACO09MAR]Moon Mooing的更多相关文章

  1. [USACO09MAR]Moon哞哞叫Moon Mooing(模拟)

    链接:https://ac.nowcoder.com/acm/contest/1086/F来源:牛客网 题目描述 A full moon casts some sort of spell on the ...

  2. 1583: [Usaco2009 Mar]Moon Mooing 哞哞叫

    1583: [Usaco2009 Mar]Moon Mooing 哞哞叫 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 244  Solved: 126 ...

  3. [BZOJ1583] [Usaco2009 Mar]Moon Mooing 哞哞叫(队列)

    传送门 思想有点像蚯蚓那个题 #include <cstdio> #define N 4000001 #define LL long long #define min(x, y) ((x) ...

  4. BZOJ1583: [Usaco2009 Mar]Moon Mooing 哞哞叫

    给n<=4000000,c,a1,b1,c1,a2,b2,c2,以c为初始得到的数,每次可以把得到的某个数x进行操作f1(x)=a1*x/c1+b1,f2(x)=a2*x/c2+b2,求最后能得 ...

  5. bzoj usaco 金组水题题解(2)

    续.....TAT这回不到50题编辑器就崩了.. 这里塞40道吧= = bzoj 1585: [Usaco2009 Mar]Earthquake Damage 2 地震伤害 比较经典的最小割?..然而 ...

  6. 【刷题记录】BZOJ-USACO

    接下来要滚去bzoj刷usaco的题目辣=v=在博客记录一下刷题情况,以及存一存代码咯.加油! 1.[bzoj1597][Usaco2008 Mar]土地购买 #include<cstdio&g ...

  7. bzoj Usaco补完计划(优先级 Gold>Silver>资格赛)

    听说KPM初二暑假就补完了啊%%% 先刷Gold再刷Silver(因为目测没那么多时间刷Silver,方便以后TJ2333(雾 按AC数降序刷 ---------------------------- ...

  8. bzoj AC倒序

    Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...

  9. USACO 刷题记录bzoj

    bzoj 1606: [Usaco2008 Dec]Hay For Sale 购买干草——背包 #include<cstdio> #include<cstring> #incl ...

随机推荐

  1. 啰里吧嗦kafka

    1.kafka是什么 kafka官网: http://kafka.apache.org/ kafka是一种高吞吐量的分布式发布订阅消息系统,用它可以在不同系统中间传递分发消息 2.zookeeper是 ...

  2. MVC 导出Execl 的总结几种方式 (三)

    第三种方式呢,就是借用第三方插件 NPOI 来实现Execl 导出 第一步:在NuGut包中下载NPOI 组件 第二步:编辑控制器代码 public FileResult ExcelNewKeyPro ...

  3. FileReader读取文件

    前言:FileReader是一种异步文件读取机制,结合input:file可以很方便的读取本地文件. input:file 在介绍FileReader之前,先简单介绍input的file类型. < ...

  4. React-Native开发之BUG 总结

    本博客将详细记录在React-Native开发中所遇到的各种问题以及其解决方法. 个人感觉,React-Native开发初期真的是一脚一个大坑,分分钟被虐趴下. 不说了,直接上Bug 1.在Windo ...

  5. Git『Everything up-to-date』问题解决

    今天提交代码的时候遇到了一个小问题,这里解决了记下小记. 提交代码遇到『Everything up-to-date』 上网查了下,发现中文大多答非所问,少数能解决的并没有阐述原理,所以我写这篇文章记录 ...

  6. 润乾填报页面导入excel后增加js动作

     当页面从excel中导入数据之后,自动加入js的检查功能,下面是如何在导入excel后直接引入js的功能实例: var _orgImportExcel = report1_importExcel ...

  7. python是如何找到对应的package的?

    我们在写python代码或者阅读别人的代码时,可能会碰到对应module无法找到的问题,这时如何解决呢?我们如果对python解释器如何查找对应的module有比较深刻的理解,那么我们就可以轻松解决相 ...

  8. 从.net角度分析 异步和多线程

    线程 进程 CPU目前都是多核心的,相当于一个大脑几块可以同时工作. 超线程CPU是指在一块CPU中,用虚拟方法将一个物理核心模拟成多个核心(如:一个单物理核心,模拟成二个核心,即所谓的二线程.)只有 ...

  9. hdfs基本操作-python接口

    安装hdfs包 pip install hdfs 查看hdfs目录 [root@hadoop hadoop]# hdfs dfs -ls -R / drwxr-xr-x - root supergro ...

  10. gitbook 入门

    安装 gitbook 插件 npm install gitbook-cli -g 或者 yarn global add gitbook-cli 初使化目录 gitbook init 会发现目录下面多了 ...