来自FallDream 的博客,未经允许,请勿转载, 谢谢。


n,m<=5000

前面生成的一堆数列 意义不明  实际上就是给你一个矩阵求排序后字典序最小的路径序列

发现(1,1)->(n,m)在选了(x,y)之后就变成了选(1,1)->(x,y)和(x,y)->(n,m)

所以直接从1开始贪心,能选就选,用数组维护一下每一行可选的左右区间就行了。

但是我菜 所以我写了一个set维护矩形,然后二分..

#include<iostream>
#include<cstdio>
#include<set>
#include<algorithm>
#define MN 25000000
using namespace std;
inline int read()
{int x = 0 , f = 1; char ch = getchar();while(ch < '0' || ch > '9'){ if(ch == '-') f = -1;  ch = getchar();}while(ch >= '0' && ch <= '9'){x = x * 10 + ch - '0';ch = getchar();}return x * f;
}int tot,x,a,b,c,d,n,m,q,s[MN+1],pos[MN+1],Q[10001],top=0;
struct sq{int x1,y1,x2,y2;bool operator<(const sq&b)const{return  y2==b.y2?x2<b.x2:y2<b.y2;}bool in(int x,int y)const{return x>=x1&&x<=x2&&y>=y1&&y<=y2;}
};
set<sq> st;
bool mark[MN+1];
int main()
{x=read();a=read();b=read();c=read();d=read();n=read();m=read();tot=n*m;q=read();for(register int i=1;i<=tot;++i) s[i]=i;for(register int i=1;i<=tot;++i)x=(1LL*a*x*x+1LL*b*x+c)%d,swap(s[i],s[x%i+1]);for(register int i=1;i<=q;++i) {int x=read(),y=read();swap(s[x],s[y]);    }for(register int i=1;i<=tot;++i) pos[s[i]]=i;mark[Q[++top]=s[1]]=1;mark[Q[++top]=s[tot]]=1;st.insert((sq){1,1,n,m});for(register int i=1;i<=tot;++i) if(!mark[i]){int x=(pos[i]-1)/m+1,y=(pos[i]-1)%m+1;set<sq>::iterator it = st.lower_bound((sq){0,0,x,y});if(it->y2==y&&it->x2<x) ++it;if(it!=st.end()&&it->in(x,y)){Q[++top]=i;sq th=*it;st.erase(it);if(th.x1!=x||th.y1!=y)st.insert((sq){th.x1,th.y1,x,y});if(th.x2!=x||th.y2!=y)st.insert((sq){x,y,th.x2,th.y2});for(register int j=x+1;j<=th.x2;++j)for(register int k=th.y1;k<y;++k)mark[s[(j-1)*m+k]]=1;for(register int j=th.x1;j<x;++j)for(register int k=y+1;k<=th.y2;++k)mark[s[(j-1)*m+k]]=1;}}sort(Q+1,Q+top+1);printf("%d",Q[1]);for(register int i=2;i<=top;++i) printf(" %d",Q[i]);\return 0;
}

转载于:https://www.cnblogs.com/FallDream/p/Noi2014d2t2.html

[Noi2014]随机数生成器相关推荐

  1. 【BZOJ】【3671】【NOI2014】随机数生成器

    贪心 嗯--其实生成这个矩阵就是一个$O(n^2)$的模拟 = = 然后?字典序最小?贪心呗= =能选1就选1,然后能选2就选2-- 我们发现,对于矩阵(1,1)~(n,m),假设1的位置是(x,y) ...

  2. luogu P3306 [SDOI2013] 随机数生成器(BSGS,数列求通项,毒瘤特判)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 发个水题的 题解证明我还在() luogu P3306 [SDOI2013] 随机数生成器 Webli ...

  3. Java中的随机数生成器:Random,ThreadLocalRandom,SecureRandom

    Java中的随机数生成器:Random,ThreadLocalRandom,SecureRandom 文中的 Random即:java.util.Random, ThreadLocalRandom 即 ...

  4. 开源Math.NET基础数学类库使用(13)C#实现其他随机数生成器

    原文:[原创]开源Math.NET基础数学类库使用(13)C#实现其他随机数生成器                本博客所有文章分类的总目录:http://www.cnblogs.com/asxiny ...

  5. P5147 随机数生成器 [数列]

    P5147 随机数生成器 数学老师看不懂系列 看题目这一片代码就很晕: int work(int x) {if(x==1)return 0;else return work(rand(1,x))+1; ...

  6. UA STAT675 统计计算I 随机数生成1 随机数生成器的一般理论

    UA STAT675 统计计算I 随机数生成1 随机数生成器的一般理论 RNG的抽象表示 RNG的质量指标 RNG的统计检测 在统计计算中,从某个分布中进行采样通常分为两个步骤: 生成随机数z1,z2 ...

  7. boost::sort模块实现提供多种分布的灵活随机数生成器的测试程序

    boost::sort模块实现提供多种分布的灵活随机数生成器的测试程序 实现功能 C++实现代码 实现功能 boost::sort模块实现提供多种分布的灵活随机数生成器的测试程序 C++实现代码 #i ...

  8. boost::sort模块实现支持不同分布的随机数生成器的测试程序

    boost::sort模块实现支持不同分布的随机数生成器的测试程序 实现功能 C++实现代码 实现功能 boost::sort模块实现支持不同分布的随机数生成器的测试程序 C++实现代码 #inclu ...

  9. ITK:Mersenne Twister随机数生成器

    ITK:Mersenne Twister随机数生成器 内容提要 C++实现代码 内容提要 产生一个随机数 C++实现代码 #include "itkMersenneTwisterRandom ...

最新文章

  1. +z +Z compiler flag for HP
  2. 读梦断代码有感(1)2019.2.05
  3. iOS 9应用开发教程之多行读写文本ios9文本视图
  4. ES cross cluster search跨集群查询
  5. 多线程python 客户端fuwuq实现方式_python实现二叉树数据结构的多种遍历方式
  6. linux内核编译与新内核启用
  7. 请问如何让Dundas chart for asp.net控件产生的临时图片文件减少一些?
  8. 从淘宝第1位程序员, 到阿里合伙人,20多年了,非科班出身的他还在编程,程序员的榜样
  9. 使用MediaCodec硬解码h.265视频及音频进行播放
  10. CCF201409-3 字符串匹配(100分)
  11. 「产品经理全连接系列2」企业如何开展敏捷或DevOps的研发变革
  12. 开通华为平板的调试功能
  13. 2021“华为杯”第十八届中国研究生数学建模竞赛有感
  14. 计算机网络期中考试总结反思,期中考试总结反思600字
  15. 人生不过一场旅行,你路过我,我路过你
  16. 已解决在向有外键表插入数据提示“foreign key constraint fails”
  17. 无法定位程序输入点(cmake opencv_contrib,并配置后)
  18. linux系统的简单命令
  19. 以太网网卡历史-3com,intel及其它
  20. PAT A1008 Elevator (20)

热门文章

  1. GridControl动态添加 颜色列
  2. vue --- [全家桶] Vuex
  3. koa --- koa-bouncer验证
  4. java版b2b2c社交电商spring cloud分布式微服务(二) 服务消费者(rest+ribbon)
  5. 其它综合-CentOS7 忘记root密码
  6. .NET Core 3.0中的数据库驱动框架System.Data
  7. Windows和Linux如何使用Java代码实现关闭进程
  8. java web过滤器
  9. 我国域名***日均58起 高安全DNS防御系统建设刻不容缓
  10. 不要和诱惑较劲,而应离得越远越好。!!!