Codeforces Round #775 (Div. 2) D
2022/9/10 23:25:03
本文主要是介绍Codeforces Round #775 (Div. 2) D,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
D. Integral Array
正向不好做 我们考虑反着做
我们知道一个数x下取整 要是有k和x两个数的话[kx,kx+x-1]
我们能考虑到这样区间赋值 利用线段树可以做到O(clogc)
还有O(clogc)的做法就是暴力的来对于每一个x都遍历一遍其倍数 要是其倍数有值 那么我们必须拥有其倍数才行 否则NO
for (int i = 1; i <= n; i++) {
for (int j = i; j <= n; j += i) {
//do O(1)
}
}
这行代码是个级数 复杂度是O(nlogn)的 高数教过
#include <bits/stdc++.h> using namespace std; const int N = 2e5+10; const int M = 998244353; const int mod = 1000000007; #define int long long #define endl '\n' #define Endl '\n' #define YES cout<<"Yes"<<endl; #define NO cout<<"No"<<endl; #define _ 0 #define inf 0x3f3f3f3f3f3f3f3f #define fast ios::sync_with_stdio(false);cin.tie(nullptr); void solve() { int n,c;cin>>n>>c; vector<int>a(n+1),pre(c+1),loc(c+1); for(int i=1;i<=n;i++)cin>>a[i],loc[a[i]]++; for(int i=1;i<=c;i++)pre[i]=pre[i-1]+loc[i]; for(int i=1;i<=c;i++){ if(!loc[i])continue; for(int j=i;j<=c;j+=i){ int l=j,r=min(c,j+i-1); if(pre[r]-pre[l-1]>0&&loc[j/i]==0){NO return;} } } YES } signed main(){ fast int T;cin>>T; while(T--) { solve(); } return ~~(0^_^0); }
这篇关于Codeforces Round #775 (Div. 2) D的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-26怎么使用nsenter命令进入容器?-icode9专业技术文章分享
- 2024-12-26导入文件提示存在乱码,请确定使用的是UTF-8编码怎么解决?-icode9专业技术文章分享
- 2024-12-26csv文件怎么设置编码?-icode9专业技术文章分享
- 2024-12-25TypeScript基础知识详解
- 2024-12-25安卓NDK 是什么?-icode9专业技术文章分享
- 2024-12-25caddy 可以定义日志到 文件吗?-icode9专业技术文章分享
- 2024-12-25wordfence如何设置密码规则?-icode9专业技术文章分享
- 2024-12-25有哪些方法可以实现 DLL 文件路径的管理?-icode9专业技术文章分享
- 2024-12-25错误信息 "At least one element in the source array could not be cast down to the destination array-icode9专业技术文章分享
- 2024-12-25'flutter' 不是内部或外部命令,也不是可运行的程序 或批处理文件。错误信息提示什么意思?-icode9专业技术文章分享