首页 > 其他分享 >2024/9/16 CSP-S模拟赛试题

2024/9/16 CSP-S模拟赛试题

时间:2024-10-13 23:22:57浏览次数:1  
标签:离散 const 16 int long 2024 return 考虑 CSP

A

这题是很有意思的一个题,思路就是你考虑kt的位置只可能在四个角,因为这种情况下,他的距离才会最远对吧,所以你就暴力找另一个人fengwu的点的位置,然后计算他们之间的距离然后你求一个\(\max\)即可,然后记录一下这些\(\max\)的值,最后排个序就好了。
代码:

# include <bits/stdc++.h>
using namespace std;
#define int long long
const int N = 5010;
int a[N*N];
int dis(int a,int b,int c,int d)
{
	return abs(a-b)+abs(c-d);
}
signed main (){
	int n,m;
	scanf("%lld%lld",&n,&m);
	int tot = 0;
	for(int i = 1;i <= n;i++)
	{
		for(int j = 1;j <= m;j++)
		{
			// int x = (i-1)*(j-1);
			// cout << x << endl;
			int mx = max(dis(1,i,1,j),max(dis(1,i,m,j),max(dis(n,i,1,j),dis(n,i,m,j))));
			a[++tot] = mx;
		}
	}
	sort(a+1,a+tot+1);
	for(int i = 1;i <= tot;i++)
	{
		printf("%lld ",a[i]);
	}
	return 0;
}

有可能会问,你如何考虑\(k\)这个东西呢,你考虑,我排序的过程就是对\(k\)个进行筛选,筛选过后的结果不会对最大值的最小值产生影响,所以不需要考虑k。

B

好题,这是一个很好很好的题。

\(10pts\):

显然,对于\(10pts\),这可以直接爆搜全排列,然后暴力计数值。,代码:

# include <bits/stdc++.h>
using namespace std;
#define int long long 
const int N = 5010;
const int mod = 998244353;
int s[N],p[N],vis[N];
int jc[N];
int n;
int f(int n,int p[],int s[])
{
    int ret=p[1];
    for(int i=2;i<=n;i++)
    {
        if(s[i-1]==1)ret=max(ret,p[i]);
        else ret=min(ret,p[i]);
	}
    return ret;
}
int ans = 0;
void dfs(int dep)
{
	if(dep == n+1)
	{
		for(int i = 1;i <= n;i++)
		{
			// cout << p[i] << " ";
		}
		// if(p[n] == 3) tot++;
		// cout << endl;
		ans += f(n,p,s);
		ans %= mod;   
		return ;
	}
	for(int i = 1;i <= n;i++)
	{
		if(!vis[i])
		{
			vis[i] = 1;
			p[dep] = i;
			dfs(dep+1);
			vis[i] = 0;
		}
	}
} 
int qpow(int a,int b)
{
	int ans = 1;
	while(b != 0)
	{
		if(b & 1)
		{
			ans = ans*a%mod;
		}
		a = a*a%mod;
		b >>= 1;
	}
	return ans%mod;
}
int ny(int n)
{
	return qpow(n,mod-2);
}
signed main (){
	scanf("%lld",&n);
	for(int i = 1;i <= n-1;i++) 
	{
		scanf("%lld",&s[i]);
	}
	jc[0] = 1;
	for(int i = 1;i <= n;i++)
	{
		jc[i] = jc[i-1]*i%mod;
	}
	int flag = 0;
	for(int i = 2;i <= n-1;i++)
	{
		if(s[i] < s[i-1])
		{
			flag = 1;
			break;
		}
	}
	int cnt = 0;
	if(flag == 0)
	{
		for(int i = 1;i <= n-1;i++)
		{
			if(s[i] == 1) cnt++;
		}
	}
	if(n <= 10)
	{
		dfs(1);
		// cout << tot << endl;
		printf("%lld\n",ans%mod);
	} 
	else
	{
		if(flag == 0)
		{
			int res = 0;
			if(cnt == 1)
			{
				res = jc[n-1]*(ny(2)*((n*(n+1)%mod+2)%mod)%mod)%mod;
			}
			printf("%lld\n",res);
		}
	}
	return 0;
}

\(100pts:\)

你考虑转化问题,你考虑算出他的答案,然后呢你去计算这个数列会产生这个答案的排列方式是多少,最后他对答案产生的贡献就是排列方式\(\times\)答案。

那么你考虑如何计算这个这个排列方式,我们对于每个数都去动态计算这个数列离散化过后的值,什么意思呢,看下面这一组例子:

\[5\; \;\;1 \:\;\;4 \:\;\;2 \:\;\;3 \]

一开始放入一个\(5\),离散化之后的数列是这样的:

\[1 \]

接下来放入\(1\),离散化之后是

\[2 \; \;\;\;1 \]

接下来放入\(4\),\(4\)比\(1\)大,比\(5\)小,所以他是第二小的,离散化后是:

