[JZOJ5281]钦点题解--瞎搞+链表

题目链接

于 暴 力 过

分析

第一眼: 模拟美滋滋?!

然后数据范围...不太对

naiive模拟30pts

然后你交换字符串指针60pts

然后发现可以用链表记录指针的上下左右又是哪个指针,操作时只用操作边界就好了

敲代码的时候一定要仔细,一开始一个SB错误查了好久

另外想讲讲这个毒瘤字符串读入,它单个字符串亲测最长有1e5,那么你肯定不能用二维char数组来存.

于是乖乖用string,又跑了个倒数

看他们的代码是怎么跑得和香港记者一样快的,结果发现我还是naive了

直接搞一个总字符串长度的char数组全部读入

我们都已经是存指针了,干脆就存它在这个大数组中的开头位置就行了

又学会了一个船新操作

printf("%s",&str[ch[now]]);

代码

char str[11000005];
int f[1007][1007],p[1005][1005],ch[1000005],n,m,q,tot=0,pos=0;
int t[1500005][4];
inline void getin(){char c;int st=pos,l=0;while((c=getchar())<'a'||c>'z');str[pos++]=c,l++;while((c=getchar())>='a'&&c<='z')str[pos++]=c,l++;str[pos++]='\0';ch[tot]=st;
}
int main(){//freopen("appoint4.in","r",stdin);//freopen("wtf2.out","w",stdout);int x,y,xx,yy,l,r;read(n),read(m),read(q);for(ri i=1;i<=n;i++){for(ri j=1;j<=m;j++){f[i][j]=++tot,getin();}}for(ri i=1;i<=m;i++)f[0][i]=++tot,f[n+1][i]=++tot;for(ri i=1;i<=n;i++)f[i][0]=++tot,f[i][m+1]=++tot;//边界也要有指针for(ri i=0;i<=n+1;i++){for(ri j=0;j<=m+1;j++){//处理指针if(j)t[f[i][j]][0]=f[i][j-1];t[f[i][j]][1]=f[i][j+1];if(i)t[f[i][j]][2]=f[i-1][j];t[f[i][j]][3]=f[i+1][j];}}int a,b,c,d,p1,p2,p3,p4,ex,exx;while(q--){read(x),read(y),read(xx),read(yy),read(l),read(r);ex=x+l-1,exx=xx+l-1;p1=t[f[x][0]][1],p2=t[f[xx][0]][1],p3=t[f[ex][0]][1],p4=t[f[exx][0]][1];for(ri i=1;i<=m;i++){p[x][i]=p1,p[xx][i]=p2,p[ex][i]=p3,p[exx][i]=p4;p1=t[p1][1],p2=t[p2][1],p3=t[p3][1],p4=t[p4][1];}ex=y+r-1,exx=yy+r-1;p1=t[f[0][y]][3],p2=t[f[0][yy]][3],p3=t[f[0][ex]][3],p4=t[f[0][exx]][3];for(ri i=1;i<=n;i++){p[i][y]=p1,p[i][yy]=p2,p[i][ex]=p3,p[i][exx]=p4;p1=t[p1][3],p2=t[p2][3],p3=t[p3][3],p4=t[p4][3];}for(ri i=0;i<r;i++){a=y+i,c=yy+i;//printf("%d %d\n",a,c);t[t[p[x][a]][2]][3]=p[xx][c];t[t[p[xx][c]][2]][3]=p[x][a];swap(t[p[xx][c]][2],t[p[x][a]][2]);a=x+l-1,b=y+i,c=xx+l-1,d=yy+i;//printf("--%d %d %d %d--\n",a,b,c,d);t[t[p[a][b]][3]][2]=p[c][d];t[t[p[c][d]][3]][2]=p[a][b];swap(t[p[c][d]][3],t[p[a][b]][3]);}for(ri i=0;i<l;i++){a=x+i,c=xx+i;t[t[p[a][y]][0]][1]=p[c][yy];t[t[p[c][yy]][0]][1]=p[a][y];swap(t[p[a][y]][0],t[p[c][yy]][0]);a=x+i,b=y+r-1,c=xx+i,d=yy+r-1;t[t[p[a][b]][1]][0]=p[c][d];t[t[p[c][d]][1]][0]=p[a][b];swap(t[p[a][b]][1],t[p[c][d]][1]);}}int now;for(ri i=1;i<=n;i++){now=t[f[i][0]][1];for(ri j=1;j<=m;j++){//cout<<str[now];//printf("%s ",str[now]);printf("%s",&str[ch[now]]);//直接输出,很方便now=t[now][1];putchar(' ');}puts("");}return 0;
}

转载于:https://www.cnblogs.com/Rye-Catcher/p/9884147.html

