CCF CSP认证 历年题目自练Day36

2023-10-22 22:01

本文主要是介绍CCF CSP认证 历年题目自练Day36,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目一

试题编号: 202309-1
试题名称: 坐标变换(其一)
时间限制: 1.0s
内存限制: 512.0MB
问题描述:
问题描述
对于平面直角坐标系上的坐标 (x,y),小 P 定义了一个包含 n 个操作的序列 T=(t1,t2,⋯,tn)。其中每个操作 ti(1≤i≤n)包含两个参数 dxi 和 dyi,表示将坐标 (x,y) 平移至 (x+dxi,y+dyi) 处。

现给定 m 个初始坐标,试计算对每个坐标 (xj,yj)(1≤j≤m)依次进行 T 中 n 个操作后的最终坐标。

输入格式
从标准输入读入数据。

输入共 n+m+1 行。

输入的第一行包含空格分隔的两个正整数 n 和 m,分别表示操作和初始坐标个数。

接下来 n 行依次输入 n 个操作,其中第 i(1≤i≤n)行包含空格分隔的两个整数 dxi、dyi。

接下来 m 行依次输入 m 个坐标,其中第 j(1≤j≤m)行包含空格分隔的两个整数 xj、yj。

输出格式
输出到标准输出中。

输出共 m 行,其中第 j(1≤j≤m)行包含空格分隔的两个整数,表示初始坐标 (xj,yj) 经过 n 个操作后的位置。

样例输入
3 2
10 10
0 0
10 -20
1 -1
0 0

样例输出
21 -11
20 -10

样例说明
第一个坐标 (1,−1) 经过三次操作后变为 (21,−11);第二个坐标 (0,0) 经过三次操作后变为 (20,−10)。

评测用例规模与约定
全部的测试数据满足:n,m≤100,所有输入数据(x,y,dx,dy)均为整数且绝对值不超过 100000。

题目分析(个人理解)

  1. 先看输入,第一行输入n次操作,m个坐标,第二行到n+1行输入每次操作的x,y的值,第n+1到第n+1+m行输入原坐标。
  2. 可以先将多次操作先计算合并成一次再计算,可以用列表存,然后边存边合并,输入原坐标后做一次计算输出即可。
  3. 傻瓜代码:
n,m=map(int,input().split())
l=[]
l1=[0,0]
l2=[]
l3=[0,0]
l4=[]
for i in range(n):d=list(input().split())#存操作l.append(d)l1[0]+=int(l[i][0])l1[1]+=int(l[i][1])#print(l1)
for j in range(m):d1=list(input().split())#存坐标l3[0]=int(d1[0])+int(l1[0])l3[1]=int(d1[1])+int(l1[1])print('{} {}'.format(l3[0],l3[1]))
  1. 优化之后:
n, m = map(int,input().split())
temp_x = temp_y = 0
for i in range(n):x1, y1 = map(int, input().split())temp_x += x1temp_y += y1
for i in range(m):x, y = map(int, input().split())x += temp_xy += temp_yprint('{} {}'.format(x,y))

题目二

试题编号: 202309-2
试题名称: 坐标变换(其二)
时间限制: 2.0s
内存限制: 512.0MB
在这里插入图片描述
样例输入
10 5
2 0.59
2 4.956
1 0.997
1 1.364
1 1.242
1 0.82
2 2.824
1 0.716
2 0.178
2 4.094
1 6 -953188 -946637
1 9 969538 848081
4 7 -114758 522223
1 9 -535079 601597
8 8 159430 -511187
Data
样例输出
-1858706.758 -83259.993
-1261428.46 201113.678
-75099.123 -738950.159
-119179.897 -789457.532
114151.88 -366009.892
在这里插入图片描述
提示
C/C++:建议使用 double 类型存储浮点数,并使用 scanf(“%lf”, &x); 进行输入,printf(“%f”, x); 输出,也可以使用 cin 和 cout 输入输出浮点数;#include <math.h> 后可使用三角函数 cos() 和 sin()。

Python:直接使用 print(x) 即可输出浮点数 x;from math import cos, sin 后可使用相应三角函数。

Java:建议使用 double 类型存储浮点数,可以使用 System.out.print(x); 进行输出;可使用 Math.cos() 和 Math.sin() 调用三角函数。

题目分析(个人理解)

  1. 我先讲本人的思路和对题目的理解,还是先看题目第一行输入n个参数表示有多少种操作,参数m表示有几个原坐标需要处理,最后的m行输入的四个参数i j x y分别表示从i到j对(x,y)操作,比如样例第一行,1 6操作,实际上是对后面的坐标做从编号1到6操作的每一步操作,然后输出结果。
  2. 我设置一个字典,keys表示操作编号,值是列表,列表的0位的数值表示是旋转还是拉伸操作,1位表示k或弧度。
  3. 代码如下:(想到前缀和但是未能实现)
#80分超时
from math import cos,sin
n,m=map(int,input().split())
l1=[]for i in range(n):operate=list(input().split())#存放操作l1.append(operate)
l=[str(i) for i in range(1,n+1)]#给操作编号
dict1=dict(zip(l,l1))#关键字是操作编号,值的第一个元素是1或2
y,x=0,0
#print(dict1)
for k in range(m):l2=list(map(int,input().split()))#存i j x yx,y=l2[2],l2[3]for j in range(l2[0],l2[1]+1):if dict1[str(j)][0]=='1':#伸缩x ,y= float(x) * float(dict1[str(j)][1]),float(y) * float(dict1[str(j)][1])if dict1[str(j)][0]=='2':#旋转x,y= float(x) * cos(float(dict1[str(j)][1])) - float(y) * sin(float(dict1[str(j)][1])),float(x) * sin(float(dict1[str(j)][1]))+float(y)*cos(float(dict1[str(j)][1]))print('{:.3f} {:.3f}'.format(x,y))
  1. 写的好看一点的超时代码(80分)
