ABC367
A
link
先判断一下时间是否跨天,如果跨天了,把后一个加上
神奇的代码
#include<bits/stdc++.h>
using namespace std;
signed main(){
int a,b,c;
cin >> a >> b >> c;
if(b > c) c += 24;
if(b <= a&&a <= c||b <= a+24&&a+24 <= c) cout << "No";
else cout << "Yes";
return 0;
}
B
link
输入后再用
神奇的代码
#include<bits/stdc++.h>
using namespace std;
signed main(){
double x;
cin >> x;
cout << x;
return 0;
}
C
link
搜索即可,每个数按从小到大搜,输出的一定是字典序从小到大的。
神奇的代码
#include<bits/stdc++.h>
using namespace std;
int n,k;
int r[10];
int sum,res[10];
void dfs(int x){
if(x > n){
if(sum%k == 0){
for(int i = 1;i <= n;++ i)
cout << res[i] << " ";
cout << endl;
}
return;
}
for(int i = 1;i <= r[x];++ i){
res[x] = i;
sum += i;
dfs(x+1);
sum -= i;
}
}
signed main(){
cin >> n >> k;
for(int i = 1;i <= n;++ i) cin >> r[i];
dfs(1);
return 0;
}
D
link
化环为链。
我们把长度为
这里如果是
首先,考虑如果在环上的要求:从前边段这个的后面走到它才行,否则会有绕圈。其次,考虑是
那么我们可以用一个桶存
神奇的代码
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,m;
int a[200005];
int qzh[400005];
int g[1000005];
int ans;
signed main(){
cin >> n >> m;
for(int i = 1;i <= n;++ i){
cin >> a[i];
qzh[i] = (qzh[i-1]+a[i])%m;
}
for(int i = 1;i <= n;++ i){
qzh[n+i] = (qzh[n+i-1]+a[i])%m;
}
for(int i = 1;i <= n;++ i) g[qzh[i]]++;
for(int i = n+1;i <= 2*n;++ i){
g[qzh[i-n]]--;
ans += g[qzh[i]];
g[qzh[i]]++;
}
cout << ans;
return 0;
}
E
link
倍增。
我们用倍增的思想,用
神奇的代码
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,k;
int x[200005][64];
int a[200005];
signed main(){
cin >> n >> k;
for(int i = 1;i <= n;++ i) cin >> x[i][0];
for(int i = 1;i <= n;++ i) cin >> a[i];
for(int i = 1;i <= 63;++ i){
for(int l = 1;l <= n;++ l){
x[l][i] = x[x[l][i-1]][i-1];
}
}
for(int i = 1;i <= n;++ i){
int p = i;
int t = k;
int lg = 0;
while(t){
if(t&1){
p = x[p][lg];
}
lg++;
t >>= 1;
}
cout << a[p] << " ";
}
return 0;
}
F
link
哈希,如果单纯是和的话太容易卡了,那么我们用和和平方和,可是还是会被卡,那么我们把
点击查看代码
#include<bits/stdc++.h>
#define int unsigned long long
using namespace std;
int n,q;
int a[200005],b[200005];
int w[200005];
int qa[200005],qb[200005];
int pa[200005],pb[200005];
//mt19937 随机生成[0,2^32)的
//mt19937_64 随机生成[0,2^64)的
mt19937_64 r(114514);
signed main(){
cin >> n >> q;
for(int i = 1;i <= n;++ i)
w[i] = r();
for(int i = 1;i <= n;++ i){
cin >> a[i];
qa[i] = qa[i-1]+w[a[i]];
pa[i] = pa[i-1]+w[a[i]]*w[a[i]];
}
for(int i = 1;i <= n;++ i){
cin >> b[i];
qb[i] = qb[i-1]+w[b[i]];
pb[i] = pb[i-1]+w[b[i]]*w[b[i]];
}
while(q--){
int al,ar,bl,br;
cin >> al >> ar >> bl >> br;
if(ar-al == br-bl
&&qa[ar]-qa[al-1] == qb[br]-qb[bl-1]
&&pa[ar]-pa[al-1] == pb[br]-pb[bl-1])
cout << "Yes\n";
else cout << "No\n";
}
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!