问题描述
  从万能词典来的聪明的海狸已经使我们惊讶了一次。他开发了一种新的计算器,他将此命名为"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个整数,ki, ai, 1, xi, yi, mi (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。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
#define N 200010
using namespace std;
struct tc{int cnt,count;//cnt下标count问题个数  ll p[5001];//每个问题的规模
}q[5001];//每个科学家
struct sc{int id;ll num;
}anss[N],s[N];
void merge(int l,int mid,int r)
{int i=l,j=mid+1;int cc=l;while(i<=mid&&j<=r){if(anss[i].num<=anss[j].num){s[cc].id=anss[i].id;s[cc++].num=anss[i++].num;}else{s[cc].id=anss[j].id;s[cc++].num=anss[j++].num;}}while(i<=mid){s[cc].id=anss[i].id;s[cc++].num=anss[i++].num;}while(j<=r){s[cc].id=anss[j].id;s[cc++].num=anss[j++].num;}for(i=l;i<cc;i++){anss[i].id=s[i].id;anss[i].num=s[i].num;}
}
void mergesort(int x,int y)
{if(x<y){int mid=(x+y)/2;mergesort(x,mid);mergesort(mid+1,y);merge(x,mid,y);}
}
int main()
{int i,j;ll n,a,x,y,m;int ans=-1,k,sum,l=0;cin>>n;for(i=0;i<n;i++){scanf("%d %lld %lld %lld %lld",&k,&a,&x,&y,&m);sum=0;l+=k;q[i].cnt=1;q[i].count=k;q[i].p[1]=a;for(j=2;j<=k;j++){q[i].p[j]=(x*q[i].p[j-1]+y)%m;if(q[i].p[j-1]>q[i].p[j])sum++;} ans=max(ans,sum);}printf("%d\n",ans);int st=0,end=0;if(l<=2e5){while(end<l){for(i=0;i<n;i++)//分层递归排序 {for(j=q[i].cnt;j<=q[i].count;j++){if(j!=q[i].cnt&&q[i].p[j]<q[i].p[j-1]){q[i].cnt=j;break;}anss[end].id=i;anss[end++].num=q[i].p[j];}if(j>q[i].count)q[i].cnt=j;}mergesort(st,end-1);st=end;}for(i=0;i<l;i++)printf("%lld %d\n",anss[i].num,anss[i].id+1);}return 0; }

算法训练 Beaver's Calculator相关推荐

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

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

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

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

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

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

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

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

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

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

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

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

  7. Beaver‘s Calculator

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

  8. 目前最好用的大规模强化学习算法训练库是什么?

    点击蓝字  关注我们 本文整理自知乎问答,仅用于学术分享,著作权归作者所有.如有侵权,请联系后台作删文处理. 本文精选知乎问题"目前最好用的大规模强化学习算法训练库是什么?"评论区 ...

  9. 可由一个尾指针唯一确定的链表有_极客算法训练笔记(三),链表详细图解,别再逃避了朋友...

    目录 缓存引爆链表 链表单链表双向链表循环链表双向循环链表 LinkedHashMap实现LRU缓存,源码解析(JDK1.8) 算法 爬楼梯 算法 反转链表 算法 链表环检测 缓存引爆链表 存储结构 ...

最新文章

  1. 支付宝生活号 php,关于PHP框架Laravel怎么配置支付宝生活号应用网关呢?
  2. j2ee mysql 图片_实战 J2EE 开发购物网站 二_MySQL
  3. SimpliVity:我是你的完美选择,HPE!
  4. Valgrind 快速入门
  5. C++11获取double类型的最大最小值
  6. linux u 驱动程序,在uClinux中增加自己的设备驱动程序
  7. C# 将string 转换为二维码图片,然后转为base64字符串编码 。
  8. 当数据库遇见FPGA:X-DB异构计算如何实现百万级TPS?
  9. 一步步编写操作系统 1 部署工作环境 1
  10. excel中画图坐标轴更改数字大小_Excel柱状图看不清?用这3种方法就可以
  11. 为什么个体户做不大?
  12. typora使用pandoc导出功能
  13. 关于UIText换行
  14. day16 Python 类的继承关系
  15. iframe 父页面与子页面之间的方法、属性的相互调用
  16. 基于springboot的暖暖午托管理系统
  17. php 去除 css 格式,PHP清除html格式,去除html、css、js格式
  18. android 斜边_斜边计算器app下载|斜边计算器安卓版下载_v1.0.1_9ht安卓下载
  19. pycharm双击无反应
  20. python excel怎么将字母后的数字取出来_利用通配符将Excel中英文字母、中文、数字提取出来...

热门文章

  1. Android 修改系统屏幕亮度
  2. java crumb_vuex中,我在index.vue组件设置的值,为什么在另外一个组件crumb.vue获取不到...
  3. Apache Calcite论文概要
  4. 安装丰巢价格是多少_马桶后方1㎡好几万你不在意,丰巢涨价5毛钱你却斤斤计较...
  5. 红米k60和k50至尊版参数对比 Redmi k60和k50至尊版哪个好
  6. Redis——好友关注、共同关注、Feed流推送
  7. MMdetection绘制mAP-自用
  8. 公司企业邮箱怎么选择?哪家企业邮箱品牌最好用?
  9. python画平行坐标图_[宜配屋]听图阁
  10. 双系统window更新后,开机引导错误,grub rescue修复