暂无链接

工作计划

【问题描述】

工作使艾奇快乐。
勤奋的工作为国家直接贡献了GDPGDPGDP,艾奇认为只要对国家有利,即使牺牲自
己生命也心甘情愿,绝不会因为自己可能受到祸害而躲开。
当艾奇无聊的时候,她就会去工作,然而并不是每次工作都是轻松而愉悦的。
当天艾奇又一次来到了学校,等待着她的是一个有nnn行mmm列的巨大的矩阵和qqq个任务。对于每个任务,艾奇被要求交换这个矩阵中的两个子矩阵。
每个任务,艾奇会获得六个正整数x1,y1,x2,y2,h,wx_1,y_1,x_2,y_2,h,wx1​,y1​,x2​,y2​,h,w。x1,y1x_1,y_1x1​,y1​代表了第一个矩阵左上角的行列位置(即在第x1x_1x1​行第y1y_1y1​列);x2,y2x_2,y_2x2​,y2​代表了第二个矩阵左上角的行列位置,h,wh,wh,w代表了这两个矩阵的高和宽(即行数和列数)。
数据保证所有需要交换的矩阵互不相交或相邻。也就是说,没有任何一个元
素同时属于这两个矩阵,也不存在某两个元素分别属于两个矩阵且相邻(共边)。

【输入格式】

输入文件名为havefun.inhavefun.inhavefun.in。
第一行两个正整数n,m,qn,m,qn,m,q表示矩阵的高和宽(即行数和列数)和任务数。
接下来一行五个参数,将用于生成矩阵,详见备注。
接下来qqq行,每行666个数,x1,y1,x2,y2,h,wx_1,y_1,x_2,y_2,h,wx1​,y1​,x2​,y2​,h,w,分别表示第一个矩阵的左上位置,第二个矩阵的左上位置,这两个矩阵的高和宽(即行数和列数)。

【输出格式】

输出文件名为havefun.outhavefun.outhavefun.out。
输出一个数,将用于校验你的矩阵,详见备注。

【输入样例 1】

详见havefun1.inhavefun1.inhavefun1.in

【输出样例 1】

详见havefun1.outhavefun1.outhavefun1.out

【数据范围】

【备注】

由于读入规模较大,经过测试,在标准配置中,极限数据使用scanfscanfscanf读入需要约1.35s1.35s1.35s
所以我们决定,将读入矩阵的方式改为生成矩阵。我们将给你五个参数用于生成矩阵,P,Q,R,S,ModP,Q,R,S, ModP,Q,R,S,Mod。测试证明,这段代码在标准配置中,极限数据的生成只需要0.12s0.12s0.12s。你只需要调用spawningspawningspawning 函数,并申请一个至少为2005×20052005\times 20052005×2005的全局数组AAA接收即可,下标默认为(1,1)(1,1)(1,1)到(n,m)(n,m)(n,m)。输入保证P,Q,R,S,Mod&lt;109P,Q,R,S, Mod&lt;10^9P,Q,R,S,Mod<109。
你必须保证数组AAA中所有元素为000,矩阵的长宽即n,mn,mn,m为全局变量。
当然,输出矩阵也是非常缓慢的。请你将你的答案全部赋值给全局数组AAA矩阵,并调用checkercheckerchecker函数,你的主程序中不需要输出任何多余信息。
你并不需要对样例三中的答案为负数感到惊讶或担心。给出的checkercheckerchecker函数在极限数据下计算本身就是超出longlonglong\ longlong long范围的。但凡你的最终矩阵是正的,该函数就会输出一个正确的结果。
我们已经将这两段生成代码以文件形式下发,文件名为Too_young.cppToo\_young.cppToo_young.cpp

题解

用一个包含上下左右四个方向的链表维护矩阵即可,访问元素时记得爬链表,不能直接调用。

代码

警告:这份代码常数极大,仅供参考

