bzoj3671 [Noi2014]随机数生成器
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=3671
【题解】
贪心从1...n*m取,开两个5000*5000的数组就够了,可以重复利用,坐标可以压到一个int里。
每次暴力标记不能访问的,标到已经有标记的就不用标了因为后面的肯定前面已经标记过了。
均摊复杂度就对了。复杂度$O(nm)$。
这破题还卡PE..
# include <stdio.h>
# include <string.h>
# include <iostream>
# include <algorithm>
// # include <bits/stdc++.h> using namespace std; typedef long long ll;
typedef long double ld;
typedef unsigned long long ull;
const int M = 5e3 + ;
const int mod = 1e9+; int mp[M][M];
int a[M * M], xc, A, B, C, D, n, m, T;
inline int gnext(int x) {
return (1ll * A * x % D * x % D + 1ll * B * x % D + C) % D;
} # define id(i, j) (((i)-) * m + (j)) int main() {
int Q;
cin >> xc >> A >> B >> C >> D;
cin >> n >> m >> Q; T = n*m;
for (int i=; i<=T; ++i) a[i] = i;
for (int i=; i<=T; ++i) {
xc = gnext(xc);
swap(a[i], a[xc % i + ]);
}
while(Q--) {
scanf("%d%d", &A, &B);
swap(a[A], a[B]);
}
for (int i=; i<=n; ++i)
for (int j=; j<=m; ++j)
mp[i][j] = a[id(i, j)];
for (int i=; i<=n; ++i)
for (int j=; j<=m; ++j)
a[mp[i][j]] = id(i, j), mp[i][j] = ;
int x, y, ok = ;
for (int i=; i<=T; ++i) {
x = (a[i] - ) / m + ;
y = a[i] - (x-) * m;
if(!mp[x][y]) {
if(ok) printf("%d", i), ok = ;
else printf(" %d", i);
for (int a=x+; a<=n; ++a)
for (int b=y-; b; --b) {
if(mp[a][b]) break;
mp[a][b] = ;
}
for (int a=x-; a; --a)
for (int b=y+; b<=m; ++b) {
if(mp[a][b]) break;
mp[a][b] = ;
}
}
}
puts("");
return ;
}
bzoj3671 [Noi2014]随机数生成器的更多相关文章
- BZOJ3671 [Noi2014]随机数生成器 【贪心】
题目链接 BZOJ3671 题解 模拟题意生成矩阵贪心从小选择即可 每选择一个,就标记其左下右上矩阵 由于每次都是标记一个到边界的矩阵,所以一旦遇到标记过就直接退出即可,可以保证复杂度 还有就是空间和 ...
- BZOJ3671: [Noi2014]随机数生成器(贪心)
Time Limit: 50 Sec Memory Limit: 256 MBSubmit: 2098 Solved: 946[Submit][Status][Discuss] Descripti ...
- [bzoj3671][Noi2014][随机数生成器] (贪心+位运算+卡空间)
Description Input 第1行包含5个整数,依次为 x_0,a,b,c,d ,描述小H采用的随机数生成算法所需的随机种子.第2行包含三个整数 N,M,Q ,表示小H希望生成一个1到 N×M ...
- [BZOJ3671][UOJ#6][NOI2014]随机数生成器
[BZOJ3671][UOJ#6][NOI2014]随机数生成器 试题描述 小H最近在研究随机算法.随机算法往往需要通过调用随机数生成函数(例如Pascal中的random和C/C++中的rand)来 ...
- 【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/ ...
随机推荐
- 【week5】psp
本周psp psp饼图: 随笔字数折线图: 代码行折线图:
- 【Redis】- 双写一致性
首先,缓存由于其高并发和高性能的特性,已经在项目中被广泛使用.在读取缓存方面,大家没啥疑问,都是按照下图的流程来进行业务操作. 但是在更新缓存方面,对于更新完数据库,是更新缓存呢,还是删除缓存.又或者 ...
- mstsc远程登录终端超出最大连接数的解决办法
1,.远程服务器有两个用户登录 2.第三个登录时提示:终端服务器超出了最大允许连接,这种情况怎么解决 A.通过运行命令来解决:运行输入mstsc /admin /v:IP:端口 敲回车来解决,这里的 ...
- vue-cli项目里npm安装使用elementUI
第一步:进入到项目目录里 npm i element-ui -S 第二步:在main.js中引入 import ElementUI from 'element-ui' import 'element- ...
- solr 学习之solrJ
solrJ是访问Solr服务的JAVA客户端,提供索引和搜索的请求方法,SolrJ通常嵌入在业务系统中,通过solrJ的API接口操作Solr服务. <!-- https://mvnreposi ...
- linux tomcat shutdown.sh 不能正常关闭
一般造成这种原因是因为项目中有非守护线程的存在 基本原理为启动tomcat时记录启动tomcat的进程id(pid),关闭时强制杀死该进程 1.找到tomcat下bin/catalina.sh文件,v ...
- vue2.0 自定义时间过滤器
html <td>{{serverInfo.serverTime| formatTime('YMDHMS')}}</td> js serverTime: new Date(). ...
- 《高性能MySQL》 读书总结
目录: 第一章.MySQL架构与历史 第二章.MySQL基准测试 第三章.服务器性能剖析 第四章.Schema与数据类型优化 第五章.创建高性能的索引 第六章.查询性能优化 第七章.MySQL高级特性 ...
- hadoop 将HDFS上多个小文件合并到SequenceFile里
背景:hdfs上的文件最好和hdfs的块大小的N倍.如果文件太小,浪费namnode的元数据存储空间以及内存,如果文件分块不合理也会影响mapreduce中map的效率. 本例中将小文件的文件名作为k ...
- 【题解】CF#852 E-Casinos and travel
天啊我怎么这么蠢……写了一个树形dp,的确发现记录的很多值并没有什么用,然而当时脑子没转过弯来还是写了这个树形dp……虽然能A但就不解释了,总之是个垃圾算法(ー̀дー́) #include <b ...