当前位置: 首页 > news >正文

第二十次CCF计算机软件能力认证

数学专场

第一题:称检测点查询

解题思路:计算欧几里得距离

#include<iostream>
#include<vector>
#include<algorithm>using namespace std;typedef pair<int , int> PII;
int n , x , y;
vector<PII>v;int main()
{cin >> n >> x >> y;for(int i = 1;i <= n;i ++){int a , b;cin >> a >> b;v.push_back({(a - x) * (a - x) + (b - y) * (b - y) , i});}sort(v.begin() , v.end());for(int i = 0;i < 3;i ++)cout << v[i].second << endl;return 0;
}

第二题:风险人群筛查

解题思路:

对于每一个记录一定是连续的,因此查询逗留的就是检查每一条数据有几个连续的点在矩阵中即可

对于每一个点使用线性规划直接检查是否在矩阵中即可

#include<iostream>using namespace std;const int N = 1010;
int n , k , t , xl , yl , xr , yr;
int x[N] , y[N];
int throu = 0 , stay = 0;bool in(int u)
{if(x[u] >= xl && x[u] <= xr && y[u] >= yl && y[u] <= yr) return true;return false;
}bool check() // 检查是否经过
{for(int i = 0;i < t;i ++)if(in(i)) return true;return false;
}bool check1() // 检查连续
{for(int i = 0;i < t;i ++){int j = i;while(j < t && in(j)) j ++;if(j - i >= k) return true;i = j;}return false;
}int main()
{cin >> n >> k >> t >> xl >> yl >> xr >> yr;while(n --){for(int i = 0;i < t;i ++)cin >> x[i] >> y[i];if(check()) throu ++;if(check1()) stay ++;}cout << throu << endl << stay << endl;return 0;
}

第三题:点亮数字人生

解题思路:

直接模拟(真的阴间的模拟90分)

