[Noi2014]随机数生成器

来自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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/269497.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Inherts

在http://mqingqing123.cnblogs.com/archive/2006/01/14/317162.html里&#xff0c;我介绍了CodeFile来取代Codebehind&#xff0c;可能你会感觉疑惑&#xff1a;ASP.NET工作组花费了很大的时间建立了与.NET1.1不同的后台文件模型&#xff0c;为什么没有更改.NET1.1的Inherits呢…

通孔的作用是什么linux,电路板空洞的作用是什么 如何区分PTH与NPTH两种通孔

如果你有机会拿起一片电路板&#xff0c;稍微观察一下会发现这电路板上有着许多大大小小的孔洞&#xff0c;把它拿起来对着天花板上的电灯看&#xff0c;还会发现许多密密麻麻的小孔&#xff0c;这些孔洞可不是放在哪里摆好看的&#xff0c;每个孔洞都是有其目的而被设计出来的…

Django Step by Step中文版,推荐一下

Diango是Python的一个快速Web开发框架&#xff0c;称为Python的ROR&#xff0c;在limodou的Blog里已经推荐了很久&#xff0c;元旦前后也学习了一下&#xff0c;最近很懒&#xff0c;什么都没有干。文档地址&#xff1a;http://www.woodpecker.org.cn/obp/django/django-stepby…

UVa 11324 最大团(强连通分量缩点)

https://vjudge.net/problem/UVA-11324 题意&#xff1a;给一张有向图G&#xff0c;求一个结点数最大的结点集&#xff0c;使得该结点集中任意两个结点u和v满足&#xff0c;要么u可以到达v&#xff0c;要么v可以达到u。 思路&#xff1a; 找到SCC后进行缩点建图&#xff0c;每个…

关于mysql修改密码 set password for root@localhost = password(‘xxx‘);报错解决方法

mysql> SET PASSWORD FOR rootlocalhost PASSWORD(123456); ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near PASSWORD(123456) at line 1 通过下面的命令…

佳能Linux230快门速度怎么调,80d快门速度怎么调

80d快门速度怎么调导语&#xff1a;佳能80d作为70d的升级版机型改变不是很大&#xff0c;但是也有一些很好的升级。很多朋友都已经入手了这款单反&#xff0c;一些入门的朋友可能对这款单反的操作不太明白。拿到相机之后拍出来的照片并不理想&#xff0c;本文就这款相机做点简单…

身份证照片比对,身份鉴别,人脸实名

详情链接&#xff1a;http://www.haoservice.com/docs/110 基于国家人口库,通过面部识别相关技术鉴证识别用户真实身份,人脸实名 支持格式&#xff1a; JSON/XML请求方式&#xff1a; POST接口备注&#xff1a; 测试表单&#xff1a;<form name"input" action&quo…

ie 7 beta 2出来了

下载地址&#xff1a;http://www.microsoft.com/windows/IE/ie7/ie7betaredirect.mspx

c语言编写源程序内容,编程(C语言源程序代码)讲述.doc

已知 S11/(12)1/(123)…1/(123…N) &#xff0c;当N的值为50时&#xff0c;求S的值。要求&#xff1a;按四舍五入的方式精确到小数点后第四位。#include #includemain(){float s0.0;int n,t0;for(n1;n<50;n){ttn;ss1.0/t;}printf("%7.4f",s);}1.9608把一张一元钞票…

【BootStrap】 概述 CSS

BootStrap BootStrap由Twitter开发&#xff0c;基于HTML,CSS,JS&#xff0c;是一套前端框架。它的特点是对浏览器良好的支持&#xff08;目前市面上所有流行浏览器都可以&#xff09;&#xff0c;兼容移动设备&#xff0c;以及响应式设计&#xff08;响应式CSS自适应于各种设备…

1055 - Expression #1 of SELECT list is not in GROUP BY clause and contains解决

1055 - Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column btc.a.applicant_unit which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_modeonly_full_group_by 执行下如下语句&…

祝贺您

如果您阅读到这篇文章&#xff0c;这就意味着您注册的博客已经申请成功。转载于:https://blog.51cto.com/11067/2441

SQL server中DateTime类型字段如何赋值零?

.net 1.1 不支持Sql Server datetime字段为空的情况.net 2.0 开始支持Sql Server datetime字段为空在不支持datetime为空的情况下&#xff0c;Sql Server数据库一般是选择一个特定的日期代表空值&#xff0c;默认的情况下&#xff0c;是1900-1-1

Java DO到DTO转换利用spring 的BeanUtils.copyProperties

Java DO到DTO转换利用spring 的BeanUtils.copyProperties() public static <T> List<T> copy(Object sourceList, Class<?> beanClass) throws Exception {List<Object> sList (List<Object>) sourceList;List<Object> tList new Arra…

c语言记录五个数组编程,C语言经典编程之数组

1、元素互换定义一个整型数组num[10]&#xff0c;随机初始化数组中元素值&#xff0c;然后将头尾元素两两互换&#xff0c;将交换后的数组值输出。【代码】#include int main(void){int num[10] {};int i 0;int temp;for(i 0; i < 10; i){scanf("%d", &num…

java 反射(Reflection) 详解

jAVA反射机制是在运行状态中&#xff0c;对于任意一个类&#xff0c;都能够知道这个类的所有属性和方法&#xff1b;对于任意一个对象&#xff0c;都能够调用它的任意方法和属性&#xff1b;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。 众所周知哈 ja…

c程序语言设计练习题,C语言程序设计练习题(含程序及参考答案)

《C语言程序设计练习题(含程序及参考答案)》由会员分享&#xff0c;可在线阅读&#xff0c;更多相关《C语言程序设计练习题(含程序及参考答案)(47页珍藏版)》请在人人文库网上搜索。1、1、定义一个函数int fun(int a,int b,int c)&#xff0c;它的功能是&#xff1a;若a,b,c能构…

终于可以放下心来了,呜呜...

从上周六开始到今天早上&#xff0c;一直在为开题报告的事情受煎熬。想题目想了一天半&#xff0c;实际写出来也就半天的时间差不多&#xff1b;交上去了之后还要担心着是不是会打回来重写。。。呜呼。。。 终于早上等到了回复&#xff0c;得到了自己想听的那些话&#…

mac上安装zookeeper教程

下载 下载tar包解压&#xff0c;推荐使用3.5.9版本&#xff0c;不要使用3.6以上的高版本&#xff0c;它jdk1.8冲突&#xff0c;也不要直接brew install zookeeper--默认最高版本 国内镜像下载地址&#xff1a; http://mirrors.hust.edu.cn/apache/zookeeper/stable/ 下载 ap…