2025牛客寒假算法基础集训营第二场补题
H-一起画很大的圆
题意
给定一个矩形区域,在矩形的边界上找到 3 个整数点,使得过这 3 个点画出的圆面积最大,输出这三个点的坐标。
思路
三个不共线的点确定一个圆。
如果这三个点越接近一条直线,这个圆最大。
要使得圆尽可能大,那么这三个点尽量趋近于在一条直线上,就是三个点连成的角尽可能大,越接近 180° 越优。
- 横着的矩形
- (a,d-1), (b-1,d), (b,d),其他的方位也行
- 竖着的矩形
- (a,c), (a,c+1), (a+1,d),其他的方位也行
// https://ac.nowcoder.com/acm/contest/95334/H
// 三点依次连线,越趋近于一条直线,所在圆的半径就越大
// 就是说三点构成的角度越接近180°,答案越优,就是钝角
// 1:横着的矩形
// (a,d-1), (b-1,d), (b,d),其他的方位也行
// 2:竖着的矩形
// (a,c), (a,c+1), (a+1,d),其他的方位也行
#include <bits/stdc++.h>
using namespace std;
// #define int long long
int t, n, m;
void solve()
{
int a, b, c, d;
cin >> a >> b >> c >> d;
int x = b - a, y = d - c;
if (x >= y)
{
cout << a << " " << d - 1 << "\n";
cout << b - 1 << " " << d << "\n";
cout << b << " " << d << "\n";
}
else
{
cout << a << " " << c << "\n";
cout << a << " " << c + 1 << "\n";
cout << a + 1 << " " << d << "\n";
}
}
signed main()
{
ios::sync_with_stdio(false);
cin.tie(0), cout.tie(0);
t = 1;
cin >> t;
while (t--)
{
solve();
}
return 0;
}
C-字符串外串
题意:
构造长度为 n,可爱程度恰好为 m 的字符串,如果可以,输出任意一种解;否则输出 NO。
可爱程度定义为字符串存在 子串 a,可以由两个或两个以上不相邻的子串 b1, b2... 组成,其中子串 a 的最长长度就是可爱程度。
思路
首先,不能构造出 aa......bb 这样存在两个及以上连续相同的字母作为开头或者结尾的情况,因为这样的最长子串 a 的长度必是 n-1。
假设子串 a 的尾巴与原字符串尾巴相同,那么只需要往子串 a 的前面找,并且每一种字母最多只能出现一次,否则子串 a 的长度可以变长,也就是 n - m 必须 >= 26,所以 n-m < 26 无解;
除此之外,容易知道,m=n 也是无解。
那么子串 a 的前面部分我们知道构造了,就是 a~z(实际到 'a'+n-m) 开头,子串 a 开始循环这个字符串,就构造出了长度为 n 的字符串。
简单来说就是 'a' + i % (n-m)。
// https://ac.nowcoder.com/acm/contest/95334/C
// 构造 'a' + i % (n-m)
#include <bits/stdc++.h>
using namespace std;
// #define int long long
int t, n, m;
void solve()
{
cin >> n >> m;
if(n==m || n-m>26)
{
cout<<"NO\n";
return ;
}
cout<<"YES\n";
for(int i=0;i<n;i++)
{
cout<<(char)('a'+i%(n-m));
}
cout<<"\n";
}
signed main()
{
ios::sync_with_stdio(false);
cin.tie(0), cout.tie(0);
t = 1;
cin >> t;
while (t--)
{
solve();
}
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话