#pragma GCC optimize(2)
#pragma GCC optimize(3,"Ofast","inline")
#include<iostream>
#include<unordered_map>
#include<algorithm>
#include<vector>
#include<cstring>
#include<sstream>
#include<queue>using namespace std;typedef unordered_map<int , int> MPII;
typedef vector<int> VI;
typedef pair<int , int> PII;
const int N = 5010 , M = 1e6 + 10;
int h[M] , ne[M] , e[M] , idx = 0;
MPII input;
int n , m , t , q;
unordered_map<int , vector<int>>input_num , query;
bool st[M];
int in[M] , copy_in[M];
int res[M];struct Logic
{string logic;int cnt;VI w;
}nodes[M];inline int change_input(int u)
{return 5000 + u;
}inline void add(int a , int b)
{e[idx] = b , ne[idx] = h[a] , h[a] = idx ++;
}inline bool check()
{queue<int>q;int cnt = 0;for(int i = 1;i <= n;i ++)if(!in[i]) q.push(i) , cnt ++;while(!q.empty()){int t = q.front();q.pop();for(int i = h[t];~i;i = ne[i]){int j = e[i];in[j] --;if(!in[j]) q.push(j) , cnt ++;}}return cnt == n;
}inline void init()
{memset(h , -1 , sizeof h);memset(ne , 0 , sizeof ne);memset(e , 0 , sizeof e);memset(copy_in , 0 , sizeof copy_in);idx = 0;input.clear();memset(st , 0 , sizeof st);input_num.clear() , query.clear();memset(in , 0 , sizeof in);for(int i = 1;i <= n;i ++)nodes[i].logic = "" , nodes[i].cnt = 0 , nodes[i].w.clear();
}inline int eval(int j)
{int ans = 0;int cnt = nodes[j].cnt;if(nodes[j].logic == "NOT") ans = nodes[j].w[0] ^ 1;else if(nodes[j].logic == "AND"){ans = 1;for(int i = 0;i < cnt;i ++)ans &= nodes[j].w[i];}else if(nodes[j].logic == "OR"){for(int i : nodes[j].w)ans |= i;}else if(nodes[j].logic == "XOR"){ans = nodes[j].w[0];for(int i = 1;i < cnt;i ++)ans ^= nodes[j].w[i];}else if(nodes[j].logic == "NAND"){ans = 1;for(int i : nodes[j].w)ans &= i;ans = ans ^ 1;}else{for(int i : nodes[j].w)ans |= i;ans = ans ^ 1;}return ans;
}inline void cal(int u)
{queue<PII>q;int copy[M];memcpy(copy , copy_in , sizeof copy_in);for(int i = 1;i <= m;i ++) q.push({input_num[u][i - 1] , change_input(i)});while(!q.empty()){auto t = q.front();q.pop();int x = t.first , y = t.second;for(int i = h[y];~i;i = ne[i]){int j = e[i];copy[j] --;nodes[j].w.push_back(x);if(!copy[j]){int ans = eval(j);res[j] = ans;q.push({ans , j});}}}
}int main()
{scanf("%d" ,&t);while(t --){init();scanf("%d %d" ,&m ,&n);getchar();for(int i = 1;i <= n;i ++){char s[N];// getline(cin , s);fgets(s , 2000 , stdin);stringstream ss(s);string str;ss >> str;string logic = str;ss >> str;int cnt = stoi(str);nodes[i].logic = logic;nodes[i].cnt = cnt;while(ss >> str) {if(str[0] == 'O') // 表示第 n 个器件的输出连接到此输入端{int x = stoi(str.substr(1));add(x , i);in[i] ++;copy_in[i] ++;}else // 表示第 m 个输入信号连接到此输入端{int x = stoi(str.substr(1));int y = change_input(x);add(y , i);copy_in[i] ++;if(!input[y]) input[y] = x; // 将输入端进行重新编号}}}scanf("%d" ,&q);for(int i = 0;i < q;i ++)for(int j = 1;j <= m;j ++){int x;scanf("%d" ,&x);input_num[i].push_back(x);}for(int i = 0;i < q;i ++){int x;scanf("%d" ,&x);for(int j = 0;j < x;j ++){int y;scanf("%d" ,&y);query[i].push_back(y);}}if(!check()) // 检查是否自环{puts("LOOP");continue;}for(int i = 0;i < q;i ++) {memset(res , 0 , sizeof res);cal(i);for(int j = 1;j <= n;j ++)nodes[j].w.clear();for(int p : query[i])printf("%d " ,res[p]);puts("");}}
}

第四题:星际旅行

解题思路:

根据AB直线到圆心的距离和三角形的三边关系可以

两种情况:

(1)当两点A、B构成的直线不经过圆,最短距离 |AB| 的直线距离

(2)当两点A、B构成的直线经过圆,我们连接A点和圆心O点,B点和圆心O点,可以构成一个三角形,使用余弦定理可以得到AB边所对的角的弧度,然后可以求出所对应的弧长。

import mathdef SLdist(x , y):w = len(x)ans = 0for i in range(w):ans += (x[i] - y[i]) ** 2return ans ** 0.5n , m = map(int , input().split())
r = int(input())
black = list(map(int , input().split()))
l , d , tangent = [] , [] , []
for _ in range(m):temp = list(map(int , input().split()))l.append(temp)ans = 0for i in range(n):ans += (temp[i] - black[i]) ** 2# 点到圆心的距离d.append(ans ** 0.5)# 切线长tangent.append((ans - r * r) ** 0.5)res = [0 for i in range(m + 10)]
for i in range(m):A = l[i]for j in range(i):B = l[j]a , b , c = d[i] , d[j] , SLdist(A , B)# 海伦公式p = (a + b + c) / 2h = ((p * (p - a) * (p - b) * (p - c)) ** 0.5)h = h * 2if h >= r * c or a * a + c * c <= b * b or b * b + c * c <= a * a:res[i] += cres[j] += ccontinuealpha1 = math.acos(r / a)alpha2 = math.acos(r / b)beta = math.acos((a * a + b * b - c * c) / (2 * a * b))alpha = beta - alpha1 - alpha2x = (a * a - r * r) ** 0.5 + (b * b - r * r) ** 0.5 + alpha * rres[i] += xres[j] += x
for i in range(m):print(f'{res[i]:.15f}')
#include <iostream>
#include <cstring>
#include <algorithm>
#include <cmath>using namespace std;const int N = 110, M = 2010;int n, m;
double R;
double o[N], p[M][N];
double d[M], rd[M];
double ans[M];inline double sqr(double x)
{return x * x;
}int main()
{scanf("%d%d%lf", &n, &m, &R);for (int i = 0; i < n; i ++ ) scanf("%lf", &o[i]);for (int i = 0; i < m; i ++ ){double s = 0;for (int j = 0; j < n; j ++ ){scanf("%lf", &p[i][j]);s += sqr(p[i][j] - o[j]);}d[i] = sqrt(s);rd[i] = sqrt(s - sqr(R));}for (int i = 0; i < m; i ++ )for (int j = 0; j < i; j ++ ){double s = 0;for (int k = 0; k < n; k ++ ) s += sqr(p[i][k] - p[j][k]);double c = sqrt(s), a = d[i], b = d[j];double p = (a + b + c) / 2;double area = sqrt(p * (p - a) * (p - b) * (p - c));double h = area * 2 / c;if (h >= R || sqr(b) >= sqr(a) + s || sqr(a) >= sqr(b) + s){ans[i] += c, ans[j] += c;continue;}double angle1 = acos((sqr(a) + sqr(b) - s) / (2 * a * b));double angle2 = acos(R / a);double angle3 = acos(R / b);double t = (angle1 - angle2 - angle3) * R + rd[i] + rd[j];ans[i] += t, ans[j] += t;}for (int i = 0; i < m; i ++ )printf("%.12lf\n", ans[i]);return 0;
}

第五题:密信与计数

int p = tr[t][i];if (!p) tr[t][i] = tr[ne[t]][i];else{ne[p] = tr[ne[t]][i];cnt[p] += cnt[ne[p]];q[ ++ tt] = p;}}}
}int main()
{cin >> n >> m;for (int i = 0; i < 26; i ++ )for (int j = 1; j <= n; j ++ ){string str;cin >> str;g[str[0] - 'a'][j] = {i, stoi(str.substr(1))};}string str;while (cin >> str){insert(str);strs.push_back(str);}build();f[0][0][1] = 1;for (int i = 0; i <= m; i ++ ){int sum = 0;for (int j = 0; j <= idx; j ++ )for (int k = 1; k <= n; k ++ ){if (!f[i][j][k]) continue;sum = (sum + f[i][j][k]) % MOD;for (auto& s: strs){if (i + s.size() > m) continue;bool flag = true;int x = j, y = k;for (auto c: s){int u = c - 'a';auto& t = g[u][y];x = tr[x][t.row];if (cnt[x]){flag = false;break;}y = t.next;}if (flag){auto& v = f[i + s.size()][x][y];v = (v + f[i][j][k]) % MOD;}}}if (i) printf("%d\n", sum);}return 0;
}

