题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3671

设 x 为一个点的行号, y 为一个点的列号;原本想着判断一个点能不能选就是看选了的点中 x<cr.x 的 y 的最大值和 x>cr.x 的 y 的最小值,所以想用树状数组维护。

但这样时间空间都会爆。

应该发现“选”一个数最多出现 n+m-1 次!所以考虑 O(1) 判断,在选了一个数之后多花时间维护。

那么可以维护每行能选的列的范围。这个范围一定是一个区间。

  1. #include<cstdio>
  2. #include<cstring>
  3. #include<algorithm>
  4. #define ll long long
  5. using namespace std;
  6. const int N=;
  7. int n,m,lm,Q;
  8. int x[N*N],a[N*N],l[N],r[N];
  9. int rdn()
  10. {
  11. int ret=;bool fx=;char ch=getchar();
  12. while(ch>''||ch<''){if(ch=='-')fx=;ch=getchar();}
  13. while(ch>=''&&ch<='')ret=ret*+ch-'',ch=getchar();
  14. return fx?ret:-ret;
  15. }
  16. int Mn(int a,int b){return a<b?a:b;}
  17. int Mx(int a,int b){return a>b?a:b;}
  18. void init()
  19. {
  20. int a,b,c,d;
  21. x[]=rdn();a=rdn();b=rdn();c=rdn();d=rdn();
  22. n=rdn();m=rdn();Q=rdn();
  23. lm=n*m;
  24. for(int i=;i<=lm;i++)
  25. x[i]=((ll)a*x[i-]*x[i-]+(ll)b*x[i-]+c)%d;
  26. }
  27. int main()
  28. {
  29. init();
  30. for(int i=;i<=lm;i++)a[i]=i;
  31. for(int i=;i<=lm;i++)swap(a[i],a[x[i]%i+]);
  32. for(int i=,u,v;i<=Q;i++)
  33. {
  34. u=rdn();v=rdn();swap(a[u],a[v]);
  35. }
  36. for(int i=;i<=lm;i++)x[a[i]]=i;
  37. for(int i=;i<=n;i++)l[i]=;for(int i=;i<=n;i++)r[i]=m;
  38. for(int i=,cnt=,sm=n+m-;i<=lm;i++)
  39. {
  40. int X=(x[i]-)/m+,Y=(x[i]-)%m+;
  41. if(Y>r[X]||Y<l[X])continue;
  42. printf("%d ",i);cnt++;
  43. if(cnt==lm)break;
  44. for(int j=;j<X;j++)r[j]=Mn(r[j],Y);
  45. for(int j=X+;j<=n;j++)l[j]=Mx(l[j],Y);
  46. }
  47. puts("");return ;
  48. }

