首页 > 其他分享 >Luogu CF400C 题解

Luogu CF400C 题解

时间:2023-10-05 15:23:19浏览次数:29  
标签:CF400C int 题解 值会 value will Luogu gets original

这道题其实不难,只是一道非常简单的模拟题。

我们发现,每顺时针转动 \(4\) 次、镜面对称 \(2\) 次、逆时针旋转 \(4\) 次,就变回原来的样子了。

所以,在操作前,我们可以让 \(x\gets x\bmod4\),\(y\gets y\bmod2\),\(z\gets z\bmod4\)。

接下来,只需在草稿纸上画一画,即可知道顺时针转一次,一个点的 \(x\) 值会变为原来的 \(y\) 值,\(y\) 值会变为原来的 \(n-x+1\) 的值;镜面对称一次,一个点的 \(y\) 值会变为原来的 \(m-y+1\) 的值;逆时针转一次,一个点的 \(y\) 值会变为原来的 \(x\) 值,\(x\) 值会变为原来的 \(m-y+1\) 的值。要注意,两个旋转操作后要交换 \(n\) 和 \(m\)。


This problem is not difficult, it's just a very simple simulation problem.

We found that every \(4\) clockwise rotations, \(2\) mirror symmetry rotations, and \(4\) counterclockwise rotations, it returns to its original state.

So, before proceeding, we can set \(x\gets x\bmod4\), \(y\gets y\bmod2\), and \(z\gets z\bmod4\).

Next, just draw a picture on the draft paper to know that if you turn it clockwise once, the \(x\) value of a point will become the original \(y\) value, and the \(y\) value will become the original \(n-x+1\) value; Once the mirror is symmetrical, the \(y\) value of a point will change to the original \(m-y+1\) value; Rotate counterclockwise once, and the \(y\) value of a point will become the original \(x\) value, and the \(x\) value will become the original \(m-y+1\) value. Note that after two rotation operations, \(n\) and \(m\) need to be swapped.

AC Code:

#include<bits/stdc++.h>
using namespace std;
int n,m,x,y,z,p;
struct e{
	int x,y;
}d[100005];
void fun1(int t){
	while(t--){
		for(int i=1;i<=p;i++){
			int o=d[i].x;
			d[i].x=d[i].y;
			d[i].y=n-o+1;
		}
		swap(n,m); //记得交换
	}
}
void fun2(int t){
	while(t--){
		for(int i=1;i<=p;i++){
			d[i].y=m-d[i].y+1;
		}
	}
}
void fun3(int t){
	while(t--){
		for(int i=1;i<=p;i++){
			int o=d[i].y;
			d[i].y=d[i].x;
			d[i].x=m-o+1;
		}
		swap(n,m);
	}
}
int main(){
	cin>>n>>m>>x>>y>>z>>p;
	x%=4;y%=2;z%=4; //记得模一下
	for(int i=1;i<=p;i++)cin>>d[i].x>>d[i].y;
	fun1(x);fun2(y);fun3(z);
	for(int i=1;i<=p;i++)cout<<d[i].x<<" "<<d[i].y<<"\n";
	return 0;
} 

标签:CF400C,int,题解,值会,value,will,Luogu,gets,original
From: https://www.cnblogs.com/I-like-magic/p/17743342.html

