CSP-J Day 1 模拟赛补题报告

news2024/10/2 5:30:20

姓名:王胤皓,校区:和谐校区,考试时间:2024年10月1日9:00:00~12:30:00,学号:S07738

CSP-J Day 1 模拟赛补题报告

前言

考了我们班 Rank 1 1 1

本人在发烧状态下进行写作,勿喷。

分数

T1 alter: A c c e p e t e d   100 \color{green}Accepeted\space100 Accepeted 100
T2 filp: A c c e p e t e d   100 \color{green}Accepeted\space100 Accepeted 100
T3 square W r o n g _ a n s w e r   60 \color{red}Wrong\_answer\space60 Wrong_answer 60
T4 round W r o n g _ a n s w e r   40 \color{red}Wrong\_answer\space40 Wrong_answer 40

题解

T1

题面

在这里插入图片描述

思路

首先从下标 i i i 开始,然后逐次判断是否与上一个相等(它具有单调性,如果到这里不行,那么后面一定不合法),如果不相等,答案加 1 1 1,否则跳出。

赛时 A c c e p e t e d \color{green}{Accepeted} Accepeted 代码
#include<bits/stdc++.h>
using namespace std;
#define ll long long
bool is(string s){
	int len=s.size(); 
	for(int i=1; i<len; i++){
		if(s[i]==s[i-1]){
			return false;
		}
	}
	return true;
}
int main(){
	freopen("alter.in","r",stdin);
	freopen("alter.out","w",stdout);
	string s;
	cin>>s;
	int kkk=s.size(),cnt=0;
	for(int i=0;i<kkk; i++){
		cnt++;
		for(int j=i+1; j<kkk; j++){
			if(s[j]==s[j-1]){
				break;
			}
			else{
				cnt++;
			}
		}
	}
	cout<<cnt;
	return 0;
} 

T2

题面

在这里插入图片描述

思路

我一开始不会,然后想到了二进制,发现他是一个满二叉树,如果这个位上的二进制是 1 1 1,那么答案翻转(一开始答案是 1 1 1),否则不变。

但是要注意一个点, x x x − 1 -1 1,可以使用 C++ 自带的 __builtin_popcount 进行统计,最后判断数量是否为偶数。

赛时代码
#include<bits/stdc++.h>
using namespace std;
#define ll long long
int main(){
	freopen("filp.in","r",stdin);
	freopen("filp.out","w",stdout);
	int T;
	cin>>T;
	while(T--){
		int x;
		cin>>x;
		x--;
		string s;
		for(int i=1; i<=31; i++) s+='0';
		int i=0;
		while(x){
			s[i++]=(char)('0'+x%2);
			x>>=1;
		}
		reverse(s.begin(),s.end());
		int k=10;
		for(int i=0;i<s.size(); i++){
			if(s[i]=='1'){
				if(k==10) k=1;
				else k=10;
			}
		}
		cout<<k/10;
		cout<<"\n";
	} 
	return 0;
}
赛后简化代码
#include<bits/stdc++.h>
int main(){
	int T,x;
	std::cin>>T;
	while(T--){
		std::cin>>x;
		std::cout<<(__builtin_popcount(x-1)%2==0)<<"\n";
	} 
}

T3

题面

思路

经典 dp 问题,就不实现过程了。

代码
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll N = 210;
ll dx[2] = {1, 0}, dy[2] = {0, 1};ll n, m, k, a[N][N], dp[N][N][N][2], ans = -1e18;
int main() {
	ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);cin >> n >> m >> k;
	for (ll i = 1; i <= n; i++)
		for (ll j = 1; j <= m; j++)
			cin >> a[i][j];
	memset(dp, -0x3f, sizeof(dp));dp[1][1][0][0] = dp[1][1][0][1] = a[1][1];
	for (ll x = 1; x <= n; x++)
		for (ll y = 1; y <= m; y++)
			for (ll l = 0; l < k; l++)
					for (ll d = 0; d <= 1; d++) {
					    if (dp[x][y][l][d] < -1e18)continue;for (ll nd = 0; nd <= 1; nd++) {
							ll nx = x + dx[nd], ny = y + dy[nd];
							if (nx < 1 || nx > n || ny < 1 || ny > m)continue;
							if (d != nd)
							dp[nx][ny][1][nd] = max(dp[nx][ny][1][nd], dp[x][y][l][d] + a[nx][ny]);
							else if (l < k - 1)
								dp[nx][ny][l + 1][nd] =max(dp[nx][ny][l + 1][nd], dp[x][y][l][d] +a[nx][ny]);
						}
					}
	for (ll l = 0; l < k; l++)
		for (ll d = 0; d <= 1; d++)
			ans = max(ans, dp[n][m][l][d]);
	if (ans == -1e18)
		cout << "No Answer!";
	else
		cout << ans;
	return 0;
}

T4

题面

在这里插入图片描述

思路

