CSP-J模拟赛(1)补题报告

news2024/12/21 23:44:13

前言:

    1.交替出场(alter) :10

     2.翻翻转转(filp):0

    3.方格取数(square):0

    4.圆圆中的方方(round):0

   总结一下:  第一次考,没爆零就是胜利,下次注意一些小错误,争取AC第一题。目标50,先立个flag(本人菜的离谱)

1.交替出场

题意:

给你一个只包含01的字符串,求这个字符串中所有01交替字串的个数(单个字符也算)

考试回顾:

想出O(n^3)的暴力枚举,但没敢用,写了个半对不对的dp,得了10分。最后老师讲O(n^3)也能过(破防),总体花的时间太长了,没达到AC。

题解:

   用dp枚举左端点,一位一位向右拓展。右端点最终是几,就有几个以ta结尾的子串。最后累加即可。

AC: 

const int N = 1010;
int n, ans;
char s[N];
void main() {
scanf("%s", s + 1), n = strlen(s + 1);
for (int i = 1; i <= n; i++) {
ans++;
for(j, i + 1, n) if (s[j] + s[j - 1] == '0' + '1') ans++;
else break;
}
write(ans);
}

 2.翻翻转转

题意:

子串si是si-1逐位取反后拼接在si-1之后的子串,现在s1为1,求s14514的第x个字符是什么。

考试回顾:

使用递归暴力,最后时间超限。(这我除了暴力想不出其他方法来了)

题解:

序列的构成非常有规律,前一半和后一半是互反的,可以考虑分治:如果答案处在前半段,继续递归下去,如果答案处在后半段,通过递归上来的答案取反后再上传即可。

AC:

#include<iostream>
#include<iomanip>
#include<cmath> 
#include<string>
#include<algorithm> 
#include<cstdio>
#include<queue>
#include<map>
#include<stack>
using namespace std;
int T,n;
int solve(int L,int R,int p){
    if(L==R) return p;
    int mid=L+R>>1;
    if(n<=mid) return solve(L,mid,p);
    return solve(mid+1,R,p^1);//取反
}
int main(){
    scanf("%d",&T);
    while(T--){
        scanf("%d",&n);
        printf("%d\n",solve(1,1<<30,1));
    }
	return 0;
}

 3.方格取数

题意:

你从(1,1)出发,目标是(n,m),只能向右或向下走,走过一个格子累加那个格子里的数,但不能一次性往一个方向走大于等于k步(矩阵里不能有超过k个连续的格子),求累加的最大值。如果无解输出"No Answer!"。

考试回顾:

当时没想到dp,做了个矩阵dfs,没写完。(无解的特判输出能得30!悔不当初啊)

题解:

dp,搜索记忆化。求的是走过点的权值和,考虑限制,在状态转移时,需要有:当前坐标、 步数限制、走的方向。如果走到不同方向,那么 步限制清空(注意,这里要赋值为2)然后走到新点。
AC:

#include<iostream>
#include<iomanip>
#include<cmath> 
#include<string>
#include<algorithm> 
#include<cstdio>
#include<queue>
#include<map>
#include<vector>
#include<stack>
using namespace std; 
const int N=201;
int n,m,k,a[N][N];
int dx[]={0,1},dy[]={1,0};
pair<int,bool> f[N][N][N][2];
int dfs(int x,int y,int step,int d){//dfs搜索记忆化
    if(x>n||y>m||step>k)   return -0x3f3f3f3f;
    if(x==n&&y==m)   return a[x][y];
    if(f[x][y][step][d].second)   return f[x][y][step][d].first;
    f[x][y][step][d].second=1;
    int ans=-0x3f3f3f3f;
    if(step<k) ans=max(ans,dfs(x+dx[d],y+dy[d],step+1,d));//走和上一次相同的方向
    ans=max(ans,dfs(x+dx[d^1],y+dy[d^1],2,d^1));//取反,往和上一次不同的方向走
    if(ans<-1e9)   return f[x][y][step][d].first=-0x3f3f3f3f;
    return f[x][y][step][d].first=ans+a[x][y];
}
int main(){
	scanf("%d%d%d",&n,&m,&k);
	for(int i=1;i<=n;i++){
	    for(int j=1;j<=m;j++){
	        scanf("%d",&a[i][j]);
	    }
	}
	int tmp=max(dfs(1,2,2,0),dfs(2,1,2,1));//求最大值
	if(tmp>-1e9) printf("%d",tmp+a[1][1]);
	else printf("No Answer!");
	return 0;
}

   4.圆圆中的方方

题意:

求一个四个边界点为(0,0),(n,0),(0,m),(n,m)的矩形与以A为圆心,r为半径的圆的重叠部分的面积。

考试回顾:

