
题目(Luogu): [ICPC2024 Xi’an I] ICPC2024 邀请赛西安站重现赛
PDF(适于打印): The 2024 ICPC China Shaanxi National Invitational Programming Contest
注意:PDF 版题目由本人根据 Luogu 题面使用
以下就按照 A 题顺序来讲吧:
Problem J. Triangle
给你一个两个直角边分别在
轴,直角顶点在原点的直角三角形,求它占了几个格子(一个格子如果有 的面积在三角形里面,则被称为所占的格子)
可以看到数据范围并不大,因此我们可以设斜边方程为
注意此题卡精度(照我的写法是要开 long double
的)。
1 | long double a, b; |
Problem M. Chained Lights
1
2
3
4
5
6 void press(int x)
{
light[x]^=1;
for (int y=x+x;y<=n;y+=x) press(y);
}
for (int i=1;i<=n;i++) press(i);优化上述代码。
纯纯的诈骗题。
首先 No
……
很明显能看出来这是和因数有关的,不妨分类讨论:素数(p): 只会在 press(1)
和 press(p)
的时候操作两次,所以灯的状态不变;合数: 除开
1 | puts(k == 1 ? "YES" : "NO"); |
Problem F. XOR Game
博弈论。
题面挺抽象的,读了好几遍才读懂(也有可能是英语差。
首先:对于一个数 Alice 先手,如果有奇数个,Alice 总可得到(以下简称达到目的为赢),有偶数个,则 Bob 赢,这还是比较显然的。