\[3 \; \; \; 1 \; \; \; 2 \]

........

最后的结果就是:

\[5 \;\;\; 1 \;\;\; 4 \;\;\; 2 \;\;\; 3 \]

你考虑这个跟之前没变的是一样的。
那么我们考虑逐位计算,用\(dp\)去转移。
设定\(dp_{i,j}\)表示表示前\(i\)位,插入这个数字过后得到的答案,显然得到以下转移方程:

\[ dp_{i,j} = \begin{cases} \sum \end{cases} \]

标签:离散,const,16,int,long,2024,return,考虑,CSP
From: https://www.cnblogs.com/grz0306/p/18416648

相关文章

  • ChatGPT官网中文版镜像网站整理(2024/10/13)
    一、什么是ChatGPT?ChatGPT是由OpenAI开发的一种基于GPT(GenerativePretrainedTransformer)模型的人工智能对话系统。它使用了深度学习技术中的一种叫做Transformer的架构,通过对大量文本数据进行预训练和微调,能够理解并生成自然语言。二、GPT工具跟国内AI大模型整理(一......
  • # 学期(如2024-2025-1) 学号(如:20241402) 《计算机基础与程序设计》第2、3周学习总结
    学期(如2024-2025-1)学号(如:20241402)《计算机基础与程序设计》第2、3周学习总结作业信息这个作业属于哪个课程<班级的链接>(如2024-2025-1-计算机基础与程序设计)这个作业要求在哪里<作业要求的链接>(如2024-2025-1计算机基础与程序设计第一周作业)这个作业的目标<写......
  • 软件著作权申请教程(超详细)(2024新版)软著申请
               目录一、注册账号与实名登记二、材料准备三、申请步骤1.办理身份2.软件申请信息3.软件开发信息4.软件功能与特点5.填报完成一、注册账号与实名登记    首先我们需要在官网里面注册一个账号,并且完成实名认证,一般是注册【个人】的身份......
  • 学期2024-2025-1 学号20241424 《计算机基础与程序设计》第4周学习总结
    学期2024-2025-1学号20241424《计算机基础与程序设计》第4周学习总结作业信息|这个作业属于(2024-2025-1-计算机基础与程序设计)||-- |-- ||这个作业要求在(2024-2025-1计算机基础与程序设计第四周作业||这个作业的目标|<写上具体方面>参考上面的学习总结模板,把学习过程通过......
  • 024-2025 20241323第三周总结
    这个作业属于https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP这个作业要求https://www.cnblogs.com/rocedu/p/9577842.html#WEEK03• 门电路• 组合电路,逻辑电路• 冯诺依曼结构• CPU,内存,IO管理• 嵌入式系统,并行结构• 物理安全作业正文https://www.cnblogs.com......
  • 2024-2025-1 202421310 《计算机基础与程序设计》第3周学习总结
    学期(如2024-2025-1)学号(如:20241300)《计算机基础与程序设计》第X周学习总结作业信息|这个作业属于哪个课程|https://www.cnblogs.com/rocedu/p/9577842.html|这个作业要求在哪里|https://www.cnblogs.com/rocedu/p/9577842.html#WEEK03|这个作业的目标|数字分类与计数法位......
  • 2024-2025-1 20241329 《计算机基础与程序设计》第三周学习总结
    作业信息作业归属课程:https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP作业要求:https://www.cnblogs.com/rocedu/p/9577842.html#WEEK03作业目标:数字分类与计数法、位置计数法、进制转换、模拟数据与数字数据、压缩与解压、数字化、信息安全作业正文:https://www.cnblo......
  • 2024年软件设计师中级(软考中级)详细笔记【5】软件工程基础知识下(分值10+)
    第5章软件工程目录前言第5章软件工程基础知识(下)5.5系统测试5.5.1系统测试与调试5.5.2传统软件的测试策略5.5.5测试方法5.5.5.1黑盒测试5.5.5.2白盒测试白盒测试+McCabe度量法伪代码+白盒测试+McCabe5.6运行和维护知识【以背为主】5.6.2系统维护概述5.6.2.1......
  • 0xGame2024-week1-crypto
    CryptoCaesarCipher密文:0yHbnf{Uif_Cfhjoojoh_Pg_Dszqup}提示:凯撒加密。改成-1就好了RSA_EasyfromCrypto.Util.numberimportbytes_to_long,getPrimefromhashlibimportmd5fromrandomimportrandintfromgmpy2importinvert,gcd#HashFunction:defMD5(m......
  • 2024.10.13 速度奇慢
    我就知道不能睡觉,以后要求自己,天天趴着入睡,那可是完全不能入睡的节奏。几乎只有浅睡眠。 这就是我对自己的要求,天天坐着睡觉,我觉得对健康很不利,但是,你醒着不能干活,那再不健康也得执行。 要求自己必须每天早上6点,无论缘由。 最后,我说一下相关性要不要考虑。类似于【近朱......