from math import cos,sin#拉伸
def draw_1(k,x,y):x1=k*x;y1=k*y;return x1,y1
#旋转
def rotate_2(a,x,y):x2=x*cos(a)-y*sin(a);y2=x*sin(a)+y*cos(a)return x2,y2#输入n和m,空格隔开
n, m=tuple(map(eval,input().split()))
list1,list2=[],[]#输入n个操作list1[]
for i in range(n):n1, n2=tuple(map(eval,input().split()))list1.append((n1, n2))#输入m个查询并计算list2[]
for j in range(m):m1, m2, m3, m4=tuple(map(eval,input().split()))for k in range(m1, m2+1):if list1[k-1][0]==1:m3, m4= draw_1(list1[k-1][1], m3, m4)else:m3, m4= rotate_2(list1[k-1][1], m3, m4)list2.append((m3, m4))for l in list2:print(round(l[0],3),end=' ');print(round(l[1],3))

总结

本人从2023.9.14开始刷题从13年12月的题刷到23年10月的题因为能力有限只做了第一题和第二题,发现本人知识框架还未完善,CCF CSP认证打卡不会间断只不过最近几期除了做第三题还会增加对的pyhton程序设计的全面完善,比如对很多第三方库的知识梳理,以及数据结构的知识综合编程题来应用,本人将会不停探索一切学习方法,力求提高编程和优化算法的能力!!!
路漫漫其修远兮,希望与诸君一起进步!!!

这篇关于CCF CSP认证 历年题目自练Day36的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

浅析Spring Security认证过程

类图 为了方便理解Spring Security认证流程,特意画了如下的类图,包含相关的核心认证类 概述 核心验证器 AuthenticationManager 该对象提供了认证方法的入口,接收一个Authentiaton对象作为参数; public interface AuthenticationManager {Authentication authenticate(Authenti

题目1254:N皇后问题

题目1254:N皇后问题 时间限制:1 秒 内存限制:128 兆 特殊判题:否 题目描述: N皇后问题,即在N*N的方格棋盘内放置了N个皇后,使得它们不相互攻击(即任意2个皇后不允许处在同一排,同一列,也不允许处在同一斜线上。因为皇后可以直走,横走和斜走如下图)。 你的任务是,对于给定的N,求出有多少种合法的放置方法。输出N皇后问题所有不同的摆放情况个数。 输入

题目1380:lucky number

题目1380:lucky number 时间限制:3 秒 内存限制:3 兆 特殊判题:否 提交:2839 解决:300 题目描述: 每个人有自己的lucky number,小A也一样。不过他的lucky number定义不一样。他认为一个序列中某些数出现的次数为n的话,都是他的lucky number。但是,现在这个序列很大,他无法快速找到所有lucky number。既然

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] 时,要计算子序列 [

【Kubernetes】K8s 的安全框架和用户认证

K8s 的安全框架和用户认证 1.Kubernetes 的安全框架1.1 认证:Authentication1.2 鉴权:Authorization1.3 准入控制:Admission Control 2.Kubernetes 的用户认证2.1 Kubernetes 的用户认证方式2.2 配置 Kubernetes 集群使用密码认证 Kubernetes 作为一个分布式的虚拟

【408数据结构】散列 (哈希)知识点集合复习考点题目

苏泽  “弃工从研”的路上很孤独,于是我记下了些许笔记相伴,希望能够帮助到大家    知识点 1. 散列查找 散列查找是一种高效的查找方法,它通过散列函数将关键字映射到数组的一个位置,从而实现快速查找。这种方法的时间复杂度平均为(

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

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

码蹄集部分题目(2024OJ赛9.4-9.8;线段树+树状数组)

1🐋🐋配对最小值(王者;树状数组) 时间限制:1秒 占用内存:64M 🐟题目思路 MT3065 配对最小值_哔哩哔哩_bilibili 🐟代码 #include<bits/stdc++.h> using namespace std;const int N=1e5+7;int a[N],b[N],c[N],n,q;struct QUERY{int l,r,id;}que

【Shiro】Shiro 的学习教程(二)之认证、授权源码分析

目录 1、背景2、相关类图3、解析3.1、加载、解析阶段3.2、认证阶段3.3、授权阶段 1、背景 继上节代码,通过 debug 进行 shiro 源码分析。 2、相关类图 debug 之前,先了解下一些类的结构图: ①:SecurityManager:安全管理器 DefaultSecurityManager: RememberMeManager:实现【记住我】功能

CCF推荐C类会议和期刊总结(计算机网络领域)

CCF推荐C类会议和期刊总结(计算机网络领域) 在计算机网络领域,中国计算机学会(CCF)推荐的C类会议和期刊为研究者提供了广泛的学术交流平台。以下是对所有C类会议和期刊的总结,包括全称、出版社、dblp文献网址以及所属领域。 目录 CCF推荐C类会议和期刊总结(计算机网络领域) C类期刊 1. Ad Hoc Networks 2. CC 3. TNSM 4. IET Com