Codeforces Round #422 (Div. 2) D. My pretty girl Noora 动态规划
来源:互联网 发布:android 屏保源码 编辑:程序博客网 时间:2024/05/16 09:07
题目链接: My pretty girl Noora
题目大意
选美比赛, 有n个人参加, 分成若干轮, 每轮分成多个小组, 每个小组人数必须相等, 每个小组要选出一个最美的, 选法是两两比较, 所以x个人的小组需要经过
设f(x)为总共有x个人参加, 最少的比较次数
给你一个t, l, r
求
范围:
思路
后来看了题解才做出来的
有一个重要的性质是分的小组个数一定要是质数, 才能得到最小比较次数, 证明很容易, 但是很难想到往这个方向证明
设dp[i] := i个人参赛总的最小比较次数
有dp[i] = min{dp[i/k]*k + k*k/2}, 其中k为i的所有质因数
然后就循环计算答案
代码
#include <bits/stdc++.h>using namespace std;const int MAXN = 1E7, mod = 1e9+7, INF = 1E9;typedef long long ll;int ip[MAXN+1];ll dp[MAXN];int main(){ int t, l, r; cin >> t >> l >> r; for(int i=2; i<=r; ++i) ip[i] = i; for(int i=2; i*i<=r; ++i) { if(ip[i] == i) { for(int j=i*i; j<=r; j+=i) { ip[j] = min(i, ip[j]); } } } dp[1] = 0; for(int j=2; j<=r; ++j) { dp[j] = 1ll*INF*INF; for(int x=j; x!=1; x/=ip[x]) { dp[j] = min(dp[j], 1ll*dp[j/ip[x]]*ip[x] + 1ll*ip[x]*(ip[x]-1)/2); } } ll ans = 0; ll tt = 1; for(int i=l; i<=r; ++i) { dp[i] %= mod; ans += dp[i] * tt; tt *= t; tt %= mod; ans %= mod; } cout << ans << endl; return 0;}
阅读全文
0 0
- Codeforces Round #422 (Div. 2) D. My pretty girl Noora 动态规划
- 【Codeforces Round #422 (Div. 2) D】My pretty girl Noora
- Codeforces Round #422 (Div. 2) D. My pretty girl Noora(数论)
- Codeforces Round #422 D. My pretty girl Noora (数论)
- CF Round #422( Div.1/2) D. My pretty girl Noora
- codeforces 822D My pretty girl Noora
- Codeforces 822 D. My pretty girl Noora 数学+dp
- 【Codeforces 822D. My pretty girl Noora】+ 数论
- 【数论】codeforces 822D My pretty girl Noora
- 822D My pretty girl Noora
- D. My pretty girl Noora(Round422)
- 【埃式筛法】My pretty girl Noora CodeForces
- Codeforces 822 D. My pretty girl Noora(多项式加法+dp)
- D. My pretty girl Noora(数论,dp)
- codeforces 822 My pretty girl Noora(递推)
- CF822D:My pretty girl Noora(数论)
- my pretty girl
- Codeforces Round #370 (Div. 2) D. Memory and Scores 动态规划
- K小数查询主席树
- eclipse中使用sql语句
- 浅谈幅度调制(Amplitude Modulation)
- finished with non-zero exit value 1
- ssh免密登陆配置
- Codeforces Round #422 (Div. 2) D. My pretty girl Noora 动态规划
- Linux url调测工具--curl
- 第五章 常用Lua开发库3-模板渲染
- 剑指offer-二叉树中和为某一值的路径
- Linux下常用的C/C++开源Socket库
- ajax跨域请求springmvc传递json对象参数
- boost::static_pointer_cast、boost::dynamic_pointer_cast和boost::const_pointer_cast
- 同步与异步,阻塞与非阻塞
- Leetcode 309. Best Time to Buy and Sell Stock with Cooldown