当前位置: 首页 > news >正文

CCF T3

CCF T3

没什么太特殊的,注意到全局旋转操作复杂度太高,考虑打个懒标记进行局部旋转。(别忘了对翻转标记进行旋转,因为这么一个唐诗问题调了2h我也是神人了)

#include<bits/stdc++.h>
using namespace std;
const int N=500,M=5e5+10;
int m,n,tag,nn,mm;
int mov[M];
char ch[N][N];
struct Node{int opt,u,vd,Ll,dr,ro;
}op[M];
void Res(int pos){for(int t=tag%4;t;t--){int teml(op[pos].Ll),temr(op[pos].dr);op[pos].Ll=op[pos].u;op[pos].dr=op[pos].vd;op[pos].vd=n-teml+1;// 反的       op[pos].u=n-temr+1;op[pos].ro*=-1;}char buf[20][20];memset(buf,0,sizeof(buf));for(int i=op[pos].Ll;i<=op[pos].dr;++i){// liefor(int j=op[pos].u;j<=op[pos].vd;++j){ //cengbuf[j-op[pos].u+1][i-op[pos].Ll+1]=ch[j][i];}}if(~op[pos].ro){// 上下翻转int sum=op[pos].u+op[pos].vd;for(int i=op[pos].Ll;i<=op[pos].dr;++i){for(int j=op[pos].u;j<=op[pos].vd;++j){ch[j][i]=buf[sum-j-op[pos].u+1][i-op[pos].Ll+1];}}}else{// 左右翻转 int sum=op[pos].Ll+op[pos].dr;for(int i=op[pos].u;i<=op[pos].vd;++i){for(int j=op[pos].Ll;j<=op[pos].dr;++j){ch[i][j]=buf[i-op[pos].u+1][sum-j-op[pos].Ll+1];}}}
}
void Rol(int pos){tag+=op[pos].ro;for(int t=tag%4;t;t--){int temv(op[pos].vd);op[pos].vd=op[pos].u;op[pos].u=n-temv-op[pos].Ll+2;// 反的}char buf[20][20];memset(buf,0,sizeof(buf));for(int i=op[pos].u;i<=op[pos].u+op[pos].Ll-1;++i){for(int j=op[pos].vd;j<=op[pos].vd+op[pos].Ll-1;++j){int ii=i-op[pos].u+1,jj=j-op[pos].vd+1;buf[ii][jj]=ch[i][j];}}if(op[pos].dr==90){for(int i=op[pos].u;i<=op[pos].u+op[pos].Ll-1;++i){for(int j=op[pos].vd;j<=op[pos].vd+op[pos].Ll-1;++j){int ii=i-op[pos].u+1,jj=j-op[pos].vd+1;ch[i][j]=buf[jj][op[pos].Ll-ii+1];}}}else if(op[pos].dr==180){for(int i=op[pos].u;i<=op[pos].u+op[pos].Ll-1;++i){for(int j=op[pos].vd;j<=op[pos].vd+op[pos].Ll-1;++j){int ii=i-op[pos].u+1,jj=j-op[pos].vd+1;ch[i][j]=buf[op[pos].Ll-ii+1][op[pos].Ll-jj+1];}}}else{for(int i=op[pos].u;i<=op[pos].u+op[pos].Ll-1;++i){for(int j=op[pos].vd;j<=op[pos].vd+op[pos].Ll-1;++j){int ii=i-op[pos].u+1,jj=j-op[pos].vd+1;ch[i][j]=buf[op[pos].Ll-jj+1][ii];}}}
}
int main(){// freopen("2.in","r",stdin);// freopen("2.out","w",stdout);ios::sync_with_stdio(0);cin.tie(0),cout.tie(0);cin>>n,mm=nn=n;for(int i=1;i<=n;++i){for(int j=1;j<=n;++j){cin>>ch[i][j];}}cin>>m;for(int i=1;i<=m;++i) cin>>mov[i];for(int i=2;i<=m;i+=6){op[i/6+1].opt=mov[i];op[i/6+1].u=mov[i+1];op[i/6+1].vd=mov[i+2];op[i/6+1].Ll=mov[i+3];op[i/6+1].dr=mov[i+4];op[i/6+1].ro=mov[i+5];}for(int i=mov[1];i;i--){if(op[i].opt==2) Res(i);else Rol(i);}char buf_[N][N];for(int t=tag%4;t;t--){memset(buf_,0,sizeof(buf_));for(int i=1;i<=n;++i){for(int j=1;j<=n;++j){buf_[i][j]=ch[i][j];}}for(int i=1;i<=n;++i){for(int j=1;j<=n;++j){ch[i][j]=buf_[n-j+1][i];}}}for(int j=1;j<=n;++j){if(ch[1][j]=='?'){mm=j-1;break;}}for(int i=1;i<=n;++i){if(ch[i][1]=='?'){nn=i-1;break;}}for(int i=1;i<=nn;++i){for(int j=1;j<=mm;++j) cout<<ch[i][j];cout<<endl;}
}
/* 
3
649
712
583
19
3 1 2 2 2 180 2 2 1 3 2 3 -1 1 2 2 2 90 1
*/
http://www.jsqmd.com/news/263681/

相关文章:

  • 调色板示例颜色数据获取-基于 Flutter × OpenHarmony
  • 【多智能体控制】多智能体点对点转移的分布式模型预测控制【含Matlab源码 14976期】
  • UE 增强输入(2)
  • dify制作的工作流如何通过API调用
  • (5-2)UCLASS(..) 的参数
  • (6-2)常见类的继承关系
  • 远程Ubantu Mysql安装 + 本地Windows Navicat连接
  • Ubuntu安装Lamp
  • 2026年国产时序数据库市场全景:从技术突破到行业落地
  • SpringMVC的处理流程
  • (6-1)常见类的继承关系
  • How to do A/B test?
  • 铁轨轨道安全障碍物检测数据集VOC+YOLO格式620张6类别
  • CodeArts Doer代码智能体
  • 大模型驱动的知识图谱构建全攻略:从传统方法到前沿进展,一篇读懂LLM如何重塑知识工程
  • (6-3)常见类的继承关系
  • Python中的异常处理
  • 马斯克2026采访详解:中国AI算力将远超世界,世界变化的奇点即将到来!
  • 学长亲荐2026 TOP8 AI论文网站:专科生毕业论文神器测评
  • 强烈安利8个AI论文软件,MBA毕业论文轻松搞定!
  • 语音识别大模型原理 - 详解
  • AI+时代:程序员必知的就业转型与技能提升指南
  • YOLOv11性能暴涨方案:Mamba-MLLA注意力机制实战集成,精度与速度双提升
  • (6-4)常见类的继承关系
  • 针对Grok接入美国军方奇点先生分析后给出了三封公开信
  • 2026年AI发展新主线:从模型到系统,小白到程序员的必学之路
  • 2026年大模型学习路线:从零基础到精通的全面指南_AI大模型应用开发学习路线(2026最新)
  • 大模型技术路线图:从Transformer到AI Agent的完整学习路径【珍藏版】
  • YOLOv8科研级轻量化升级:基于SOTA ADown的高效下采样设计
  • include文件包含及c底层调试