相关文章:

第二十次CCF计算机软件能力认证

数学专场 第一题&#xff1a;称检测点查询 解题思路&#xff1a;计算欧几里得距离 #include<iostream> #include<vector> #include<algorithm>using namespace std;typedef pair<int , int> PII; int n , x , y; vector<PII>v;int main() {ci…...

一篇文章带你了解Java发送邮件:使用JavaMail API发送电子邮件的注意事项、发送附件等

Java发送邮件&#xff1a;使用JavaMail API发送电子邮件 作者&#xff1a;Stevedash 发表于&#xff1a;2023年8月13日 15点48分 来源&#xff1a;Java 发送邮件 | 菜鸟教程 (runoob.com) 电子邮件在现代通信中扮演着至关重要的角色&#xff0c;而在Java编程中&#xff0c;…...

kubernetes的日志

1、日志在哪里 kubelet组件&#xff0c;systemd方式部署&#xff0c;journalctl -u kubelet 查看 其他组件&#xff0c;pod方式部署&#xff0c;kubectl logs 查看 容器运行时将日志写入 /var/log/pods 系统日志&#xff0c;/var/log/message 2、查看服务日志 #首先检查服…...

设计HTML5文本

网页文本内容丰富、形式多样&#xff0c;通过不同的版式显示在页面中&#xff0c;为用户提供最直接、最丰富的信息。HTML5新增了很多文本标签&#xff0c;它们都有特殊的语义&#xff0c;正确使用这些标签&#xff0c;可以让网页文本更严谨、更符合语义。 1、通用文本 1.1、标…...

msvcr120.dll丢失怎样修复?总结三个dll修复方法

当我遇到msvcr120.dll丢失的问题时&#xff0c;我感到有些困惑和焦虑。因为这个问题会导致我无法运行依赖这个文件的应用程序。msvcr120.dll是运行时库文件的一部分&#xff0c;为应用程序提供了必要的运行时支持。它的丢失会导致应用程序无法正常运行&#xff0c;这让我意识到…...

选择题方法论——颉斌斌

