首页 > 其他分享 >2023.10.13测试

2023.10.13测试

时间:2023-10-13 15:15:25浏览次数:41  
标签:13 return int res bmod 2023.10 测试 rm

\[\text{NOIP模拟赛-2023.10.13} \]

(牛客场)

T1 矩阵交换

一个 \(n\times m\) 的矩阵 \(A\),\(A_{i,j}\in\{1,2,3\}\)。每次可以任意交换两行,问能否使每列单调不降

\(T,n\leq 100\)

签到题,写了 \(1.5\rm h\),纯唐

code
#include<bits/stdc++.h>
#define pii pair<int,int>
using namespace std;

const int N=110;

int T,n,m,a[N][N],cnt;
struct node{int id,val;}ans[N];
vector <pii> pos;
pii tmp[N];

void init()
{
	memset(a,0,sizeof(a));
	int len=pos.size();
	for(int i=0; i<len; i++)
		pos.pop_back();
}

void mian()
{
	init();
	
	scanf("%d%d",&n,&m);
	for(int i=1; i<=n; i++)
	{
		ans[i].id=i;
		for(int j=1; j<=m; j++)
			scanf("%d",&a[i][j]);
	}
	
	pos.push_back({1,n});
	for(int i=1; i<=m; i++)
	{
		for(int j=1; j<=n; j++)
			ans[j].val=a[ans[j].id][i];
			
		cnt=0;
		for(auto v:pos)
		{
			sort(ans+v.first,ans+v.second+1,[](node x,node y){return x.val<y.val;});
			int l=v.first,r=v.first;
			for(int j=v.first+1; j<=v.second; j++)
			{
				r++;
				if(a[ans[j].id][i]!=a[ans[j-1].id][i])
					tmp[++cnt]={l,r-1},l=r;	
			}
			tmp[++cnt]={l,r};
		}
		
		int len=pos.size();
		for(int j=0; j<len; j++)
			pos.pop_back();
		for(int j=1; j<=cnt; j++)
			pos.push_back(tmp[j]);
	} 
	
	for(int i=1; i<=m; i++)
	{
		for(int j=2; j<=n; j++)
		{
			if(a[ans[j].id][i]<a[ans[j-1].id][i])
			{
				printf("NO\n");
				return;
			}
		}
	}
	printf("YES\n");
}

int main()
{
	freopen("a.in","r",stdin);
	freopen("a.out","w",stdout);
	
	scanf("%d",&T);
	while(T--)
		mian(); 

	return 0;
}

T2 砖块摆放

原题??[ARC117C] Tricolor Pyramid

好题

这个操作很难直接做,所以考虑将操作转化成一些数字上的操作

一个牛逼的转化是令 \(A,B,C\) 分别等于 \(0,1,2\),每次操作即 \(2(x+y)\bmod 3\)

而我在考场上贺了 SError 的做法,令 \(A,B,C\) 分别等于 \(1,2,4\),每次操作即求 \((xy)^{-1}\pmod 7\)

然后通过枚举与打表可以发现,对于第 \(i\) 个砖块来说,对顶上的贡献即 \(a_i^{\binom{n-1}{i-1}}\) 如果 \(n\) 是偶数的话还要再求一次逆元

记 \(x=\dbinom{n-1}{i-1}\),因为 \(x\) 很大,所以欧拉降幂得 \(a_i^{x\bmod \varphi(7)}=a_i^{x\bmod 6}\)。所以即求 \(\dbinom{n-1}{i-1} \bmod 6\)。由于 \(6\) 不是质数,所以不能直接用 \(\rm Lucas\) 定理,但是我们可以先对 \(2\) 和 \(3\) 用 \(\rm Lucas\) 定理,再用中国剩余定理求出来

代码不难写

code
#include<bits/stdc++.h>
#define LL long long
using namespace std;

const int N=2e5+10,MOD=7;

int T,n,a[N];
char s[N];
int c[5][5];

int ksm(int x,int y)
{
	int res=1;
	while(y)
	{
		if(y&1)
			res=1LL*res*x%MOD;
		x=1LL*x*x%MOD;
		y>>=1;
	}
	return res;
}

void prework()
{
	c[0][0]=1;
	c[1][0]=c[1][1]=1;
	c[2][0]=1;  c[2][1]=2;  c[2][2]=1;
	c[3][0]=1;  c[3][1]=c[3][2]=3;  c[3][3]=1;
}

int C(int x,int y,int p)
{
	return c[x][y];
}

int lucas(int x,int y,int p)
{
	if(y==0)
		return 1;
	if(x<p && y<p)
		return C(x%p,y%p,p);
	return 1LL*C(x%p,y%p,p)*lucas(x/p,y/p,p)%p;
}

int crt(int a1,int a2)
{
	int m=6,m1=2,m2=3;
	int M1=3,M2=2;
	int t1=ksm(M1,m1-2),t2=ksm(M2,m2-2);
	int ans=1LL*(1LL*a1*M1%m*t1%m+1LL*a2*M2%m*t2%m)%m;
	return ans;
}

