问题描述
从万能词典来的聪明的海狸已经使我们惊讶了一次。他开发了一种新的计算器,他将此命名为"Beaver's Calculator 1.0"。它非常特别,并且被计划使用在各种各样的科学问题中。
  为了测试它,聪明的海狸邀请了n位科学家,编号从1到n。第i位科学家给这个计算器带来了 ki个计算题。第i个科学家带来的问题编号1到n,并且它们必须按照编号一个一个计算,因为对于每个问题的计算都必须依赖前一个问题的计算结果。
  每个教授的每个问题都用一个数 ai, j  来描述,i(1≤i≤n)是科学家的编号,j(1≤j≤ ki )是问题的编号, ai, j  表示解决这个问题所需资源单位的数量。
  这个计算器非常不凡。它一个接一个的解决问题。在一个问题解决后,并且在下一个问题被计算前,计算器分配或解放资源。
  计算器中最昂贵的操作是解放资源,解放远远慢于分配。所以对计算器而言,每一个接下来的问题所需的资源不少于前一个,是非常重要的。
  给你关于这些科学家所给问题的相关信息。你需要给这些问题安排一个顺序,使得“坏对”尽可能少。
  所谓“坏对”,就是相邻两个问题中,后一个问题需求的资源比前一个问题少。别忘了,对于同一个科学家给出的问题,计算它们的相对顺序必须是固定的。
输入格式
第一行包含一个整数n,表示科学家的人数。接下来n行每行有5个整数,kiai, 1, xiyimi (0 ≤ ai, 1 < mi ≤ 109, 1 ≤ xi, yi ≤ 109) ,分别表示第i个科学家的问题个数,第1个问题所需资源单位数,以及3个用来计算 ai, j 的参量。ai, j = (ai, j - 1 * xi + yi)mod mi。
输出格式
第一行输出一个整数,表示最优顺序下最少的“坏对”个数。
  如果问题的总个数不超过200000,接下来输出  行,表示解决问题的最优顺序。每一行两个用空格隔开的整数,表示这个问题所需的资源单位数和提供这个问题的科学家的编号。
样例输入
2
2 1 1 1 10
2 3 1 1 10
样例输出
0
1 1
2 1
3 2
4 2
数据规模和约定
20%的数据 n = 2, 1 ≤ ki ≤ 2000;
  另外30%的数据 n = 2, 1 ≤ ki ≤ 200000;
  剩下50%的数据 1 ≤ n ≤ 5000, 1 ≤ ki ≤ 5000。
分析:找出所有科学家中坏对最多的一个科学家,坏对最多的科学家的坏对数max就为最优值,
证明:n个坏对就意味着可以把一个科学家所有的问题分成n+1个有序序列,
例如:3 4 5 2 6 8 7 坏对数为2,那么可分为 (3 4 5)(2 6 8)(7)三个有序序列, 即三块,块号为 0 1 2;   
5 6 3 5 8 7 2 坏对数为3, 那么可分为 (5 6)(3 5 8)(7)(2)四个有序序列 ,即4块,块号为0 1 2 3;
我们同样可以把其余科学家的问题分为相应块数,那么我们把每个科学家对应相同块号的有序序列进行合并
(不能改变每个科学家问题的顺序)
因为本来每个序列就都是有序的,所有合并后的有序序列没有坏对,那么全部合并后,坏对数就为max
以上面数据为例进行合并(3 4 5 5 6)(2 3 5 6 8 8)(7 7)(2 ) 坏对数为3
因为每个科学家的问题顺序不能改变,那么最优值一定大于等于max,所以max一定为最优解;
代码:
#include<iostream>
#include<algorithm>
using namespace std;
const int MAX_N = 200000+100;
struct type{ int t, a, i; } d[MAX_N];
int n;
int tot = 0, ans = 0;bool compare(type x, type y) {if(x.t == y.t) return (x.a < y.a || (x.a == y.a && x.i < y.i));elsereturn x.t < y.t;
}
int main() {cin >> n;for(int i = 1; i <= n; i++) {long long k, a, x, y, m;cin >> k >> a >> x >> y >> m;int t = 0;long long b;for(int j = 0; j < k; j++) {if(tot < 2e5) d[tot++] = (type){t, a, i};b = (a*x+y)%m;if(b < a && j != k-1) t++;a = b;}ans = max(ans, t);}cout << ans << endl;if(tot < 2e5) {sort(d, d+tot, compare);for(long long i = 0; i < tot; i++) cout << d[i].a << " " << d[i].i << endl;}return 0;
}

