2022“杭电杯”中国大学生算法设计超级联赛(2)
1001 | 1002 | 1003 | 1004 | 1005 | 1006 | 1007 | 1008 | 1009 | 1010 | 1011 | 1012 | |
赛时过题 | O | O | O | O | O | O | ||||||
赛后补题 | 1 |
赛后感悟:
真没想到1003是一道披着难题的水题!暴力就能过!数据太水了!
有时候不要不敢交暴力,如果无论怎么都想不出正解且暴力复杂度感觉有机会卡过去那就试一下!
另外1011是真的没想到思路,真的不该花那么多时间去啃1011,1004和1008可能还更有机会一点。
总的来说,比赛前2小时一定要把所有题全部看一遍!不要死啃一道题一直到3小时以后还没看其他题!太晚开题的话思考题目的时间就不够了!
今天这场在比赛最后1个多小时一直在考虑1003,1011,可惜了,如果去做1004、1008可能就做出来了,不过比之前有进步,不会一直卡在同一题一直到比赛结束了!
赛时排名情况:
7题末尾:129名
8题末尾:79名
9题末尾:52名
1002 C++ to Python
题目难度:check-in
题目大意:删除字符串中的所有set::make_typle,然后输出
题目解析:读到's'就跳过15个字符
参考代码:
查看代码
#include<iostream>
#include<cstdio>
#include<cstring>
const int N=10000;
char s[N];
int main()
{
int T;scanf("%d",&T);
while (T--)
{
scanf("%s",s+1);int len=strlen(s+1);
int now=1;
while (now<=len)
{
if (s[now]=='s') now+=15;
else putchar(s[now++]);
}putchar('\n');
}
return 0;
}
1012 Luxury cruise ship
题目难度:easy
题目大意:T组数据。给一个数N,问这个数能否由若干7、31、365累加得到。
数据范围:T<=1000,1<=N<=1018
题目解析:考虑完全背包,但是N太大了。
再考虑贪心,将N不断减去365一直缩小到可接受范围再背包。
赛时经历:宇彬迅速发现可以把N对7*31*365取模,然后对0~7*31*365-1完全背包。
实际上这个做法会被hack,不过数据太水了我们就过了hhhh
参考代码(正解版):(待补)
1009 ShuanQ
题目难度:easy
题目大意:给定P,Q,encrypted_data,找出满足条件的质数M,满足M>max{P,Q,encrypted_data}且P*Q≡1(mod M),输出raw_data=encrypted_data*Q (mod M)
题目解析:P*Q≡1(mod M) 即 P*Q-1≡0(mod M) 即 P*Q-1是M的倍数 即 M是P*Q-1的因子
又要求M是质数,则找出P*Q-1的大于max{P,Q,encrypted_data}的质因子M即可
参考代码:
查看代码
#include <bits/stdc++.h>
#define x first
#define y second
#define int long long
using namespace std;
const int N = 2e6+10;
typedef long long LL;
typedef pair<int, int> PII;
int n, m, k, T;
bool st[N];
int prime[N], cnt;
signed main() {
for (int i = 2; i < N; i++) {
if (!st[i]) {
prime[cnt++] = i;
}
for (int j = 0; j < cnt&&prime[j] * i < N; j++) {
st[i*prime[j]] = 1;
if (i%prime[j] == 0)break;
}
}
int p, q, e;
int T;
cin >> T;
while (T--) {
cin >> p >> q >> e;
LL k = p * q - 1;
int f = 0;
for (int i=0; i <cnt; i++) {
int j = prime[i];
if (k%j == 0 ) {
if (j > max(p, max(q,e))) {
f = j;
break;
}
else {
while (k%j == 0)k /= j;
}
}
}
if (!f) {
if (k != 1) {
if (k > max(p, max(e,q)))f = k;
}
}
if (!f)puts("shuanQ");
else cout << e * q%f<<endl;
}
}
1007 Snatch Groceries
题目难度:easy
题目大意:在抢菜时客户端会向服务端发送请求,由于网络延迟及不同机器时钟不同步(每台机器需要定时通过NTP网络协议和某台有精准时间的服务器进行同步),服务器无法准确确定客户端什么时候发出请求,只能够确定一个时间区间保证客户端请求时间较大概率落于该区间内。
服务端将所有时间区间按时间顺序进行处理,一旦发现某两个时间区间有交集则终止程序。询问在程序终止前能处理几个客户端请求(一个请求对应一个时间区间)?
题目解析:最大的难点是超长的阅读理解,实际上只有最后两段是有用的。
按左端点排序所有时间区间,如果ri>=li+1,则发现了第一对有交集区间,服务端立刻终止程序。
参考代码:
查看代码
/*#if(__cplusplus == 201103L)
#include <unordered_map>
#include <unordered_set>
#else
#include <tr1/unordered_map>
#include <tr1/unordered_set>
namespace std
{
using std::tr1::unordered_map;
using std::tr1::unordered_set;
}
#endif*/
#include<bits/stdc++.h>
using namespace std;
long long T,n;
struct tu{
long long l,r;
}e[101000];
bool cmp(tu a,tu b)
{
return a.l<b.l;
}
int main()
{
cin>>T;
while(T--)
{
cin>>n;
for(long long i=1;i<=n;i++)
{
scanf("%lld%lld",&e[i].l,&e[i].r);
}
sort(e+1,e+1+n,cmp);
long long ans=0;
for(long long i=1;i<=n;i++)
{
if(i==n)
{
ans++;
}
else
{
if(e[i+1].l<=e[i].r)
{
break;
}
else
{
ans++;
}
}
}
printf("%lld\n",ans);
}
return 0;
}
1001 Static Query on Tree
题目大意:
1003 Copy
题目大意:
1004 Keychains
题目大意:
1005 Slayers Come
题目大意:
1008 Keyboard Warrior
题目大意:
1011 DOS Card
题目大意:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具