void mian()
{
	scanf("%d%s",&n,s+1);
	for(int i=1; i<=n; i++)
	{
		if(s[i]=='A')
			a[i]=1;
		else if(s[i]=='B')
			a[i]=2;
		else
			a[i]=4;
	}
	
	int ans=1; 
	for(int i=1; i<=n; i++)
	{
		int ind1=lucas(n-1,i-1,2),ind2=lucas(n-1,i-1,3),res=1;
		int ind=crt(ind1,ind2);
		res=ksm(a[i],ind);
		if(n%2==0)
			res=ksm(res,MOD-2);	
		
		ans=1LL*ans*res%MOD;
	}
	
	if(ans==1)
		puts("A");
	else if(ans==2)
		puts("B");
	else 
		puts("C");
}

int main()
{
	freopen("b.in","r",stdin);
	freopen("b.out","w",stdout);
	
	prework();
	
	scanf("%d",&T);
	while(T--)
		mian();

	return 0;
}

标签:13,return,int,res,bmod,2023.10,测试,rm
From: https://www.cnblogs.com/xishanmeigao/p/17762124.html

相关文章

  • 2023年石门中学NOIP模拟测试(2023.10.13)
    再次被打爆...T1sb题,写个\(\text{vector}\)排序还挂了,服了。T2oh,我会推柿子。oh,我不会\(\text{Lucas}\)......
  • 《最新出炉》系列初窥篇-Python+Playwright自动化测试-20-处理鼠标拖拽-下篇
    1.简介上一篇中,宏哥说的宏哥在最后提到网站的反爬虫机制,那么宏哥在自己本地做一个网页,没有那个反爬虫的机制,谷歌浏览器是不是就可以验证成功了,宏哥就想验证一下自己想法,其次有人私信宏哥说是有那种类似拼图的验证码如何处理。于是写了这一篇文章,另外也是相对前边做一个简单的总结......
  • 渗透测试高级技巧(二):对抗前端动态密钥与非对称加密防护
    在前文的技术分享中,我们描述了验签和静态对称加密(静态密钥AES)的常见场景,大家我相信遇到类似的加解密清醒,基本都可以通过热加载的基本使用获得破解前端加密解密的方法,达到一个比较好的测试状态。在本文中,我们在保持同样的通用适配度的同时,将会来接触更加复杂的前端加密与解密场......
  • 1553B总线测试仪
    1553B总线测试仪-天津光达航电科技有限公司在测试模拟1553B总线的标准化测试仪器,该仪器是通过简单直观的管理工具实现复杂的MIL-STD-1553的测试及模拟功能,主要包括对MIL-STD-1553B总线的在线仿真测试实时显示、数据分析、数据存盘、数据回放等功能,满足了设备检测和故障定位的需要,......
  • 升级Lync Server 2013到Skype for Business 2019(九)
    写在前面本章将介绍SkypeforBusiness2019OfficeOnlineServer(OOS)服务器的安装配置工作。OfficeOnlineServer安装安装必备软件以管理员身份打开MicrosoftPowerShell提示符,然后运行此命令示例来安装必需的角色和服务。Add-WindowsFeatureWeb-Server,Web-Mgmt-Tools,We......
  • Flink测试利器之DataGen初探
    什么是FlinksqlFlinkSQL是基于ApacheCalcite的SQL解析器和优化器构建的,支持ANSISQL标准,允许使用标准的SQL语句来处理流式和批处理数据。通过FlinkSQL,可以以声明式的方式描述数据处理逻辑,而无需编写显式的代码。使用FlinkSQL,可以执行各种数据操作,如过滤、聚合、连......
  • 测试过程效率的提升和演变
    昨天看到这样一个很有意思的问题:一个月发布一个版本,核心需求经常变更,导致影响范围大不好评估,但对交付质量的要求比较高。单元测试、自动化测试才开始建设,为了保障质量只能投入大量资源做回归测试验证,但每个版本留给测试的时间又不够充足。这种尴尬的阶段,该如何保障产品质量?......
  • 转载 https://www.cnblogs.com/star521/p/13385181.html --PGSQL-脏数据清理,频繁de
    查看表大小--查出所有表(包含索引)并排序--查出所有表(包含索引)并排序SELECTtable_schema,table_nameAStable_full_name,pg_size_pretty(pg_total_relation_size('"'||table_schema||'"."'||table_name||'"'))ASsizeFROMinfor......
  • [转载]jmeter - 如何在指定数量的线程失败后停止 Jmeter 测试
     原地址https://www.coder.work/article/7090277  我有一个事务Controller,它在我的Jmeter测试计划中有一个http请求。交易名称和url来自CSV文件。最后,总执行分为5个不同的事务。测试计划:测试计划-线程组-用户定义的变量总样本执行量为8000-10000。现在......
  • 10.13每日总结
    今天完成了大数据的测试以下是相关代码,代码没有最后的可视化展示代码作者万事胜意k的主页-博客园(cnblogs.com)##数据库**创建数据库**```sqlcreatedatabasejournal;```**切换到数据库**```sqlusejournal```**建立初始表**```sql--建立初始表createtabledata(`ip......