[JZOJ5281]钦点题解--瞎搞+链表相关推荐

  1. HDU 5600(瞎搞)

    第一场Bestcoder居然爆零..果然是too naive..小聪明全部直接输出"YES"过了pretest,结果被叉也是&%$% 找到规律传递下就好.后来看官方题解感觉 ...

  2. android重置系统,安卓手机越用越卡,恢复出厂设置真有用?别瞎搞,看完就明白了!...

    安卓手机越用越卡,恢复出厂设置真有用?别瞎搞,看完就明白了! 现在手机的价格逐渐的开始上升,一部好一点的手机价格还是比较贵的,所以很多人想要节省更多的换机支出,都会想要购买到一款可以使用的比较久的手机 ...

  3. HDU5971【瞎搞】

    题意:略(忙着准备文化课...明天期中考啊.... 思路: 正解就是染色,2-sat搞: AC代码(虽然是错误的...数据水(过踏马的也行啊,起码打脸他啊!) 4 3 1 0 1 2 2 3 3 4 ...

  4. HDU 4923 Room and Moor(瞎搞题)

    瞎搞题啊.找出1 1 0 0这样的序列,然后存起来,这样的情况下最好的选择是1的个数除以这段的总和. 然后从前向后扫一遍.变扫边进行合并.每次合并.合并的是他的前驱.这样到最后从t-1找出的那条链就是 ...

  5. 别再瞎搞数仓了!BAT内部大神:数据仓库不是谁都可以建的

    在我没有进互联网之前,我一直以为数据仓库是所有企业进行数据资产管理的必备工作,但直到我去了很多家企业搞数据之后才发现,原来并不是所有的企业都适合做数据仓库,更不要说数据中台了. 很多企业现在做数据仓库 ...

  6. Wannafly交流赛1: C. 腰带图(瞎搞)

    链接:https://www.nowcoder.com/acm/contest/69/C 来源:牛客网 题目描述 一个n个点m条边的无向图,它若满足以下性质,我们就称它为腰带图: 1.n为>=6 ...

  7. 我的瞎搞开发工具集以及对一些工具的比较

    本文的目的是作为一个记录,不引战,同时为有同样瞎搞爱好者提供一个学习思路--尽量全部推荐和使用免费开源工具,减少版权纠纷,降低学习成本,大概算有用吧 我的技术栈: 实际上有很多并不是很熟,请酌情参考 ...

  8. 使用jsdelivr时不要瞎搞

    8月15日jsdelivr在官网更新了使用条款.虽然不清楚具体更新了哪些内容,但是注意到这几个处被很多人忽略了.瞎搞很容易被jsdelivr阻断连接.以下是需要注意的这几个处. 4. Prohibit ...

  9. ubuntu--基础环境瞎搞集合

    安装ubuntu系统后有很多东西需要自己瞎搞一下,这里把一些瞎搞的过程记录在这里,方便以后重新装系统后重新配置. 一.安装. 可以在windows下制作启动盘(软碟通),然后开机u盘启动即可安装,预留 ...

最新文章

  1. elementui中有导出组件吗_Element-ui组件库Table表格导出Excel表格
  2. git切换用户密码_Java小白入门,常用Git命令有哪些?
  3. win7让任务管理器pid显示出来的方法
  4. java使用重复的类库,java list 去除 重复值
  5. 剑指offer(C++)-JZ25:合并两个排序的链表(数据结构-链表)
  6. ajax用iframe,使用ajax Post请求更新iframe内容
  7. HDU1716 排列2【全排列+输出格式】
  8. 生成模型VS判别模型
  9. ELK ElasticSearch、Logstash和Kibana的部署
  10. 速达财务管理软件使用方法
  11. 二种方法js实现轮播图自动切换
  12. MYSQL数据库日志
  13. java并发编程 pdf_Java并发编程实战 PDF
  14. 酷炫的可视化数据地图都是咋做的?10分钟学会
  15. html5置顶标签css样式,html5 header标签 html header css布局教程 /header
  16. 一份来自前端开发工程师的规范简历
  17. K.论演员的自我修养---组合数的运用路径计数
  18. 统计模型——贝叶斯统计模型,负二项分布
  19. 微信公众号的基本排版设置
  20. 以过来人经验---分享从学生--工程师之--怎么写好一份从事技术工作的简历及面试技巧(以嵌入式为例)(中)

热门文章

  1. redis的info指令详解
  2. MYSQL专题-MVCC多版本并发控制
  3. bose蓝牙音箱使用说明_身轻如燕好带走 时尚便携蓝牙音箱TOP5推荐
  4. 在 Linux 中如何禁止用户登录
  5. 带你了解2020年全新【思科专家级认证CCIE】
  6. 高德 Serverless 平台建设及实践
  7. Knative Serving 进阶: Knative Serving SDK
  8. linux 中断程序设计,Linux中断编程
  9. java 删除文件失败_java 文件删除失败(被进程占用)
  10. php后台无法登入,PHP magento后台无法登录问题解决方法