#include<cstdio>
#include<algorithm>
using namespace std;
const int M=2005;
struct sd{int x,y;}w[M][M],a[M][M],s[M][M],d[M][M];
int A[M][M],ans[M][M],n,m,q,P,Q,R,S,Mod;
void spawning(int P,int Q,int R,int S,int Mod){int T=0;for(int i=1;i<=n;i++)for(int j=1;j<=m;j++){T=(T+(1ll*(i+j)*P+1ll*i*j*Q+1ll*i*R+1ll*j*S)%Mod+Mod)%Mod;A[i][j]=T;}A[P%n+1][P%m+1]^=1;A[P%n+1][Q%m+1]^=1;A[P%n+1][R%m+1]^=1;A[P%n+1][S%m+1]^=1;A[Q%n+1][P%m+1]^=1;A[Q%n+1][Q%m+1]^=1;A[Q%n+1][R%m+1]^=1;A[Q%n+1][S%m+1]^=1;A[R%n+1][P%m+1]^=1;A[R%n+1][Q%m+1]^=1;A[R%n+1][R%m+1]^=1;A[R%n+1][S%m+1]^=1;A[S%n+1][P%m+1]^=1;A[S%n+1][Q%m+1]^=1;A[S%n+1][R%m+1]^=1;A[S%n+1][S%m+1]^=1;
}
void checker(){long long Pin=0;for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){Pin+=(1ll*i*n+j)*A[i][j];}}printf("%lld\n",Pin);
}
void in(){scanf("%d%d%d%d%d%d%d%d",&n,&m,&q,&P,&Q,&R,&S,&Mod);}
void ac()
{spawning(P,Q,R,S,Mod);for(int i=1;i<=n;++i)for(int j=1;j<=m;++j)w[i][j]=(sd){i-1,j},a[i][j]=(sd){i,j-1},s[i][j]=(sd){i+1,j},d[i][j]=(sd){i,j+1};for(int i=1;i<=n;++i)d[i][0]=(sd){i,1},a[i][m+1]=(sd){i,m};for(int i=1;i<=m;++i)s[0][i]=(sd){1,i},w[n+1][i]=(sd){n,i};for(int x1,y1,x2,y2,h,b,i;q--;){scanf("%d%d%d%d%d%d",&x1,&y1,&x2,&y2,&h,&b);sd sq1=(sd){x1,0},sq2=(sd){x2,0};for(i=1;i<=y1;++i)sq1=d[sq1.x][sq1.y];for(i=1;i<=y2;++i)sq2=d[sq2.x][sq2.y];swap(d[a[sq1.x][sq1.y].x][a[sq1.x][sq1.y].y],d[a[sq2.x][sq2.y].x][a[sq2.x][sq2.y].y]);swap(a[sq1.x][sq1.y],a[sq2.x][sq2.y]);for(i=1;i<h;++i){sq1=s[sq1.x][sq1.y];sq2=s[sq2.x][sq2.y];swap(d[a[sq1.x][sq1.y].x][a[sq1.x][sq1.y].y],d[a[sq2.x][sq2.y].x][a[sq2.x][sq2.y].y]);swap(a[sq1.x][sq1.y],a[sq2.x][sq2.y]);}swap(w[s[sq1.x][sq1.y].x][s[sq1.x][sq1.y].y],w[s[sq2.x][sq2.y].x][s[sq2.x][sq2.y].y]);swap(s[sq1.x][sq1.y],s[sq2.x][sq2.y]);for(i=1;i<b;++i){sq1=d[sq1.x][sq1.y],sq2=d[sq2.x][sq2.y];swap(w[s[sq1.x][sq1.y].x][s[sq1.x][sq1.y].y],w[s[sq2.x][sq2.y].x][s[sq2.x][sq2.y].y]);swap(s[sq1.x][sq1.y],s[sq2.x][sq2.y]);}swap(a[d[sq1.x][sq1.y].x][d[sq1.x][sq1.y].y],a[d[sq2.x][sq2.y].x][d[sq2.x][sq2.y].y]);swap(d[sq1.x][sq1.y],d[sq2.x][sq2.y]);for(i=1;i<h;++i){sq1=w[sq1.x][sq1.y];sq2=w[sq2.x][sq2.y];swap(a[d[sq1.x][sq1.y].x][d[sq1.x][sq1.y].y],a[d[sq2.x][sq2.y].x][d[sq2.x][sq2.y].y]);swap(d[sq1.x][sq1.y],d[sq2.x][sq2.y]);           }swap(s[w[sq1.x][sq1.y].x][w[sq1.x][sq1.y].y],s[w[sq2.x][sq2.y].x][w[sq2.x][sq2.y].y]);swap(w[sq1.x][sq1.y],w[sq2.x][sq2.y]);for(i=1;i<b;++i){sq1=a[sq1.x][sq1.y],sq2=a[sq2.x][sq2.y];swap(s[w[sq1.x][sq1.y].x][w[sq1.x][sq1.y].y],s[w[sq2.x][sq2.y].x][w[sq2.x][sq2.y].y]);swap(w[sq1.x][sq1.y],w[sq2.x][sq2.y]);}}for(int i=1;i<=n;++i){sd pos=(sd){i,0};pos=d[pos.x][pos.y];for(int j=1;j<=m;++j)ans[i][j]=A[pos.x][pos.y],pos=d[pos.x][pos.y];}for(int i=1;i<=n;++i)for(int j=1;j<=m;++j)A[i][j]=ans[i][j];checker();
}
int main(){in(),ac();}