文章目录 一、仔细阅读文章结构Ⅰ 时间对比Ⅱ 抛砖引玉Ⅲ 开门见山Ⅳ 一分为二Ⅴ 两者关系Ⅵ 研究性文章 1 如何精准定位1.1 定位明显的题1.2 定位不明显的题1.3 定位找不到出题句的题 2 对比选项两点2.1 接收信息2.2 对比信息 3 选择题答案特点4 评估选项5 选择题的固有缺陷5.…...

23.8.8 杭电暑期多校7部分题解

1008 - H.HEX-A-GONE Trails 题目大意 有两个玩家和一棵树&#xff0c;初始状态玩家一和玩家二分别在两个点 x , y x,\space y x, y&#xff0c;每次操作可以走一个与当前点有连边并且双方都没走到过的点&#xff0c;问最后是谁赢 解题思路 因为不能走走过的点&#xff0c…...

《24海南大学835软件工程考研经验贴》

1.经验之谈 首先&#xff0c;我是一个二战的考生&#xff0c;一战给我带来的经验有几点。第一&#xff0c;数学、专业课这两门越早复习越好&#xff0c;越拖到后面你就会发现来不及了&#xff0c;这学不完&#xff0c;那学不完的。第二、我认为是比较关键的一点&#xff0c;一定…...

【yolo系列:运行报错AttributeError: module ‘torch.nn‘ has no attribute ‘Mish‘】

最近运行yolov7报错AttributeError: module ‘torch.nn‘ has no attribute ‘Mish‘ 网上搜罗了一系列的报错方法但是都不怎么好解决&#xff0c;那么在这里给出具体解决方法&#xff0c;以及一些别人的参考文章。 这里先解释自己的&#xff0c;然后再给出别人的相对应的报错…...

Leetcode 剑指 Offer II 039. 直方图最大矩形面积

题目难度: 困难 原题链接 今天继续更新 Leetcode 的剑指 Offer&#xff08;专项突击版&#xff09;系列, 大家在公众号 算法精选 里回复 剑指offer2 就能看到该系列当前连载的所有文章了, 记得关注哦~ 题目描述 给定非负整数数组 heights &#xff0c;数组中的数字用来表示柱状…...

SpringBoot案例-部门管理-修改

目录 前言 查看页面原型&#xff0c;明确需求 页面原型 需求 阅读接口文件 思路分析 功能接口开发 控制层&#xff08;Controller类&#xff09; 业务层&#xff08;Service类&#xff09; 业务类 业务实现类 持久层&#xff08;Mapper类&#xff09; 接口测试 前…...

element-ui表格数据为空,图片占位提示

当表格的绑定数据为空时常需要显示暂无数据等字样&#xff0c;这时候就用到了empty-text <el-table:data"tableData"stripeborderempty-text"暂无数据"> 但&#xff0c;当数据为空&#xff0c;想用图片展示呢&#xff0c;如下图 方法一&#xff1a…...

C++ STL vector 模拟实现

✅<1>主页&#xff1a;我的代码爱吃辣 &#x1f4c3;<2>知识讲解&#xff1a;C之STL &#x1f525;<3>创作者&#xff1a;我的代码爱吃辣 ☂️<4>开发环境&#xff1a;Visual Studio 2022 &#x1f4ac;<5>前言&#xff1a;上次我们已经数字会用…...

51单片机学习--红外遥控(外部中断)

需要利用下面这个红外接收头&#xff0c;OUT口会发出红外信号对应的高低电平&#xff0c;由于发送的速度很快&#xff0c;所以需要把OUT引脚接在外部中断引脚上&#xff0c;当OUT一旦产生下降沿&#xff0c;马上进中断&#xff0c;这样响应会更及时。 外部中断引脚位于P3_2和P…...

后端开发10.规格模块

概述 简介 效果图...

腾讯出了一个新聊天软件M8

众所周知&#xff0c;如今国内互联网&#xff0c;微信和QQ无疑是社交领域的霸主。 下载:https://www.123pan.com/s/BP5A-RW4xh.html 不过&#xff0c;它们也有各自局限性&#xff0c;比如难以结识新朋友、功能过于复杂等。 这让用户产生厌倦&#xff0c;再加上近几年AI、元宇…...

C++ QT(一)