转载于:https://www.cnblogs.com/kindleheart/p/8422572.html

蓝桥杯—ALGO-131 Beaver's Calculator相关推荐

  1. 蓝桥杯 算法训练 Beaver's Calculator

    蓝桥杯 算法训练 Beaver's Calculator 问题描述 从万能词典来的聪明的海狸已经使我们惊讶了一次.他开发了一种新的计算器,他将此命名为"Beaver's Calculator ...

  2. Java实现 蓝桥杯 算法训练 Beaver's Calculator

    试题 算法训练 Beaver's Calculator 问题描述 从万能词典来的聪明的海狸已经使我们惊讶了一次.他开发了一种新的计算器,他将此命名为"Beaver's Calculator ...

  3. 蓝桥杯- 算法训练-Beaver's Calculator

                                                             算法训练 Beaver's Calculator 时间限制:3.0s   内存限制:2 ...

  4. 【蓝桥】算法训练 Beaver‘s Calculator(贪心)

    参考文章1 参考文章2 问题描述 从万能词典来的聪明的海狸已经使我们惊讶了一次.他开发了一种新的计算器,他将此命名为"Beaver's Calculator 1.0".它非常特别, ...

  5. 算法训练 Beaver's Calculator (蓝桥杯)

    参考:http://blog.csdn.net/qq_35078631/article/details/58669520 问题描述 从万能词典来的聪明的海狸已经使我们惊讶了一次.他开发了一种新的计算器 ...

  6. 蓝桥杯 Beaver's Calculator

    问题描述 从万能词典来的聪明的海狸已经使我们惊讶了一次.他开发了一种新的计算器,他将此命名为"Beaver's Calculator 1.0".它非常特别,并且被计划使用在各种各样 ...

  7. Beaver's Calculator(蓝桥杯 算法训练)sort排序

    算法训练 Beaver's Calculator  时间限制:3.0s   内存限制:256.0MB 问题描述 从万能词典来的聪明的海狸已经使我们惊讶了一次.他开发了一种新的计算器,他将此命名为&qu ...

  8. 蓝桥2——Beaver's Calculator

    问题描述 从万能词典来的聪明的海狸已经使我们惊讶了一次.他开发了一种新的计算器,他将此命名为"Beaver's Calculator 1.0".它非常特别,并且被计划使用在各种各样 ...

  9. Beaver‘s Calculator

    蓝桥杯试题 算法训练 Beaver's Calculator 资源限制 时间限制:3.0s 内存限制:256.0MB 问题描述 从万能词典来的聪明的海狸已经使我们惊讶了一次.他开发了一种新的计算器,他 ...

最新文章

  1. error: RPC failed; curl 18 transfer closed with outstanding read
  2. python英语字典程序-python如何制作英文字典
  3. block 实现原理详解(一)
  4. ios开发中的C语言学习—— 结构体简介
  5. oracle的group by用法
  6. 多核 linux 绑定,Linux 操作系统下CPU多核心的绑定
  7. 深度技术win11 32位稳定版系统v2021.08
  8. sql去除字符串中首尾空格
  9. Waymo无人卡车高调重返凤凰城,重点路测高速和主干道,但货运先机已失
  10. Java8 本地DateTime API
  11. Lync 小技巧-26-由于服务器连接问题,一些演示功能不可用
  12. Python语言应该加上块标识(开始、结束)的特性
  13. CompoundButton(checkbox,switch,ToggleButton)和RadioGroup OnCheckedChangeListener() 引用冲突问题
  14. 虚拟仿真实训教学管理及资源共享平台虚拟实训开发对接文档
  15. 【C语言】C语言中基础操作符详细讲解
  16. vue页面换成手机适配屏幕
  17. SSH-远程连接文件传输
  18. JAVA设计模式之责任链模式
  19. Spark项目实战—电商用户行为分析
  20. 字节跳动和腾讯北京测开面经

热门文章

  1. H5+echarts模拟全国程序员可视化大数据【附完整源码】
  2. 富士通南大实习五月记
  3. Win10下搭建旷视YOLOX(新一代anchor-free目标检测网络)并训练自定义CoCo格式数据集
  4. 解决ios手机vue H5页面输入键盘收起后页面回弹到顶部问题
  5. 工作室官网整站源码有后台
  6. 解决调用组件,组件内容不加载的问题
  7. WPS如何快速统计姓名个数
  8. 小男孩学机器人编程好还是学钢琴好
  9. html自动关闭当前页面,html如何关闭当前页面
  10. 如何清理占用计算机内存,告诉你如何深度清理电脑内存