bzoj 3671 [Noi2014]随机数生成器——贪心(时间复杂度分配)的更多相关文章

  1. bzoj 3671: [Noi2014]随机数生成器【模拟+贪心】

    降智好题 前面随机部分按照题意模拟,然后字典序贪心,也就是记录每个值的位置从1~nm依次看能不能取,能取的话更新行的取值范围(它上面的行一定取的列小于等于这个数取的列,下面行大于等于) #includ ...

  2. BZOJ 3671 NOI2014 随机数生成器

    这题其实是个暴力. 首先那一堆如何构造n*m方格的东西都是在玩你. 构造出来方阵后,由于是一个排列,不存在重复,可以大力贪心. 每次将选出一个最小的元素,然后将它右上左下的元素全部打上标记(记得bre ...

  3. luogu P2354 [NOI2014]随机数生成器 贪心 卡空间 暴力

    LINK:随机数生成器 观察数据范围还是可以把矩阵给生成出来的. 考虑如何求出答案.题目要求把选出的数字从小到大排序后字典序尽可能的小 实际上这个类似于Mex的问题. 所以要从大到小选数字 考虑选择一 ...

  4. 【bzoj3671】[Noi2014]随机数生成器 贪心

    题目描述 输入 第1行包含5个整数,依次为 x_0,a,b,c,d ,描述小H采用的随机数生成算法所需的随机种子.第2行包含三个整数 N,M,Q ,表示小H希望生成一个1到 N×M 的排列来填入她 N ...

  5. BZOJ3671: [Noi2014]随机数生成器(贪心)

    Time Limit: 50 Sec  Memory Limit: 256 MBSubmit: 2098  Solved: 946[Submit][Status][Discuss] Descripti ...

  6. [bzoj3671][Noi2014][随机数生成器] (贪心+位运算+卡空间)

    Description Input 第1行包含5个整数,依次为 x_0,a,b,c,d ,描述小H采用的随机数生成算法所需的随机种子.第2行包含三个整数 N,M,Q ,表示小H希望生成一个1到 N×M ...

  7. [luogu] P2354 [NOI2014]随机数生成器 (贪心)

    Description Input 第1行包含5个整数,依次为 x_0,a,b,c,d ,描述小H采用的随机数生成算法所需的随机种子.第2行包含三个整数 N,M,Q ,表示小H希望生成一个1到 N×M ...

  8. BZOJ_3671_[Noi2014]随机数生成器_set+贪心

    BZOJ_3671_[Noi2014]随机数生成器_set Description   Input 第1行包含5个整数,依次为 x_0,a,b,c,d ,描述小H采用的随机数生成算法所需的随机种子.第 ...

  9. [BZOJ3671][UOJ#6][NOI2014]随机数生成器

    [BZOJ3671][UOJ#6][NOI2014]随机数生成器 试题描述 小H最近在研究随机算法.随机算法往往需要通过调用随机数生成函数(例如Pascal中的random和C/C++中的rand)来 ...

随机推荐

  1. ML之多元线性回归

    转自:http://www.cnblogs.com/zgw21cn/archive/2009/01/07/1361287.html 1.多元线性回归模型 假定被解释变量与多个解释变量之间具有线性关系, ...

  2. C#/JAVA 程序员转GO/GOLANG程序员笔记大全(DAY 00)

    一.安装说明 https://studygolang.com/dl 二.环境变量 // 下载 *.msi 安装文件,部分环境变量默认配置好了. 其他配置如下描述 三.目录及项目层级关系 在系统环境变量 ...

  3. [less]用webstorm自动编译less产出css和sourcemap

    css产出sourcemap有什么用呢,可能大家要问这个问题了. 请移步这里 https://developers.google.com/chrome-developer-tools/docs/css ...

  4. crontab执行定时任务

    在linux下面使用命令crontab -e  编辑任务: [adv@localhost]$ crontab -e 之后开始编辑任务 * * * * * cd /home/adv/work/cutte ...

  5. iOS安全系列之 HTTPS 进阶

    上一篇<iOS安全系列之一:HTTPS>被CocoaChina转载,还顺便上了下头条: 打造安全的App!iOS安全系列之 HTTPS,高兴之余也有些诚惶诚恐,毕竟那篇文章只是介绍了比较偏 ...

  6. iOS开发图片加载的内存问题及优化方案

    原创作者:Magic-Unique 原文地址:https://github.com/Magic-Unique/HXImage猿吧 - 资源共享论坛: http://www.coderbar.cn 做最 ...

  7. MyCAT 命令行监控

    MyCAT  命令行监控 9066端口 ,用mysql命令行连接 Mysql –utest –ptest –P9066 show @@help 可显示所有相关管理命令

  8. Falsk项目cookie中的 csrf_token 和表单中的 csrf_token实现

    Flask中请求体的请求开启CSRF保护可以按以下配置 from flask_wtf.csrf import CSRFProtect app.config.from_object(Config) CS ...

  9. 實現多个checkbox單選功能(转)

    <script type="text/javascript">        function check(obj) {            var checkbox ...

  10. Android 框架学习2:源码分析 EventBus 3.0 如何实现事件总线

    Go beyond yourself rather than beyond others. 上篇文章 深入理解 EventBus 3.0 之使用篇 我们了解了 EventBus 的特性以及如何使用,这 ...