目录 初识QtQt 是什么Qt 能做什么Qt/C与QML 如何选择Qt 版本Windows 下安装QtLinux 下安装Qt安装Qt配置Qt Creator 输入中文配置Ubuntu 中文环境配置中文输入法 Qt Creator 简单使用Qt Creator 界面组成Qt Creator 设置 第一个Qt 程序新建一个项目项目文件介绍项目文件*.pro样式…...

微信小程序时钟

微信小程序自定义时钟&#xff0c;模拟翻牌时钟。1、页面布局 <view class"date-time-box"><view class"date-box">{{nowDate}}</view><view class"time-box"><view><image class"pic01 {{move[0]?move…...

HttpRunner自动化工具之设置代理和请求证书验证

httprunner设置代理&#xff1a; httprunner 库本身没有提供设置代理的接口&#xff0c;但是底层使用了urllib.requests 等库&#xff0c;可以设置HTTP_PROXY 和HTTPS_PROXY 环境变量&#xff0c;常用的网络库会自动识别这些环境变量。 日常调试使用代理&#xff08;如charles…...

opsForHash() 与 opsForValue 请问有什么区别?

&#x1f449;&#xff1a;&#x1f517;官方API参考手册 如图&#xff0c;opsForHash()返回HashOperations<K,HK,HV>但是 opsForValue()返回ValueOperations<K,V>… 区别就是opsForHash的返回值泛型中有K,HK,HV,其中K是Redis指定的某个数据库里面某一个关键字(由…...

测试微信模版消息推送

进入“开发接口管理”--“公众平台测试账号”&#xff0c;无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息&#xff1a; 关注测试号&#xff1a;扫二维码关注测试号。 发送模版消息&#xff1a; import requests da…...

进程地址空间(比特课总结)

一、进程地址空间 1. 环境变量 1 &#xff09;⽤户级环境变量与系统级环境变量 全局属性&#xff1a;环境变量具有全局属性&#xff0c;会被⼦进程继承。例如当bash启动⼦进程时&#xff0c;环 境变量会⾃动传递给⼦进程。 本地变量限制&#xff1a;本地变量只在当前进程(ba…...

Xshell远程连接Kali(默认 | 私钥)Note版

前言:xshell远程连接&#xff0c;私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...

条件运算符

C中的三目运算符&#xff08;也称条件运算符&#xff0c;英文&#xff1a;ternary operator&#xff09;是一种简洁的条件选择语句&#xff0c;语法如下&#xff1a; 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true&#xff0c;则整个表达式的结果为“表达式1”…...

C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。

1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj&#xff0c;再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...

项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)

Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败&#xff0c;具体原因是客户端发送了密码认证请求&#xff0c;但Redis服务器未设置密码 1.为Redis设置密码&#xff08;匹配客户端配置&#xff09; 步骤&#xff1a; 1&#xff09;.修…...

VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP

编辑-虚拟网络编辑器-更改设置 选择桥接模式&#xff0c;然后找到相应的网卡&#xff08;可以查看自己本机的网络连接&#xff09; windows连接的网络点击查看属性 编辑虚拟机设置更改网络配置&#xff0c;选择刚才配置的桥接模式 静态ip设置&#xff1a; 我用的ubuntu24桌…...

Python Einops库:深度学习中的张量操作革命

Einops&#xff08;爱因斯坦操作库&#xff09;就像给张量操作戴上了一副"语义眼镜"——让你用人类能理解的方式告诉计算机如何操作多维数组。这个基于爱因斯坦求和约定的库&#xff0c;用类似自然语言的表达式替代了晦涩的API调用&#xff0c;彻底改变了深度学习工程…...

Xela矩阵三轴触觉传感器的工作原理解析与应用场景

Xela矩阵三轴触觉传感器通过先进技术模拟人类触觉感知&#xff0c;帮助设备实现精确的力测量与位移监测。其核心功能基于磁性三维力测量与空间位移测量&#xff0c;能够捕捉多维触觉信息。该传感器的设计不仅提升了触觉感知的精度&#xff0c;还为机器人、医疗设备和制造业的智…...

【深度学习新浪潮】什么是credit assignment problem?

Credit Assignment Problem(信用分配问题) 是机器学习,尤其是强化学习(RL)中的核心挑战之一,指的是如何将最终的奖励或惩罚准确地分配给导致该结果的各个中间动作或决策。在序列决策任务中,智能体执行一系列动作后获得一个最终奖励,但每个动作对最终结果的贡献程度往往…...