初中奥数。
首先,分成四块
在这里插入图片描述
然后覆盖的话,不难发现经过旋转后有这四种情况
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
然后前两种好计算,后两种我们拆开看。
在这里插入图片描述
第一种的话,就是 n × m n\times m n×m
第二种的话,就是 π r 2 4 \frac{\pi r^2}{4} 4πr2
不难发现,第三种答案,就是 r 2 − m 2 × m 2 + r 2 × ( π 2 − arccos ⁡ ( m r ) ) 2 \frac{\sqrt{r^2-m^2}\times m}{2}+\frac{r^2\times (\frac{\pi}{2}-\arccos(\frac{m}{r}))}{2} 2r2m2 ×m+2r2×(2πarccos(rm))
第四种答案的话,就是 r 2 − m 2 × m 2 + r 2 − n 2 × n 2 + r 2 ∗ ( π 2 − arccos ⁡ ( m r ) − arccos ⁡ ( n r ) ) 2 \frac{\sqrt{r^2-m^2}\times m}{2}+\frac{\sqrt{r^2-n^2}\times n}{2}+\frac{r^2*(\frac{\pi}{2}-\arccos(\frac{m}{r})-\arccos(\frac{n}{r}))}{2} 2r2m2 ×m+2r2n2 ×n+2r2(2πarccos(rm)arccos(rn))

