BZOJ 3671 [Noi 2014] 贪心 解题报告
来源:互联网 发布:电子产品外壳设计软件 编辑:程序博客网 时间:2024/05/23 12:53
Description
Input
第1行包含5个整数,依次为 x_0,a,b,c,d ,描述小H采用的随机数生成算法所需的随机种子。第2行包含三个整数 N,M,Q ,表示小H希望生成一个1到 N×M 的排列来填入她 N 行 M 列的棋盘,并且小H在初始的 N×M 次交换操作后,又进行了 Q 次额外的交换操作。接下来 Q 行,第 i 行包含两个整数 u_i,v_i,表示第 i 次额外交换操作将交换 T_(u_i )和 T_(v_i ) 的值。
Output
输出一行,包含 N+M-1 个由空格隔开的正整数,表示可以得到的字典序最小的路径序列。
Sample Input
1 3 5 1 71
3 4 3
1 7
9 9
4 9
Sample Output
1 2 6 8 9 12
HINT
本题的空间限制是 256 MB,请务必保证提交的代码运行时所使用的总内存空间不超过此限制。
一个32位整数(例如C/C++中的int和Pascal中的Longint)为4字节,因而如果在程序中声明一个长度为 1024×1024 的32位整型变量的数组,将会占用 4 MB 的内存空间。
2≤N,M≤5000
0≤Q≤50000
0≤a≤300
0≤b,c≤108
0≤x0
#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> using namespace std; #define M 5010 int T[M*M],map[M][M],l[M],r[M]; long long seed,a,b,c,d; int n,m,q; inline int Rand() { return seed=(a*seed*seed%d+b*seed%d+c)%d; } void kill(int x,int y) { for(int i=1;i<x;i++) r[i]=min(r[i],y); for(int i=x+1;i<=m;i++) l[i]=max(l[i],y); } int main() { int flag=0; scanf("%lld%lld%lld%lld%lld",&seed,&a,&b,&c,&d); scanf("%d%d%d",&m,&n,&q); for(int i=1;i<=m;i++) r[i]=n; for(int i=1;i<=m*n;i++) { T[i]=i; swap(T[i],T[Rand()%i+1]); } for(int i=1;i<=q;i++) { int x,y; scanf("%d%d",&x,&y); swap(T[x],T[y]); } int k=0; for(int i=1;i<=m;i++) for(int j=1;j<=n;j++) map[i][j]=T[++k]; for(int i=1;i<=m;i++) for(int j=1;j<=n;j++) T[map[i][j]]=i<<16|j; for(int i=1;i<=m*n;i++) { int x=T[i]>>16; int y=T[i]&65535; if(y>=l[x]&&y<=r[x]) { if(flag) putchar(' '); flag=1; printf("%d",map[x][y]); kill(x,y); } } return 0;}
阅读全文
0 0
- BZOJ 3671 [Noi 2014] 贪心 解题报告
- BZOJ 3671 NOI 2014 随机数生成器 贪心
- BZOJ 2005 [Noi 2010] 数论 解题报告
- BZOJ 3119 贪心 解题报告
- BZOJ 2563 贪心 解题报告
- bzoj 1566 NOI 2009 管道取珠 DP 解题报告
- BZOJ 1562 [NOI 2009] 二分图 解题报告
- BZOJ 2435 [Noi 2011] 树DP 解题报告
- BZOJ 4198 [Noi 2015] Huffman树 解题报告
- bzoj 1052 覆盖问题 贪心 解题报告
- 【Noi OpenJudge】 核电站 解题报告
- bzoj 1854 游戏 并查集+贪心 解题报告
- POJ1328解题报告 (贪心)
- NOI 1192 加分二叉树 解题报告
- NOI 2015 滞后赛解题报告
- 【Noi OpenJudge】 算24 解题报告
- [BZOJ 2109/BZOJ 2535][NOI 2010]航空管制(贪心)
- HLJU@贪心练习 解题报告
- File类:文件的删除和复制
- VMware vSphere Web Services SDK编程指南(一)-SDK简介
- Bellman-ford算法
- Java 语法分析LL1
- python---以不变形的方式调整图片大小
- BZOJ 3671 [Noi 2014] 贪心 解题报告
- Spring核心组件详解(Bean、Context、Core)
- Shell脚本实现动态配置IP与路由:解决嵌入式Android/Linux有线和无线网卡双网共存问题
- unity3d particle system优化
- 线段树:CDOJ1597-An easy problem C(区间更新的线段树)
- STM32F1时钟系统
- Activity的生命周期
- Office 2016激活教程(附KMS激活软件)
- 深度学习论文笔记(七)---Deconvolution network-2016年(Learning Deconvolution Network for Semantic Segmentation )