相关文章

  • CodeForces 814E An unavoidable detour for home 题解
    更好的阅读体验题意题目链接(洛谷翻译)给出\(n\)个点,和每个点的度\(d_i\)让你构造出一张无向图满足以下两条性质:点\(1\)到点\(i\)仅有唯一一条最短路。点\(1\)到点\(i\)的最短路长度大于等于点\(1\)到点\(i-1\)的最短路长度。求能构成满足条件的无向图......
  • Luogu 300 粉粉福
    由于第二张图片是分期制作的,所以两次爬头像时,粉丝列表顺序可能会有微小的变动(比如取关会让后面的人往前一位),这就导致了有极少数粉丝被漏掉了。在此,我对大家道歉所有粉丝头像第一张图是动图,第二张图是一个\(1600\times1800\)的图片第一张图片加载可能比较慢封禁用户不在图片......
  • [题解] CF474E Pillars
    题意给定长度为\(n\)的序列\(a\)和常数\(d\),输出一个最长的\(a\)的子序列,使得相邻两项的差的绝对值大于等于\(d\)。\(n\le10^5\)题解数据结构优化DP的板子题了吧。首先,这道题看上去就很LIS,我们尝试着用类似LIS的思路去做。设\(f_i\)表示以\(i\)结尾的符合......
  • 题解 accoders::NOI 5510【飞翔的胖鸟(fly)】
    题解accoders::NOI5510【飞翔的胖鸟(fly)】problem求\(f(x)=\frac{ah}{\sin(x)}+bx\)在\((0,\frac\pi2]\)上的最小值。solution\(\sin'(x)=cos(x);\cos'(x)=-\sin(x)\)。\((f(x)\cdotg(x))'=f'(x)g(x)+f(x)g'(x)\)。\(\left(\dfrac{f......
  • 题解 accoders::NOI 5508【漂亮大厨(cook)】
    题解accoders::NOI5508【漂亮大厨(cook)】part1区间加\(x\),区间询问有多少个数字\(\leqy\)。\(n,m\leq10^5,x\leq200,y\leq10^7\)。考虑P5356[Ynoi2017]由乃打扑克的做法,分块,块内按照值排序。修改就整块打tag,散块暴力重构(可以归并排序重构);询问在整块上二分,散块暴力......
  • P9019 [USACO23JAN] Tractor Paths P 题解
    Description有\(n\)个区间,第\(i\)个区间为\([l_i,r_i]\)。保证\(l_1<l_2<\cdots<l_n\)且\(r_1<r_2<\cdots<r_n\)。其中一部分区间是特殊的,输入会给定。如果第\(i\)个区间和第\(j\)个区间相交,那么\(i,j\)之间有一条边。保证\(1,n\)联通。给定\(Q\)组询问,每次......
  • 题解 P9701【[GDCPC2023] Classic Problem】
    题如其名,确实挺经典的。我们称边权在输入中给定的边为特殊边,其它边为平凡边。称特殊边涉及到的点为特殊点,其它点为平凡点。显然,对于连续的若干平凡点\([l,r]\),他们内部的最优连边方式就是连成一条链,花费\(r-l\)的代价。我们先把这样的代价加到答案中,然后将极长连续平凡点缩成......
  • [SHOI2009] 会场预约 题解
    LG任意时刻每个点最多被一条线段覆盖暴力删每条线段是对的插入\([l,r]\)时需要删除的线段要么被\([l,r]\)包含,要么覆盖\(l\)或\(r\)性质非常强所以做法非常多一种比较神奇的:对于两条线段\([l_{1},r_{1}],[l_{2},r_{2}]\),定义<为\(r_{1}<l_{2}\),即线段\(1\)完......
  • 题解 accoders::NOI 5511【漂亮轰炸(bomb)】
    题解accoders::NOI5511【漂亮轰炸(bomb)】http://47.92.197.167:5283/contest/406/problem/4BZOJ3252是弱化版。problem一棵树,边带权。\(Q\)次询问,给定\(k\)和一个首都点,选择\(k\)条路径轰炸,其中必须由一轮要轰炸首都,但没有要求每条路径都经过首都。每条边只能被炸一次,......
  • 题解 P9695【[GDCPC2023] Traveling in Cells】
    显然,询问的答案即为\(x\)所在的极长的满足颜色均在\(\mathbb{A}\)内的连续段的权值和。如果我们能维护对颜色的单点修改,以及求出某个位置所在极长连续段的左右端点\(l,r\),只需要树状数组即可求出答案。一个朴素的想法是对每种颜色开一棵线段树,单点修改是平凡的,极长连续段左......