问题描述
从万能词典来的聪明的海狸已经使我们惊讶了一次。他开发了一种新的计算器,他将此命名为"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. Oracle删除指定用户下所有对象
  2. 浅析Avicii的MV Hey Brother
  3. java机试_java机试要点
  4. HadoopHA集群搭建
  5. AOL CEO 谈雅虎收购案及后续计划
  6. Nginx配置规则详解,配置解释
  7. html横菜单中菜单均匀分布,html – 如何在flexbox中的行间均匀分布元素?
  8. 微信html页面缓存问题,浅谈微信页面入口文件被缓存解决方案
  9. Linux兄弟连学习
  10. 设正整数n的十进制表示为n=ak……a1a0(0=ai=9,0=i=k,ak!=0),n的个位为起始数字的数字的正负交错之和T(n)=a0+a1+……+(-1)kak,证明:11|n的充分必要...
  11. 上万条流行经典语录大全ACCESS数据库
  12. HtmlHelper、TagHelper、局部视图、视图组件
  13. 西文是指什么,【英语中的复合句是指什么具体来说是指哪些类的语法知识?】作业帮...
  14. phpunit问题与解决
  15. 不平衡数据采样方法整理
  16. 在docker里跑gpgpusim
  17. MySQL学习之路(一):使用命令行登录mysql的方式
  18. 如何让网站被百度快速收录,搜索引擎入站
  19. Unity制作RPG游戏——按键功能的分类与实现
  20. 适合程序员表白的情话【保你脱单】

热门文章

  1. GitHub 热点速览 Vol.16:化身蒙娜丽莎和乔布斯对话
  2. 苹果手机 生成html文件,苹果手机这个功能太厉害了,1秒就能将纸质文档转换为Word...
  3. 转给身边工程师:环形穿梭车控制系统设计细节来了!
  4. ArduPilot飞行前检查——PreArm解析
  5. python斗地主出牌算法_python模拟斗地主发牌
  6. c语言水果店信息管理系统,C语言排序(1)___水果销售
  7. 想带好团队,要先学会使用GTD
  8. Android super.img 镜像解包
  9. 城市夜空三(续)公布聊天记录第一部分
  10. k8s踩坑记录——证书一年有效期