CF1647D Madoka and the Best School in Russia(数论,dp,离散化技巧)
题目链接
题意
给定 1e9 以内的正整数 n,d,问 n 能否由至少两种不同的方式由漂亮数相乘得到;
漂亮数的定义为:能被 d 整除,但不能被 d * d 整除;
思路
n 有一系列数相乘得到,则每一个数都是 n 的因子,可以把 n 的因子枚举出,然后做完全背包,即可的得到 n 的方案数;
1e9 以内的数的因子数最多 1300 多个,完全可以枚举;在背包之前需要对因子离散化,但对 1e9 以内的数做离散化,我们开不下 1e9 的数组,如果用 map 的话,会多一个 log 的时间复杂度;从 dls 那学了一种方法:我们以 1e5 为界,开两个数组分别存 1e5 之前以及 1e5 之后的元素的离散化值,看代码比较容易懂;
//mx为1e5,id存1e5之前数的离散化值,gid存1e5之后数的离散化值
for(int i = 1 ;i <= cnt ;i++){if(factor[i] <= mx) id[factor[i]] = i;else gid[n / factor[i]] = i;
}
之后就是完全背包的操作了;
代码
#include <bits/stdc++.h>using namespace std;
typedef long long ll;int f[100010];
int factor[1400],cnt;
int id[100010],gid[100010];
int mx=100010;int main()
{ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);int _;cin>>_;while(_--){memset(f,0,sizeof(f));cnt=0;ll n,d;cin>>n>>d;for(int i=1;i*i<=n;i++){if(n%i==0){factor[++cnt]=i;if(i*i!=n) factor[++cnt]=n/i;}}sort(factor+1,factor+cnt+1);for(int i=1;i<=cnt;i++){if(factor[i]<=mx) id[factor[i]]=i;else gid[n/factor[i]]=i;}f[1]=1;for(int i=1;i<=cnt;i++){if(factor[i]%d==0&&(factor[i]/d)%d!=0){for(int j=1;j<=cnt;j++){if((n/factor[i])%factor[j]) continue;int x=factor[i]*factor[j];int y;if(x<=mx) y=id[x];else y=gid[n/x];f[y]=f[y]+f[j];}}}if(f[cnt]>=2) cout<<"YES\n";else cout<<"NO\n";}return 0;
}
CF1647D Madoka and the Best School in Russia(数论,dp,离散化技巧)相关推荐
- [因子背包] CF1647D Madoka and the Best School in Russia
由这次的D题从杜老师那学会的比较新奇的背包,我暂且将其命名为因子背包 题意: 一个数xxx被称为好数,当且仅当他被ddd整除而不被d2d^2d2整除. 给定一个数nnn,问是否有超过两种组成方式,让它 ...
- 【CodeForces - 1647D】Madoka and the Best School in Russia(分类讨论,因数分解)
题目链接 题意: 判断一个数nnn,能否有至少两种方法将其表示为 n=a1a2...akn=a_1a_2...a_kn=a1a2...ak(k>=1k>=1k>=1),需要满足 ...
- Codeforces Round #777 (Div. 2)
7月19日 A Madoka and Math Dad B Madoka and the Elegant Gift C Madoka and Childish Pranks A Madoka and ...
- Codeforces Round #777 (Div. 2) 简训
Codeforces Round #777 (Div. 2) 简训 导语 涉及的知识点 题目 A Madoka and Math Dad B Madoka and the Elegant Gift C ...
- Codeforces Round #777 (Div. 2) (A-D题解)
源代码:ACM/OpenjudgeNow/Codeforces at master · abmcar/ACM (github.com) 更好的阅读体验: 折跃坐标 碎碎念:不亏是俄罗斯场+二次元出题人 ...
- Codeforces Round #777 (Div. 2) 题解
Codeforces #777 题解 这次带上了大佬前来验题xs 公开大佬珍贵的代码资源供参考 TOC A.Madoka and Math Dad B.Madoka and the Elegant G ...
- 【CF #777 div2】A—D
A. Madoka and Math Dad 题解:拆分成2.1.找到能生成的最大值即可. #include<bits/stdc++.h> using namespace std; con ...
- CF1717D Madoka and The Corruption Scheme
CF1717D Madoka and The Corruption Scheme Summary: 二项式.二进制路径.(逆元) Day 20220907 距离 CSPS 43Days 距离 NOIP ...
- Madoka and Childish Pranks(贪心)
Madoka and Childish Pranks 题意 : 这题的意思有点难懂,大概题意是,原本有n ∗ m 的网格,然后每次操作只能按棋盘图案操作,就是只能画一个类似棋盘的图案,比如样例1,第一 ...
最新文章
- kalilinux安装VMware Tools(水文)
- UCLA李婧翌:女性最不需要做的就是「怀疑自己」| 妇女节特辑
- 驰骋工作流引擎设计系列10时效考核规则设计
- context存放内容_Go语言爱好者周刊:第 58 期—关于 context
- 第三方快递接口API调用
- 4 [面向对象]-三大特性:多态
- 正向代理 smtp imap_Nginx代理模式及区别
- 树莓派串口通信编码_树莓派和STM32通过USB和串口通信记录
- VS2019配置opencv教程【推荐】
- ArcGIS Pro地图制图之符号化和地图标注
- 360Hbase二级索引
- Comet:基于 HTTP 长连接的“服务器推”技术
- Android 字体引入
- order by a desc,b desc与order by a,b desc不同
- 科技岗位日趋增长,能成为女性职业选择的新可能吗?
- jquery ul li 操作
- MySQL练习题 答案和解析
- 安装hisuite后,依然无法连接华为手机,驱动无法正确安装
- 学习Android怎么在未来站稳脚跟
- 基于php校园医院门诊管理系统获取(php毕业设计)
热门文章
- C++中string类函数常用函数大全
- python 随机森林分类 DecisionTreeClassifier 随机搜索优化参数 GridSearchCV
- 由DatePicket和TimePicker扩展延伸其他控件
- 人工智能 识别医疗票据、医疗结算清单 OCR识别技术
- canvas之刮刮乐
- 容联云聚客SCRM如何破SCRM保险应用困局
- 鸿蒙渊主线任务,《天下3》更新公告(版本2.0.848)
- 基于Python打印文字到桌面壁纸上的提醒学习小程序
- CoreML遇到的问题和原因
- 22届春招实习试水之路汇总(前端+后端)