代码
#include<bits/stdc++.h>
using namespace std;
#define ll long long
double eps=1e-8;
const double pi=acos(-1);
double p(double n,double m,double r){
    if(n<m) swap(n,m);
    if(max(n,m)<eps||min(n,m)<eps) return 0;
    if(r>=sqrt(n*n+m*m)) return n*m;
    if(r<=n&&r<=m) return pi*r*r*0.25;
    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(){
    double n,m,a,b,r;
    cin>>n>>m>>a>>b>>r;
    printf("%.10lf",p(a,b,r)+p(n-a,b,r)+p(a,m-b,r)+p(n-a,m-b,r));
    return 0;
}

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

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

相关文章

MySQL 问题小结

mysqld --initialize 初始化 data 文件夹 初始化的密码在这个 err 文件夹中

力扣题解 983

大家好&#xff0c;欢迎来到无限大的判断&#xff0c;祝大家国庆假期愉快 题目描述&#xff08;中等&#xff09; 最低票价 在一个火车旅行很受欢迎的国度&#xff0c;你提前一年计划了一些火车旅行。在接下来的一年里&#xff0c;你要旅行的日子将以一个名为 days 的数组给出…

AI学习记录 -transformer 中对于torch和numpy常用函数的使用方式

在transformer源码中&#xff0c;使用了很多矩阵变换的方法&#xff0c;这些方法太多了&#xff0c;了解底层也没啥意义&#xff0c;也不是啥特别复杂的算法。 所以争取一句话描述这些方法&#xff0c;对照着看transformer的时候&#xff0c;可以衔接自己的思维链。 torch.un…

python访问SQL数据库

Step 1 创建一个数据库 Step 2 安装mysql-connector-python pip install mysql-connector-pythonStep 3 访问mysql,并查询表 import mysql.connectordef connect_and_query():try:# 连接到MySQL数据库connection mysql.connector.connect(hostlocalhost, # 数据库主机…

闯关训练一:Linux基础

闯关任务&#xff1a;完成SSH连接与端口映射并运行hello_world.py 1.创建开发机 2.SSH连接 3. VS-Code 连接 选择 Linux 平台 &#xff0c;输入密码 &#xff0c;选择进入文件夹 4.端口映射 按照下文安装Docs pip install gradio 运行server.py import gradio as grdef …

Python核心知识:pip使用方法大全

什么是 pip&#xff1f; pip 是 Python 的包管理工具&#xff0c;允许用户安装、升级和管理 Python 的第三方库和依赖。它极大地简化了开发过程&#xff0c;使开发者可以轻松地获取并安装所需的软件包。pip 已成为 Python 项目中最常见的包管理工具&#xff0c;并且自 Python …

【Linux】几种常见配置文件介绍

配置文件目录 linux 系统中有很多配置文件目录/etc/systemd/system、/lib/systemd/system 以及/usr/lib/systemd/system 等&#xff0c;这三者有什么样的关系呢&#xff1f; 以下是网络上找的资料汇总&#xff0c;并加了一些操作验证。方便后期使用 介绍 目录/lib/systemd/s…

虚拟机窗口顶部和底部出现白边(鸿蒙开发)

预览窗口顶部和底部出现白边 问题描述&#xff1a;预览窗口顶部和底部都有白边&#xff0c;导致无法全屏显示 解决方法&#xff1a; 官方文档&#xff1a;https://developer.huawei.com/consumer/cn/doc/harmonyos-faqs-V5/faqs-previewer-operating-6-V5 这里官方文档给了两种…

【有啥问啥】AI中的数据融合(Data Fusion):让数据“1+1>2”

AI中的数据融合&#xff08;Data Fusion&#xff09;&#xff1a;让数据“11>2” 引言 在人工智能&#xff08;AI&#xff09;的浪潮中&#xff0c;数据作为驱动创新的核心要素&#xff0c;其重要性不言而喻。随着物联网&#xff08;IoT&#xff09;、传感器技术和云计算的…

基于单片机远程家电控制系统设计

本设计基于单片机的远程家电控制系统&#xff0c;以STC89C52单片机为核心&#xff0c;通过液晶LCD1602实时显示并控制&#xff0c;利用ESP8266WiFi模块实现本地与云平台的连接&#xff0c;最终实现远程对于灯光&#xff0c;热水器等家电的开关控制。同时&#xff0c;系统设有防…

pdf怎么编辑修改内容?详细介绍6款pdf编辑器功能

■ pdf怎么编辑修改内容&#xff1f; PDF&#xff08;Portable Document Format&#xff09;作为一种广泛使用的文件格式&#xff0c;具有特点包括兼容性强、易于传输、文件安全性高、跨平台性、可读性强、完整性、可搜索性、安全性、可压缩性。 PDF文件本身是不可以直接进行编…

认知杂谈73《成年人的修炼:勇敢前行,积极向上》

内容摘要&#xff1a; 成长是成年人的必修课&#xff0c;它要求我们不断学习、面对挑战、做出选择、调整行动。成长的必要性在于适应社会、实现自我价值。实现成长的策略包括自我掌舵、自救、为结果负责、保持积极心态。 追求艺术或商业目标、自己解决问题、承担责任、换个角度…

OpenAI o1:使用限额提高,o1 模型解析

OpenAI 最新公告 OpenAI 近日宣布对 o1-mini 和 o1-preview 的消息使用限额进行了提升&#xff0c;让 Plus 和 Team 用户可以更频繁地体验 o1 系统。具体来说&#xff0c;o1-mini 的限额从每周 50 条增加到了每天 50 条&#xff0c;而 o1-preview 的限额则从每周 30 条提升到了…

【算法】链表:21.合并两个有序链表(easy)

系列专栏 《分治》 《模拟》 《Linux》 目录 1、题目链接 2、题目介绍 3、解法&#xff08;双指针&#xff09; 4、代码 1、题目链接 21. 合并两个有序链表 - 力扣&#xff08;LeetCode&#xff09; 2、题目介绍 3、解法&#xff08;双指针&#xff09; 推荐一篇题解…

Arduino UNO R3自学笔记13 之 Arduino使用LM35如何测量温度?

注意&#xff1a;学习和写作过程中&#xff0c;部分资料搜集于互联网&#xff0c;如有侵权请联系删除。 前言&#xff1a;学习使用传感器测温。 1.LM35介绍 一般来讲当知道需求&#xff0c;就可以 通过既定要求的条件来筛选需要的器件&#xff0c;多方面的因素最终选定了器件…

c语言实例

大家好&#xff0c;欢迎来到无限大的频道 今天给大家带来的是c语言 题目描述 创建一个双链表&#xff0c;并将链表中的数据输出到控制台&#xff0c;输入要查找的数据&#xff0c;将查找到的数据删除&#xff0c;并且显示删除后的链表 下面是一个用C语言实现的双链表&#…

数据结构-4.2.串的定义和基本操作

一.串的定义&#xff1a; 1.单/双引号不是字符串里的内容&#xff0c;他只是一个边界符&#xff0c;用来表示字符串的头和尾&#xff1b; 2.空串也是字符串的子串&#xff0c;空串长度为0&#xff1b; 3.字符的编号是从1开始&#xff0c;不是0&#xff1b; 4.空格也是字符&a…

Windows 11 安装配置 Git 教程

目录 Git Windows 11 环境安装配置 Git Git Git是一个开源的分布式版本控制系统&#xff0c;由Linus Torvalds创建&#xff0c;用于有效、高速地处理从小到大的项目版本管理。Git是目前世界上最流行的版本控制系统&#xff0c;广泛应用于软件开发中。 以下是Git的一些关键特…

Python空间地表联动贝叶斯地震风险计算模型

&#x1f3af;要点 使用贝叶斯推断模型兼顾路径和场地效应&#xff0c;量化传统地理统计曲线拟合技术。使用破裂和场地特征等地质信息以及事件间残差和事件内残差描述数学模型模型使用欧几里得距离度量、角距离度量和土壤差异性度量确定贝叶斯先验分布和后验分布参数&#xff…

使用Qt实现实时数据动态绘制的折线图示例

基于Qt的 QChartView 和定时器来动态绘制折线图。它通过动画的方式逐步将数据点添加到图表上&#xff0c;并动态更新坐标轴的范围&#xff0c;提供了一个可以实时更新数据的折线图应用。以下是对代码的详细介绍及其功能解析&#xff1a; 代码概述 该程序使用Qt的 QChartView…