2026“钉耙编程”中国大学生算法设计春季联赛(4)
1007 Turn Of A Page Problem Description 有一本共有 nnn 页的魔法书,以及一个神奇的数字 SSS。魔法书的每一页都有一个魔力值。其中第 iii 页的魔力值为 aia_iai。 称一个页码 RRR 为神奇的,当且仅当至少存在一个页码 LLL(1≤L≤R1 \le L \le R1≤L≤R),满足 ∑i=LRai=S\sum_{i=L}^{R} a_i = S i=L∑Rai=S 如果书中每一页都是神奇的,则称这本书为神奇的魔法书。 现在,你可以重新打乱数组 aaa。问是否存在一种重排,使得得到的书是神奇的魔法书? 如果存在这样的重排,请输出 YES,否则输出 NO。 Input 输入包含多组测试数据。 第一行包含一个整数 TTT(1≤T≤1051 \le T \le 10^51≤T≤105),表示测试数据的组数。 对于每组测试数据: 第一行包含一个整数 nnn(1≤n≤1051 \le n \le 10^51≤n≤105)和一个整数 SSS(0≤S≤1090 \le S \le 10^90≤S≤109),表示魔法书的页数和神奇数字 ...
2026“钉耙编程”中国大学生算法设计春季联赛(5)
1005 老骥伏枥 Problem Description 2026 丙午马年,一位少年骑手报名参加马拉松骑行挑战赛。赛道上的打卡点以正整数编号 (1,2,3,…)(1,2,3,\ldots)(1,2,3,…),若两个打卡点的编号 i,ji,ji,j 满足 popcount(i⊕j)=1\operatorname{popcount}(i \oplus j)=1popcount(i⊕j)=1,则它们之间有一条长度为 111 的赛道。 少年从 111 号打卡点出发,目标是到达 nnn 号打卡点。请你帮他算出最短路的长度。 其中 popcount(x)\operatorname{popcount}(x)popcount(x) 表示 xxx 在二进制下 111 的个数,⊕\oplus⊕ 表示按位异或。 Input 输入 TTT(1≤T≤5⋅1041 \le T \le 5 \cdot 10^41≤T≤5⋅104),表示数据组数。 接下来 TTT 行,每行一个正整数 nnn(1≤n≤1091 \le n \le 10^91≤n≤109)。 Output 对于每组数据,输出一行一个整数,...
2026“钉耙编程”中国大学生算法设计春季联赛(6)
1003 绩点查询 Problem Description 期末考试结束了,小 Z 想通过自己的平时分和期末分计算自己的绩点 GPAGPAGPA,具体的绩点计算方式如下。 平时分和期末分均为不超过 100100100 的自然数,记平时分为 S1S_1S1,期末分为 S2S_2S2。 当期末分 S2S_2S2 低于 454545 时,被判定为挂科,绩点为 000(即 GPA=0GPA = 0GPA=0),否则计算总分 S=⌈0.6×S1+0.4×S2⌉S = \lceil 0.6 \times S_1 + 0.4 \times S_2 \rceilS=⌈0.6×S1+0.4×S2⌉,然后根据总分计算绩点: GPA={5,S≥955−0.1(95−S),60≤S<950,0≤S<60GPA = \begin{cases} 5, & S \ge 95 \\ 5 - 0.1(95 - S), & 60 \le S < 95 \\ 0, & 0 \le S < 60 \end{cases} GPA=⎩⎨⎧5,5−0.1(95−S)...
Dijkstra算法
邻接矩阵存储 适用情况:稠密图,即边数 E 接近顶点数 V 的平方时,空间利用率高。 时间复杂度:O(n2)O(n^2)O(n2) 空间复杂度:O(n2)O(n^2)O(n2) 邻接矩阵存储写法 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162#include <bits/stdc++.h>using namespace std;const int N = 510;int n, m, x, y, z;int a[N][N], dis[N];bool vis[N];int dijkstra(){ //因为要找最近的点,所以所有点距离1点距离初始化为极大值 memset(dis, 0x3f, sizeof dis); //标记第一个点距离1号点距离为0 dis[1] = 0; //vis[1] = true加上这行第一次循环就标记不出t for (int i = 1; i <...
课程报告:Dijkstra 算法与大数据应用
课程:《数据科学与大数据技术导论》 班级:25 数据科学与大数据技术(单招) 学号:25131129 姓名:周泓霖 引言 图论作为离散数学的重要分支,在计算机科学中具有广泛应用,尤其在网络分析、路径规划、社交网络挖掘、交通调度等领域中发挥着关键作用。其中,最短路算法是图论中经典且基础的问题求解工具,例如 Dijkstra 算法、Bellman-Ford 算法和 Floyd-Warshall 算法。 Dijkstra 算法由艾兹格·迪杰斯特拉提出,常用于解决非负权图的单源最短路径问题。它以贪心思想为基础,通过不断选取当前距离源点最近且尚未确定最短路的顶点,并利用该顶点更新其他相邻顶点的距离,最终求出源点到图中各顶点的最短路径。 本文将围绕图的基本概念、图的存储方式、贪心算法思想、Dijkstra 算法原理、算法复杂度以及其在大数据中的应用展开说明。 一、图的概念及存储 1. 图的概念 在计算机科学中,图(Graph)是一种用于表示物体与物体之间关系的数据结构。一个图通常由两个集合构成: 顶点(Vertex):表示研究对象或实体; 边(Edge):表示顶点之间的关系。 一条边...
南京晓庄学院第一次月赛
P14584 [LNCPC 2025] 点击平衡球 题目背景 Z 形管道猫推荐您来玩平衡球(Ballance)。在游戏中,玩家要操纵一个可以改变自身材质(即物理性质)的球在由路面和机关构成的庞大而复杂的迷宫建筑中穿梭,避开陷阱、运用机关并破解一个个谜题,最终到达终点。 题目描述 平衡球有 333 种材质(纸球、木球、石球)。在游戏中,平衡球需要通过 nnn 个机关,每个机关各自只允许特定一些材质的平衡球通过。初始,您需要花费 111 单位的代价将平衡球选定为一种材质。在通过每个机关前,您可以花费 111 单位的代价将平衡球切换为另一种材质,也可以不花费代价保持当前材质。 现在您可以任意安排机关的通过顺序,请您求出平衡球通过这 nnn 个机关所需的最小代价。 输入格式 第一行给定一个整数 n(1≤n≤100)n(1\le n\le 100)n(1≤n≤100),表示机关总数。 接下来 nnn 行,每行给定三个整数 ai,1,ai,2,ai,3(ai,1,ai,2,ai,3∈{0,1})a_{i,1},a_{i,2},a_{i,3}(a_{i,1},a_{i,2},a_{i,3}\i...
牛客2025秋季算法编程训练联赛5-基础组
(2条未读私信) 牛客2025秋季算法编程训练联赛5-基础组_ACM/NOI/CSP/CCPC/ICPC算法编程高难度练习赛_牛客竞赛OJ C 牛牛战队的秀场 1.首先需要知道pai的精确表示方法:acos(−1.0)acos(-1.0)acos(−1.0) 2.解三角形c^2 = a^2+b^2-2ab cosC 用二倍角公式化简完成后得:c = 2r sin(pai / n) 求得边长 3.左右两边都可以走相当于一个环,没必要用循环移位,可以用O(1)O(1)O(1)写出来。 123456789101112131415161718192021#include <bits/stdc++.h>using namespace std;const double pai = 3.1415926;int r, n, i, j;int main(){ cin >> n >> r >> i >> j; double len = 2 * r * sin(acos(-1.0) / n); int diff = abs(i ...
牛客周赛 Round 134
比赛链接 A if-else判断即可 1234567891011121314151617181920212223#include <bits/stdc++.h>using namespace std;#define IO ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);typedef long long ls;typedef unsigned long long uls;#define endl '\n'const int N = 2e5 + 10;const int M = 1e3 + 10;void sol(){ int x; cin >> x; if (x <= 1599){ cout << "Rated" << endl; } else{ cout << "Unrated" << endl; }}int main()...
2025蓝桥杯省B题解
洛谷题库链接 T1 题目链接 想要严格证明可能有点困难,但是可以猜。设原点为A,终点为B,从A一直向右走,走和AB长度相等的距离点C后使用一次圆周移动到达点B,最后形成的图形是一个扇形,答案就是AC+CB(弧长)。就算过程中需要用到C++数学库里的atan函数,最后要四舍五入。 123456789101112131415161718#include <bits/stdc++.h>using namespace std;#define endl '\n'#define IO ios::sync_with_stdio(0); cin.tie(0);typedef long long ls;const int N = 1e5 + 10;const double eps = 1e-5;void sol(){ double l = sqrt(233*233+666*666); double a = atan(666.0/233); cout << (ls)(a*l+l) << endl;}int main()...
2026牛客寒假算法基础集训营2
比赛链接 A 题目链接 首先以ABC顺序排,看最后剩下的至多两个类型的比赛的数量,如果有至少一个比赛数量>=2,那么为NO,否则为YES。 123456789101112131415161718192021222324#include <bits/stdc++.h>using namespace std;int t;void sol(){ int a, b, c, t; cin >> a >> b >> c; t = min(min(a, b), c); a -= t, b -= t, c -= t; if (a >= 2 || b >= 2 || c >= 2){ cout << "NO" << endl; } else{ cout << "YES" << endl; }}int main(){ ...