首页 > 其他分享 >[题解]ARC176 A~B

[题解]ARC176 A~B

时间:2024-04-23 23:33:05浏览次数:31  
标签:int 题解 ARC176 cin -- 编号 mod

赛时心态崩了,0pts遗憾离场……今天在学校冷静思考了下。发现B题思路其实很简单,不过A题怎么也没有想到,回来看了题解,其实思路也很简单,不过是自己思考方向错了。看来打比赛心态很重要,如果能冷静下来思考结果会好很多。
果然算法竞赛不能被常理所束缚(笑)

A - 01 Matrix Again

行列从\(0\)开始,以\((i+j)\ mod\ n\)的值给每个格子编号,就像这样:
image
我们发现任选其中\(m\)种编号的位置填上\(1\),得到的矩阵一定满足条件。那么具体在哪些编号上填\(1\)呢?

  • 首先,输入给定的格子所在的编号一定要填。
  • 其次,只按照第\(1\)条,可能凑不够\(m\)种,这种情况,就要在输入给定的格子编号中任意挑选若干个,能凑成\(m\)种编号就行。

赛后一直思考这道题没有头绪是因为我的方向错了。当时我一直纠结于行和列的规律,却没有想到斜向考虑会如此简单。

点击查看代码
#include<bits/stdc++.h>
using namespace std;
int n,m;
int main(){
	cin>>n>>m;
	vector<bool> vis(n);
	for(int i=1;i<=m;i++){
		int x,y;
		cin>>x>>y;
		x--,y--;
		vis[(x+y)%n]=1;
	}
	vector<int> ans;
	for(int i=0;i<n;i++) if(vis[i]) ans.push_back(i);
	for(int i=0;i<n;i++) if(!vis[i]&&ans.size()<m) ans.push_back(i);
	cout<<n*m<<endl;
	for(int i=0;i<n;i++){
		for(int j=0;j<m;j++){
			int x=i,y=(ans[j]-i+n)%n;
			cout<<x+1<<" "<<y+1<<endl;
		}
	}
	return 0;
}

B - Simple Math 4

显然的结论:
\(2^N\ mod\ (2^M-2^K)=2^{N-M+K}\ mod\ (2^M-2^K)\)。

所以循环直到\(N<M\)即可。这一步骤可以通过除法在\(O(1)\)的时间复杂度下解决。

接下来答案就是\(2^N\ mod\ 10\),根据\(N\ mod\ 4\)的结果有\(4\)种答案:\(2,4,8,6\),同样是\(O(1)\)。
但是需要注意的是得特判一种情况:n==m-1&&m-k==1。这意味着原式等于\(2^N\ mod\ 2^{M-1}\)。而\(N=M-1\),所以这种情况需要输出\(0\)。

点击查看代码
#include<bits/stdc++.h>
#define int long long
using namespace std;
int t,n,m,k;
int mo[4]={6,2,4,8};
signed main(){
	cin>>t;
	while(t--){
		cin>>n>>m>>k;
		if(n>=m) n-=((n-m)/(m-k)+1)*(m-k);
		if(m-k==1&&n==m-1) cout<<"0\n";
		else cout<<mo[n%4]<<"\n";
	}
	return 0;
}

标签:int,题解,ARC176,cin,--,编号,mod
From: https://www.cnblogs.com/Sinktank/p/18154092

相关文章

  • 题解 UOJ577【[ULR #1] 打击复读】
    题解UOJ577【[ULR#1]打击复读referencehttps://www.cnblogs.com/crashed/p/17382894.htmlhttps://www.cnblogs.com/sizeof127/articles/17579027.html字符串——黄建恒,广东实验中学题目描述为了提升搜索引擎的关键词匹配度以加大访问量,某些网站可能在网页中无意义复读大......
  • 编译用于Qt的opencv问题解决
    CMakewasunabletofindabuildprogramcorrespondingto"MinGWMakefiles"解释:这个错误表明CMake无法找到用于生成Makefiles的构建程序。在使用CMake生成项目文件时,如果指定了"MinGWMakefiles",CMake需要一个Make工具来构建项目,而这个工具通常是由MinGW提供的。如......
  • macOS配置Clion用于STM32开发找不到stdint.h等头文件问题解决方案
    问题编译工程时发现出现大量类似错误如下/opt/homebrew/Cellar/arm-none-eabi-gcc/13.2.0/lib/gcc/arm-none-eabi/13.2.0/include/stdint.h:9:16:fatalerror:stdint.h:Nosuchfileordirectory问题原因不能使用brewinstallarm-none-eabi-gcc安装编译工具链[1]解决方......
  • 「洛谷」题解:P1720 月落乌啼算钱(斐波那契数列)
    题目传送门比较经典的一道斐波那契数列的模版题,原题中给了一个很复杂的公式(也就是下面这个),但是实际上题目跟它毛关系没有……(所以放这个公式干什么)\[F_n=\dfrac{\left(\frac{1+\sqrt{5}}{2}\right)^n-\left(\frac{1-\sqrt{5}}{2}\right)^n}{\sqrt{5}}\]看见题解去了有很多人都......
  • AtCoder Beginner Contest 350 A - G 题解
    AtCoderBeginnerContest350A-PastABCsSolution把最后三个字符转成数字判断即可Code#include<bits/stdc++.h>usingnamespacestd;intmain(){strings;cin>>s;s=s.substr(3,3);intx=0;x=(s[0]-'0')*100+(s[1]-�......
  • ABC350C 题解
    怎么赛时连这道都不会了/ll注意到输入是个排列,这意味着我们可以直接确定每个元素应在的位置。考虑维护每个数当前所在的位置\(\{p\}\)。对于任意\(i\in[1,n]\),我们访问\(p_i\),如果该位置不为第\(i\)位便对排列中第\(i\)位的数\(j\)和\(i\)进行“交换”操作。“......
  • P1763 埃及分数 题解
    题目传送门【-1】前言这题的剪枝真的太妙了,很难想象巨佬是怎么独立想出来这所有的剪枝的。本题解没有包含所有的剪枝,只选了我认为最好理解的几条剪枝。想学习所有的剪枝的右转巨佬的题解。【1】本题大框架:迭代加深搜索(IDDFS)看到\(1<a<b<1000\),可以猜测分数的个数不会......
  • initialize方法重定向无限循环问题解决方案
    由于在initialize方法中进行重定向而造成的重定向循环。当session('?user_id')检查失败时,你的代码会尝试重定向到登录页面。如果登录页面或者处理登录的控制器也继承自同一个基类(或者有类似的initialize检查),这将导致每次尝试访问登录页面时都会再次执行重定向,从而陷入无限循......
  • helpdesk桌面运维常见问题解决
    helpdesk是一套帮助IT团队管理IT工单生命周期、自动化日常工作、优化工作流程的软件或软件集合,它可以帮助IT团队提高生产力、降低成本、改善服务水平和客户体验。 在现代企业中,helpdesk桌面运维是一项至关重要的工作,helpdesk团队负责处理员工或客户在日常工作中遇到的各种技术......
  • 题解 CF1743F【Intersection and Union】
    postedon2022-10-2119:23:54|under题解|sourceproblem给定\(n\)个集合\(S_i\),以\(l_i,r_i\)的形式给出,集合的元素就是\(\{x|x\in[l_i,r_i]\cap\mathbb{N}\}\)。有三种集合间的二元运算,分别是交(\(\cap\))、并(\(\cup\))、对称差(\(\oplus\))。其中对称差(\(A\oplusB......