【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的数组就够了,可以重复利用, ...
随机推荐
- python介绍与入门
一.python 的介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为 ...
- 老毛桃制作装机版u盘
启动盘准备工作: ① 老毛桃官网首页下载老毛桃v9.3装机版u盘启动盘制作工具安装到电脑上: ② 准备一个容量大在4G以上并能够正常使用的u盘. 第一步 到老毛桃官网中下载老毛桃v9.3安装包到系统桌 ...
- Date和Timestamp区别
主要是精度问题,date没有ms,而timestamp是有ms的,所以date的精度要低于timestamp. 而且二者可以互相转换. 除此之外,没有什么不同,
- python3 线程池-threadpool模块与concurrent.futures模块
多种方法实现 python 线程池 一. 既然多线程可以缩短程序运行时间,那么,是不是线程数量越多越好呢? 显然,并不是,每一个线程的从生成到消亡也是需要时间和资源的,太多的线程会占用过多的系统资源( ...
- day038 navicat pymysql
今日内容: 1.navicat 2.pymysql 1.navicat 需要掌握 #1. 测试+链接数据库 #2. 新建库 #3. 新建表,新增字段+类型+约束 #4. 设计表:外键 #5. 新建查询 ...
- Java并发编程_volatile关键字的用法(二)
被volatile修饰的变量能够保证每个线程能够获取该变量的最新值,从而避免出现数据脏读的现象. 根据下面实例理解: package sync; public class VolatileTest e ...
- Edit Distance II
Given two strings S and T, determine if they are both one edit distance apart. Example Given s = &qu ...
- :组合模式:Component
#ifndef __COMPONENT_H__ #define __COMPONENT_H__ #include <iostream> #include <vector> us ...
- Oracle创建database link(dblink)和同义词(synonym)
同一个数据库不同用户之间建立dblink和synonym 1.建立dblink 实现在A用户下通过dblink访问B用户下的数据库表,需要在A用户下创建访问B库的dblink连接 --创建远程连接db ...
- LSTM-自然语言建模
说到自然语言,我就会想到朴素贝叶斯,贝叶斯核心就是条件概率,而且大多数自然语言处理的思想也就是条件概率. 所以我用预测一个句子出现的概率为例,阐述一下自然语言处理的思想. 处理思想-概率 句子,就是单 ...