2024/9/16 CSP-S模拟赛试题
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\),\(4\)比\(1\)大,比\(5\)小,所以他是第二小的,离散化后是:
\]
........
最后的结果就是:
\]
你考虑这个跟之前没变的是一样的。
那么我们考虑逐位计算,用\(dp\)去转移。
设定\(dp_{i,j}\)表示表示前\(i\)位,插入这个数字过后得到的答案,显然得到以下转移方程:
dp_{i,j} =
\begin{cases}
\sum
\end{cases}
\]
2024/9/16 CSP-S模拟赛试题的更多相关文章
- 16.1117 NOIP 模拟赛
水灾(sliker.cpp/c/pas) 1000MS 64MB 大雨应经下了几天雨,却还是没有停的样子.土豪CCY刚从外地赚完1e元回来,知道不久除了自己别墅,其他的地方都将会被洪水淹没. CCY ...
- 10.16 NOIP模拟赛
目录 2018.10.16 NOIP模拟赛 A 购物shop B 期望exp(DP 期望 按位计算) C 魔法迷宫maze(状压 暴力) 考试代码 C 2018.10.16 NOIP模拟赛 时间:2h ...
- [NOIP2018模拟赛10.16]手残报告
[NOIP2018模拟赛10.16]手残报告 闲扯 炉石乱斗模式美滋滋啊,又颓到好晚... 上来T2先敲了树剖,看T1发现是个思博DP,然后没过大样例,写个暴力发现还是没过大样例!?才发现理解错题意了 ...
- 2017.1.16【初中部 】普及组模拟赛C组总结
2017.1.16[初中部 ]普及组模拟赛C组 这次总结我赶时间,不写这么详细了. 话说这次比赛,我虽然翻了个大车,但一天之内AK,我感到很高兴 比赛 0+15+0+100=115 改题 AK 一.c ...
- @省选模拟赛03/16 - T3@ 超级树
目录 @description@ @solution@ @accepted code@ @details@ @description@ 一棵 k-超级树(k-SuperTree) 可按如下方法得到:取 ...
- 2019.3.16 noiac的原题模拟赛
RT,这太谔谔了,我不承认这是模拟赛 但是虽然是搬了三道题,题目本身也还能看,就这么着吧 (怎么机房里就我一道原题都没做过啊 T1 CF24D Broken Robot 比较简单地列出式子之后,我们发 ...
- 2018.10.16 NOIP模拟赛解题报告
心路历程 预计得分:\(100 + 100 + 20 = 220\) 实际得分:\(100 + 100 + 30 = 230\) 辣鸡模拟赛.. T1T2都是一眼题,T3考验卡常数还只有一档暴力分. ...
- CSP模拟赛游记
时间:2019.10.5 考试时间:100分钟(连正式考试时间的一半还没有到)题目:由于某些原因不能公开. 由于第一次接触NOIinux系统所以连怎么建文件夹,调字体,如何编译都不知道,考试的前半小时 ...
- contesthunter暑假NOIP模拟赛第一场题解
contesthunter暑假NOIP模拟赛#1题解: 第一题:杯具大派送 水题.枚举A,B的公约数即可. #include <algorithm> #include <cmath& ...
- 2014.7.8模拟赛【笨笨当粉刷匠】|bzoj1296 [SCOI]粉刷匠
笨笨太好玩了,农田荒芜了,彩奖用光了,笨笨只好到处找工作,笨笨找到了一份粉刷匠的工作.笨笨有n条木板需要被粉刷.每条木板被分成m个格子,每个格子要被刷成红色或蓝色.笨笨每次粉刷,只能选择一条木板上一段 ...
随机推荐
- SenseCraft 部署模型到Grove Vision AI V2图像处理模块
Grove Vision AI V2 图像处理模块开箱测评 摘要 今天教大家快速上手 Grove Vision AI V2 图像处理模块,我们将一起探讨如何利用 SenseCraft 部署 AI 模型 ...
- 你要了解的2种AI思维链
我们使用的AI助手,一般是经过了预训练和微调这2个步骤,尽管训练出的模型能回答许多通用类问题,但是在遇到复杂问题时还是束手无策. 直到有人提出了思维链方式,才解决了模型在面对复杂问题时的推理能力. 1 ...
- Linux驱动| Linux内核 RTC时间架构
上一篇文章我们给大家讲解了基于瑞芯微rk3568平台芯片hym8563驱动的移植,本文给大家详细讲解Linux内核的时间子系统. <Linux驱动|rtc-hym8563移植笔记> 一.L ...
- 全网最适合入门的面向对象编程教程:39 Python常用复合数据类型-集合
全网最适合入门的面向对象编程教程:39 Python 常用复合数据类型-集合 摘要: 在 Python 中,集合(set)是一种常用的复合数据类型.集合是一组无序且不重复的元素.与列表和元组不同,集合 ...
- ELK快速部署(踩坑记录、常见报错解决)及常用架构讲解
ELK = Elasticserach + Logstash + kibana(包含但不仅限于) 简介: Elasticsearch:分布式搜索和分析引擎,具有高可伸缩.高可靠和易管理等特点.基于 A ...
- docker系列教程:docker图形化工具安装及docker系列教程总结
通过前面的学习,我们已经掌握了docker-compose容器编排及实战了.高级篇也算快完了.有没有相关,我们前面学习的时候,都是通过命令行来操作docker的,难道docker就没有图形化工具吗?答 ...
- 【面试题】Java中子类和父类静态代码块、非静态代码块、构造函数的执行顺序总结一览表
在面试的时候,有时候我们会被问到这样的问题:子类A继承父类B,A a = new A();则父类B的构造函数.父类B静态代码块.父类B非静态代码块.子类A构造函数.子类A静态代码块.子类A非静态代码块 ...
- 阿里云 ACK Pod重启:pod was OOM killed
原因为:limits和requests的值设定为一样的了, pod request达到了limit限制,kubelet会统计到request+缓存就超限,然后触发自动重启 resources: lim ...
- 小tips:HTML元素属性分类以及不常用属性介绍
HTML元素属性分类 全局属性和局部属性 属性可以分为两类:全局属性和局部属性. 其中全部元素都能使用的通用属性称为全局属性.只能运用在某些特定元素的属性,称为局部属性,例如form的action属性 ...
- JAVA与.NET DES加密解密
项目需要在两个系统间采用DES加密,一个系统为JAVA开发的,另外一个.Net开发的 在网上找了很多写法但加密出的数据两个系统都无法匹配, 在做了小修改以后终于可以用了,已经测试过 JAVA版本 im ...