一看解析几何,(这我怎么做?)就放弃了。但是这道题输出样例是可以骗到分的(下次不要轻易弃题了)。

题解:

将相交的部分分成四个部分(见下图),几个部分公式如下:

1. return 0.25*pi*r*r;

2.sqrt(r*r-m*m)*m*0.5+0.5*r*r*(0.5*pi-acos(m/r)

3.sqrt(r*r-m*m)*m*0.5+sqrt(r*r-n*n)*n*0.5+0.5*r*r*(0.5*pi-acos(m/r)-acos(n/r))

4.n*m

AC:

#include<iostream>
#include<iomanip>
#include<cmath> 
#include<string>
#include<algorithm> 
#include<cstdio>
#include<queue>
#include<map>
#include<stack>
using namespace std;
const double pi=acos(-1),eps=1e-8;
double n,m,a,b,r;
double cal(double n,double m,double r){
    if(n<m) swap(n,m);
    if(n<=eps||m<=eps)  return 0;
    if(r<=m) return 0.25*pi*r*r;
    if(r>=sqrt(n*n+m*m)) return n*m;
    if(r<=n) return sqrt(r*r-m*m)*m*0.5+0.5*r*r*(0.5*pi-acos(m/r));
    return sqrt(r*r-m*m)*m*0.5+sqrt(r*r-n*n)*n*0.5+0.5*r*r*(0.5*pi-acos(m/r)-acos(n/r));
}
int main(){
    cin>>n>>m>>a>>b>>r;
    printf("%lf",cal(a,b,r)+cal(n-a,b,r)+cal(a,m-b,r)+cal(n-a,m-b,r));
	return 0;
}

见下图:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2183665.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

锂电池SOC估计 | Matlab基于BP神经网络的锂电池SOC估计

锂电池SOC估计 | Matlab基于BP神经网络的锂电池SOC估计 目录 锂电池SOC估计 | Matlab基于BP神经网络的锂电池SOC估计预测效果基本描述程序设计参考资料 预测效果 基本描述 锂电池SOC估计 | Matlab基于BP神经网络的锂电池SOC估计 运行环境Matlab2023b及以上。 要实现基于BP神…

鼓组编曲:鼓编写技巧之进鼓加花编写

为了方便快速查阅和运用一些教程笔记&#xff0c;个人记性有时可能不是特别好&#xff0c;所以只能疯狂做笔记了&#xff0c;制作以下图文笔记&#xff0c;仅供参考…… 鼓组加花 鼓的变动 进鼓后然后就可以动次打次了 下面是2个底鼓的加花

基于投影滤波算法的rick合成地震波滤波matlab仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 4.1 RICK合成地震波模型 4.2 投影滤波算法原理 5.完整工程文件 1.课题概述 基于投影滤波算法的rick合成地震波滤波matlab仿真。分别通过标准的滤波投影滤波以及卷积滤波投影滤波对合成地震剖面进行滤波…

SQL第10课挑战题

1. 从OrderItems表中返回每个订单号order_num各有多少行数order_lines&#xff0c;并按order_lines对结果进行排序 2. 返回名为cheapest_item的字段&#xff0c;该字段包含每个供应商成本最低的产品&#xff08;使用products表中的prod_price)&#xff0c;然后从最低成本到最高…

Redis篇(缓存机制 - 基本介绍)(持续更新迭代)

目录 一、缓存介绍 二、经典三缓存问题 1. 缓存穿透 1.1. 简介 1.2. 解决方案 1.3. 总结 2. 缓存雪崩 2.1. 简介 2.2. 解决方案 2.3. 总结 3. 缓存击穿 3.1. 简介 3.2. 解决方案 3.3. 总结 4. 经典三缓存问题出现的根本原因 三、常见双缓存方案 1. 缓存预热 1…

MQ高级:RabbitMQ小细节

在之前的学习中&#xff0c;我们只介绍了消息的发送&#xff0c;但是没有考虑到异常的情况&#xff0c;今天我们就介绍一些异常情况&#xff0c;和细节的部分。 目录 生产者可靠性 生产者重连 生产者确认 MQ可靠性 持久化 Lazy Queue 消费者可靠性 消费者确认机制 失…

LoadRunner实战测试解析:记录一次性能测试过程

环境准备 PC&#xff1a; Windows7/XP LoadRunner11&#xff1a; 与win10及以上版本不兼容 Nmon&#xff1a; 性能监控工具&#xff0c;部署到被测服务器 LoadRunner破解安装 下载地址&#xff1a;https://pan.baidu.com/s/1WJjcFWhrkWW-GgYwXdEniQ 提取码&#xff1a;f4z…

基于Spark的汽车行业大数据分析及可视化系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;…

NetApp 混合闪存 FAS 统一存储平台

挑战 简化内部和公有云中的数据管理 各种规模的企业在精简其存储运维方面正面临越来越大的挑战。他们存储和备份的数据量不断增长&#xff0c;而预算却在缩减。他们需要一个既能满足内部环境要求&#xff0c;又能结合公有云战略的解决方案。 解决方案 兼顾容量与性能的存储&…

设计模式-策略模式-200

优点&#xff1a;用来消除 if-else、switch 等多重判断的代码&#xff0c;消除 if-else、switch 多重判断 可以有效应对代码的复杂性。 缺点&#xff1a;会增加类的数量&#xff0c;有的时候没必要为了消除几个if-else而增加很多类&#xff0c;尤其是那些类型又长又臭的 原始代…

scratch棒球运动 2024年9月中国电子学会图形化编程 少儿编程 scratch编程等级考试一级真题和答案解析

目录 scratch棒球运动 一、题目要求 1、准备工作 2、功能实现 二、案例分析 1、角色分析 2、背景分析 3、前期准备 三、解题思路 1、思路分析 2、详细过程 四、程序编写 五、考点分析 六、 推荐资料 1、入门基础 2、蓝桥杯比赛 3、考级资料 4、视频课程 5、…

进程--信号量

信号量是什么 资源的竞争 资源竞争 : 当多个进程同时访问共享资源时&#xff0c;会产生资源竞争&#xff0c;最终最导致数据混乱临界资源 : 不允许同时有多个进程访问的资源&#xff0c;包括硬件资源(CPU、内存、存储器以及其他外围设备)与软件资源(共享代码段、共享数据结构…

SpringCloudEureka实战:搭建EurekaServer

1、依赖引入 <dependencies><!-- 注册中心 --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId></dependency> </dependencies> <de…

66.对cplusplus网的strtok函数的详细解释(补第56篇的翻译)

56.【C语言】字符函数和字符串函数(strtok函数) 点我跳转 目录 56.【C语言】字符函数和字符串函数(strtok函数) 点我跳转 1.原文 2. 翻译 1.原文 原文链接: cplusplus的介绍 点我跳转 2. 翻译 函数 strtok char * strtok ( char * str, const char * delimiters ); Spli…

如何构建一个生产级的AI平台(3)?

书接上回&#xff0c;继续往下讲,本节会说一下模型的路由和网关 模型的路由和网关 随着应用程序复杂性的增加和涉及的模型越来越多&#xff0c; 出现了两种类型的工具来帮助使用多个模型&#xff1a;路由和网关 1. 路由 应用程序可以使用不同的模型来响应不同类型的查询。 …

平衡二叉搜索树删除的实现

前言 上期讲了平衡二叉搜索树的插入&#xff0c;这一期我们来讲讲删除。同时&#xff0c;二叉搜索树的简介不会出现在本篇博客之中&#xff0c;如有需要可以查看上一篇博客《平衡二叉搜索树插入的实现》。 平衡二叉搜索树插入的实现-CSDN博客文章浏览阅读659次&#xff0c;点赞…

三、I/O控制器

1.主要功能 接受和识别CPU发出的命令(要有控制寄存器) 向CPU报告设备的状态(要有状态寄存器) 数据交换(要有数据寄存器&#xff0c;暂存输入/输出的数据) 地址识别(由I/0逻辑实现) 2.组成 CPU与控制器之间的接口(实现控制器与CPU之间的通信) I/0逻辑(负责识别CPU发出的命…

鸿蒙NEXT开发-ArkUI(基于最新api12稳定版)

注意&#xff1a;博主有个鸿蒙专栏&#xff0c;里面从上到下有关于鸿蒙next的教学文档&#xff0c;大家感兴趣可以学习下 如果大家觉得博主文章写的好的话&#xff0c;可以点下关注&#xff0c;博主会一直更新鸿蒙next相关知识 专栏地址: https://blog.csdn.net/qq_56760790/…

自定义注解加 AOP 实现服务接口鉴权以及内部认证

注解 何谓注解&#xff1f; 在Java中&#xff0c;注解&#xff08;Annotation&#xff09;是一种特殊的语法&#xff0c;用符号开头&#xff0c;是 Java5 开始引入的新特性&#xff0c;可以看作是一种特殊的注释&#xff0c;主要用于修饰类、方法或者变量&#xff0c;提供某些信…

中英翻译神器!轻松搞定跨文化沟通

大家好&#xff01;今天咱们来聊聊那些你生活中不可或缺的翻译小助手&#xff1b;不论你是个英语小白&#xff0c;还是希望更快地了解外国文献、掌握外媒信息&#xff0c;或者是从事需要大量翻译工作的小伙伴&#xff0c;总有一款翻译工具能帮你省时省力&#xff0c;让你的生活…