【BZOJ3672】【UOJ#6】【NOI2014】随机数生成器
暴力出奇迹
原题:

0≤Q≤50000
0≤a≤300
0≤b,c≤108
0≤x0<d≤108
1≤ui,vi≤N×M
恩首先容易看出来这个棋盘直接模拟搞出来就行了,不用反演矩阵乘之类的奇怪的东西
然后又容易发现只需要遍历从1~n*m的数尽量答案里塞就是最优答案 = =|||
然后贪心搞一下,从1~n*m遍历,对于每一个n记录一个top和一个bottom表示第i行能取第bottom[i]到top[i]列的数
容易发现暴力维护的复杂度是资瓷的 = =|||
易证不会存在因为之前钦定选择某些数导致后面选不够n+m-1个数的情况
然后暴力搞就可以辣
因为2.5e7的数组只能开两个所以有一个要重复使用……
注意答案的长度是2n…………
注意一开始递推的姿势,比如两个int和一个longlong相乘要先int乘longlong再乘int之类的
代码:
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
#define ll long long
int rd(){int z=; char ch=getchar();
while(ch<''||ch>'') ch=getchar();
while(ch>=''&&ch<=''){z=(z<<)+(z<<)+ch-''; ch=getchar();}
return z;
}
ll a,b,c,d,n,m,o; int x[]; int nm;
int T[],tp[],bt[];
int ans[],ast=;
int main(){//freopen("ddd.in","r",stdin);
int l,r;
cin>>x[]>>a>>b>>c>>d>>n>>m>>o; nm=n*m;
for(int i=;i<=nm;++i) x[i]=((((x[i-]*a)%d)*x[i-])%d+(x[i-]*b)%d+c)%d;
for(int i=;i<=nm;++i) T[i]=i;
for(int i=;i<=nm;++i) swap(T[i],T[x[i]%i+]);
while(o--) l=rd(),r=rd(),swap(T[l],T[r]);
for(int i=;i<=nm;++i) x[T[i]]=i-;
for(int i=;i<=n;++i) tp[i]=m,bt[i]=;
for(int i=;i<=nm;++i){
l=x[i]/m+,r=x[i]%m+;
if((r>=bt[l])&(r<=tp[l])){
for(int j=;j<l;++j)if(r<tp[j]) tp[j]=r;
for(int j=l+;j<=n;++j)if(r>bt[j]) bt[j]=r;
ans[++ast]=i;
if(ast==n+m-) break;
}
}
for(int i=;i<ast;++i) printf("%d ",ans[i]);
cout<<ans[ast];
return ;
}
【BZOJ3672】【UOJ#6】【NOI2014】随机数生成器的更多相关文章
- [BZOJ3671][UOJ#6][NOI2014]随机数生成器
[BZOJ3671][UOJ#6][NOI2014]随机数生成器 试题描述 小H最近在研究随机算法.随机算法往往需要通过调用随机数生成函数(例如Pascal中的random和C/C++中的rand)来 ...
- [BZOJ3672][UOJ#7][NOI2014]购票
[BZOJ3672][UOJ#7][NOI2014]购票 试题描述 今年夏天,NOI在SZ市迎来了她30周岁的生日.来自全国 n 个城市的OIer们都会从各地出发,到SZ市参加这次盛会. ...
- 【BZOJ3671】[Noi2014]随机数生成器 暴力
[BZOJ3535][Noi2014]随机数生成器 Description Input 第1行包含5个整数,依次为 x_0,a,b,c,d ,描述小H采用的随机数生成算法所需的随机种子.第2行包含三个 ...
- BZOJ_3671_[Noi2014]随机数生成器_set+贪心
BZOJ_3671_[Noi2014]随机数生成器_set Description Input 第1行包含5个整数,依次为 x_0,a,b,c,d ,描述小H采用的随机数生成算法所需的随机种子.第 ...
- NOI2014 随机数生成器
随机数生成器 [问题描述] 小H最近在研究随机算法.随机算法往往需要通过调用随机数生成函数(例如Pascal中的random和C/C++中的rand)来获得随机性.事实上,随机数生成函数也并不是真正的 ...
- luogu P2354 [NOI2014]随机数生成器 贪心 卡空间 暴力
LINK:随机数生成器 观察数据范围还是可以把矩阵给生成出来的. 考虑如何求出答案.题目要求把选出的数字从小到大排序后字典序尽可能的小 实际上这个类似于Mex的问题. 所以要从大到小选数字 考虑选择一 ...
- BZOJ3671/UOJ6 [Noi2014]随机数生成器
本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/ ...
- 贪心 BZOJ 3671:[Noi2014]随机数生成器
Description Input 第 1行包含5个整数,依次为 x_0,a,b,c,d ,描述小H采用的随机数生成算法所需的随机种子.第2行包含三个整数 N,M,Q ,表示小H希望生成一个1到 ...
- bzoj 3671 [Noi2014]随机数生成器——贪心(时间复杂度分配)
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3671 设 x 为一个点的行号, y 为一个点的列号:原本想着判断一个点能不能选就是看选了的点 ...
- bzoj3671 [Noi2014]随机数生成器
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=3671 [题解] 贪心从1...n*m取,开两个5000*5000的数组就够了,可以重复利用, ...
随机推荐
- 双引号与尖括号的区别 and 相对路径与绝对路径
包含头文件的时候,如果包含的是自己写的头文件是用" " .如果是包含系统的头文件,一般用<>. 相对路径与绝对路径
- Python的网络编程--思维导图
Python的网络编程--思维导图
- 1.2socket服务器使用多线程
socket服务器代码如下 # -*- coding: utf-8 -*-from socket import * import time import threading,_thread as th ...
- Serial interface (RS-232)
转自:http://www.fpga4fun.com/SerialInterface.html A serial interface is a simple way to connect an FPG ...
- Centos7安装配置iptable
CentOS7默认的防火墙不是iptables,而是firewalle. 安装iptable iptable-service #先检查是否安装了iptables service iptables st ...
- org.quartz-scheduler 动态添加自动任务
1.添加pom.xml <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId> ...
- rnn-手写数字识别-网络结构-shape
手写数字识别经典案例,目标是: 1. 掌握tf编写RNN的方法 2. 剖析RNN网络结构 tensorflow编程 #coding:utf-8 import tensorflow as tf from ...
- tf.trainable_variables() and tf.all_variables()
tf.trainable_variables() 返回的是 所有需要训练的变量列表 tf.all_variables() 返回的是 所有变量的列表 v = tf.Variable(0, name=' ...
- 图片宽度为2000px,使图片在电脑不同分辨率下都水平居中,不压缩。
<div style="postion:relative;width:100%;overflow:hidden;"> <img src="路径" ...
- Python socketserver ftp功能简单讲解
socketserver模块实现并发 为什么要讲socketserver?我们之前写的tcp协议的socket是不是一次只能和一个客户端通信,如果用socketserver可以实现和多个客户端通信.它 ...