[2018.10.13 T2] 工作计划相关推荐

  1. 【2012.10.13 上周工作总结】

    上周学习了新的javascript框架Ember,接下来将这个框架与backbone做一些简单比较,同时做一些总结 一.个人感觉Ember相对于Backbone具有更高的灵活性: 1.Backbone ...

  2. 2018.10.13 bzoj1834: [ZJOI2010]network 网络扩容(最大流+费用流)

    传送门 网络流水题啊. 第一问直接放心跑最大流(本来还以为有什么tricktricktrick). 第二问就直接把原来的边(u,v,c,w)(u,v,c,w)(u,v,c,w)变成(u,v,c,0)( ...

  3. 2018 Macbook pro 15(10.13.6)安装Nvidia 1070(Aorus Gaming Box)显卡驱动

    电脑详细配置:      MacBook Pro 15" (2018)      CPU: 2.6 GHz Intel Core i7 (i7-8850H)      GPU(s): Int ...

  4. 2019年小学计算机室管理制度,2018年-2019上小学微机室工作计划.doc

    PAGE \* MERGEFORMAT 1 漳河店镇中甘罗小学微机室工作计划 (2018年-2019年第一学期) 本学期立足于提高微机室管理水平,建立良好的使用.管理和教学模式,努力管好微机室的管理工 ...

  5. 计算机专业教研成绩,2018学年第一学期计算机组教研组工作计划

    2018学年第一学期计算机组教研工作计划 本学期计算机教研组开展的各项活动,要在学校教务处的统一领导下,立足课堂教学,积极开展教研活动.本着求真务实的工作作风,充分调动专业教师的教学积极性,不断提高课 ...

  6. 2017工作总结及2018工作计划

    这两天在写2017年工作总结,翻翻这一年学的东西干的事儿,好多话想说. 临近年底,终于硬着头皮学完了邹博机器学习视频里的算法,不然真心疼花的那四百块钱.为了看懂他那些公式推导,不得不又把高数.线性代数 ...

  7. 项目管理计划包括的13个分计划——软考高项笔记10

    项目管理计划包括的13个分计划 沟通管理计划(狗) 质量管理计划(子) (没有整体管) 范围管理计划(范) 进度管理计划(进) 成本管理计划(成) 人员配置管理计划(人) 风险管理计划(风) 采购管理 ...

  8. 10天精读掌握:计算机组成与设计COAD:Patterson and Hennessy 第6天 2018/10.31

    10天精读掌握:计算机组成与设计COAD:Patterson and Hennessy 第6天 2018/10.31 1. 第4次周计划概览 2. 今日学习成果 3. 今日时间表 4. 今日反思 5. ...

  9. 10天精读掌握:计算机组成与设计COAD:Patterson and Hennessy 第5天 2018/10.30

    10天精读掌握:计算机组成与设计COAD:Patterson and Hennessy 第5天 2018/10.30 1. 第4次周计划概览 2. 今日学习成果 3. 今日时间表 4. 今日反思 今天 ...

  10. 10天精读掌握:计算机组成与设计(COAD:Patterson and Hennessy) (第4天 2018/10.29)

    10天精读掌握:计算机组成与设计COAD:Patterson and Hennessy 第4天 2018/10.29 1. 第4次周计划概览 2. 今日学习成果 3. 今日时间表 4. 今日反思 5. ...

最新文章

  1. JSON.parse解析特殊字符报错解决方案
  2. C#中Hashtable表的应用
  3. Subsonic 基本使用
  4. 几条跟堆栈扯上关系的汇编指令
  5. c/c++十七: 变长参数
  6. 阅读redis源代码的一些体会
  7. 软件维护费 一般按照多少比例_2021年国家电网招聘:笔试进面一般是多少比例?...
  8. java 数据库数据写接口_Java读取接口数据并保存到数据库
  9. 1.3编程基础之算术表达式与顺序执行 01 A+B问题 (Python3实现)
  10. Timer的schedule和scheduleAtFixedRate方法的区别解析(转)
  11. 消防信号总线原理_消防二总线的构成以及工作原理?
  12. cpu多开测试软件,教你用多核CPU多开畅玩大型3D游戏
  13. C# 使用Panel控件实现窗体嵌套
  14. 【实战】在qgis上查看街景照片( go2streetview谷歌街景、go2mapillary)
  15. 利用opencv实现九宫格拼图功能
  16. 战地1 - 概念艺术
  17. Python selenium 模拟登录QQ空间
  18. Python+Selenium爬取新浪微博评论数据
  19. Python学生管理系统(界面版)
  20. 新技术或语言学习方法总结

热门文章

  1. Softmax Function
  2. h3c交换机堆叠(IRF)配置三步完成
  3. Java修改带回显吗_修改的是根据自定义标签进行处理回显
  4. PHP实现常用的数据结构之链表
  5. 关于vim复制剪贴粘贴命令的总结-转
  6. java中HashSet实现(转)
  7. 对Python中yield的理解
  8. java内存分配与回收策略、动态对象年龄判断、空间分配担保
  9. MyBatis中拦截器(Interceptor)实现原理分析
  10. 安装RabbitMQ无法访问(http://localhost:15672)解决方案