CSP-M1 补题 C - 可怕的宇宙射线 Gym - 270437F

2023-11-03 16:50

本文主要是介绍CSP-M1 补题 C - 可怕的宇宙射线 Gym - 270437F,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

时间与内存限制

每个测试点 1000ms 262144KB

题目描述

众所周知,瑞神已经达到了CS本科生的天花板,但殊不知天外有天,人外有苟。在浩瀚的宇宙中,存在着一种叫做苟狗的生物,这种生物天生就能达到人类研究生的知识水平,并且天生擅长CSP,甚至有全国第一的水平!但最可怕的是,它可以发出宇宙射线!宇宙射线可以摧毁人的智商,进行降智打击!
宇宙射线会在无限的二维平面上传播(可以看做一个二维网格图),初始方向默认向上。宇宙射线会在发射出一段距离后分裂,向该方向的左右45°方向分裂出两条宇宙射线,同时威力不变!宇宙射线会分裂 次,每次分裂后会在分裂方向前进 个单位长度。
现在瑞神要带着他的小弟们挑战苟狗,但是瑞神不想让自己的智商降到普通本科生 那么菜的水平,所以瑞神来请求你帮他计算出共有多少个位置会被"降智打击

输入描述

输入第一行包含一个正整数 ,表示宇宙射线会分裂 次
第二行包含n个正整数 ,第 个数 表示第 次分裂的宇宙射线会在它原方向上继续走多少个单位长度。
输出描述
输出一个数 ,表示有多少个位置会被降智打击

样例
30
5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 54334828
5 5 1 1 1 1 2 1 1 2 2 5 5 5 4 3 5 4 3 5 4 3 3 5 5 4 1 1 2 3 52218827
5 5 1 1 1 1 2 1 1 2 2 5 5 5 4 3 5 4 3 5 4 3 3 5 5 4 1 1 221871
数据点说明

数据点 n 10% <=10 40% <=20 100% <=30

样例解释

下图描绘了样例中宇宙射线分裂的全过程,仅做参考(如加载缓慢请耐心等待)在这里插入图片描述

解题思路

暴力算法时间复杂度要2^30,在1s内较难完成,怎么优化都是超时的
。因此我们可以只用递归算出一种可能,按顺序标记在这次递归中的点。然后从终点开始,在每一次分裂点处求处在分裂点后产生的点关于分裂点的对称点,从而组成对称的图形。

我们从最后一次分裂产生的点开始根据分裂对称方向求对称点,求完当前分裂点的对称点,返回到上一个交叉点之前,将在这个步骤中在地图上标记的点加入队列中,并在地图中标出。list l1 中按顺序存储从分裂开始到结束标记的点,而 list l2 中存储的则是从分裂结束开始往起点求对称点过程中,图中标记的点。虽然这种方法比较麻烦,在 n<=30 时可以控制在几十毫秒以内。

程序源码

#include<iostream>
#include<stdio.h>
#include<list>using namespace std;
int n;
int px[] = { -1,-1,0,1,1,1,0,-1 }; //x轴偏移 
int py[] = { 0,1,1,1,0,-1,-1,-1 }; //y轴偏移 
bool m[3200][3200] = { 0 };
int l[30];
list<point> l1; //从开始到结束标记的点 
list<point> l2; //从结束到开始标记的点 struct point { //点结构体 int x;int y;point(int xx, int yy) :x(xx), y(yy) {}
};void dfs(int x, int y, int lv, int posi) {int steps = l[lv];point* newp;for (int i = 0; i < steps; i++) { //将当前层次要标记的点存入 l1 中 x = x + px[posi]

这篇关于CSP-M1 补题 C - 可怕的宇宙射线 Gym - 270437F的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/339550

相关文章

CSP 2023 提高级第一轮 CSP-S 2023初试题 完善程序第二题解析 未完

一、题目阅读 (最大值之和)给定整数序列 a0,⋯,an−1,求该序列所有非空连续子序列的最大值之和。上述参数满足 1≤n≤105 和 1≤ai≤108。 一个序列的非空连续子序列可以用两个下标 ll 和 rr(其中0≤l≤r<n0≤l≤r<n)表示,对应的序列为 al,al+1,⋯,ar​。两个非空连续子序列不同,当且仅当下标不同。 例如,当原序列为 [1,2,1,2] 时,要计算子序列 [

CSP-J基础之数学基础 初等数论 一篇搞懂(一)

文章目录 前言声明初等数论是什么初等数论历史1. **古代时期**2. **中世纪时期**3. **文艺复兴与近代**4. **现代时期** 整数的整除性约数什么样的整数除什么样的整数才能得到整数?条件:举例说明:一般化: 判断两个数能否被整除 因数与倍数质数与复合数使用开根号法判定质数哥德巴赫猜想最大公因数与辗转相除法计算最大公因数的常用方法:举几个例子:例子 1: 计算 12 和 18

CSP-J基础之数学基础 初等数论 一篇搞懂(二)

文章目录 前言算术基本定理简介什么是质数?举个简单例子:重要的结论:算术基本定理公式解释:举例: 算术基本定理的求法如何找出质因数:举个简单的例子: 重要的步骤:C++实现 同余举个例子:同余的性质简介1. 同余的自反性2. 同余的对称性3. 同余的传递性4. 同余的加法性质5. 同余的乘法性质 推论 总结 前言 在计算机科学和数学中,初等数论是一个重要的基础领域,涉及到整数

CSP-J基础之cmath常见函数

文章目录 前言1. **`sin` 函数**2. **`cos` 函数**3. **`exp` 函数**4. **`log` 函数**5. **`fabs` 函数**6. **`pow` 函数**7. **`sqrt` 函数**8. **`ceil` 函数**9. **`floor` 函数** 总结 前言 在计算机科学与编程中,数学函数是解决各种计算问题的基础工具。C++标准

CSP-J选择题 - 排列组合

排列问题:有5名学生参加比赛,要求排成一排拍照,有多少种不同的排列方式?组合问题:从10本书中选出3本书送给朋友,有多少种不同的选择方式?排列问题:一个教室有7个座位,5个学生需要坐下,有多少种不同的排列方式?组合问题:从12个人中选出4个人组成一个团队,有多少种不同的方式?排列问题:一个密码由4个字母组成,字母可以重复使用,有多少种不同的排列组合?组合问题:从8个不同颜色的球中选出3个,不考虑顺

Creating OpenAI Gym Environment from Map Data

题意:从地图数据创建 OpenAI Gym 环境 问题背景: I am just starting out with reinforcement learning and trying to create a custom environment with OpenAI gym. However, I am stumped with trying to create an enviro

CSP-J 之C++常用英文缩写

文章目录 C++常用英文缩写前言常用缩写解析C++ 基础缩写输入输出相关控制台 命名与类型常用函数在线测评相关 总结 C++常用英文缩写 前言 在编程比赛和日常开发中,C++是一门广泛使用的编程语言,许多英文缩写贯穿其中。了解这些缩写不仅有助于提高编程效率,还能加深对编程语言及其工作机制的理解。本文将介绍C++中常见的英文缩写,以及它们在编程中的实际含义和应用。 常用

P7072 [CSP-J2020] 直播获奖

题目描述     NOI2130即将举行。为了增加观赏性,CCF决定逐一评出每个选手的成绩,并直播即时的获奖分数线。本次竞赛的获奖率为w% 的选手的最低成绩就是即时的分数线。     更具体地,若当前已评出了 p 个选手的成绩,则当前计划获奖人数为max(1,⌊p∗w%⌋),其中w是获奖百分比,⌊x⌋ 表示对x向下取整,max(x,y) 表示x和y中较大的数。如有选手成绩相同,则所有成绩并列的

CSP-J/S 复赛程序提交指南,提交错误必爆零!!!

CSP-J/S 复赛题目程序需要以文件的形式提交,如果之前没有了解过,那肯定会爆0,该怎么操作呢? 大家好,我是大李。 针对复赛考试提交详情,这里做个详细介绍,分为文件的创建和文件体提交等事项。 一、关于文件建立 复赛考试时需要根据提示,在桌面建立文件夹,将含有文件体的cpp文件保存至桌面。 每一题的命名都需要根据提示来去命名。 以2023年CSP-J/S 第二轮为例 在电

【codeforces】gym 101137 K - Knights of the Old Republic【用最小生成树对图做集合dp】

题目链接:【codeforces】gym 101137 K - Knights of the Old Republic 考虑对图集合dp,一个连通块的dp值为两个连通块的值的和或者强制加一条新边后的最小值,取个最小值(边从小到大枚举,则强制加一条最大的边会导致连通块内较小的边一定都选,则会构成一个生成树)。用kruskal实现这个dp过程即可。 #include <bits/stdc++.h>