CF822D

【题目链接】CF822D

【题目类型】贪心+递推

&题意:

给你n个人,你可以把他们分组,但必须保持每组相等,分组之后每2个人会比赛,比如一组有i个人,那么就要比赛

次,f[i]:表示当人数为i时,随意分组,比赛最少的次数.现在我们要求

&题解:

这是cf评测机,所以只要可以吧f(i)求出来,剩下的模拟就行了,又只是单组输入,注意一下的就是 t^1 t^2 t^3 ...可以直接借助上一个te 乘t就是下一个了,然而当时我还在傻傻的想用快速幂 = =

f(i)怎么求呢? 我们可以先试着写出7,8个,就可以发现素数的时候不可以分,只能是1组,那么就一定是i * (i-1) / 2 不是素数的话就要想一想了,比如21, 它是由2个素数组成的,3 * 7 那分3组 还是分7组呢? 自己试下呗,你就会发现分7组是正确的,那么类比的推一下就发现每组个数越少越好,(这应该是有证明的,但我只会凭感觉..)所以只要找到最小的质因子就行了,之后也可以容易的得到dp方程 dp[i]=dp[t] * (i/t) + dp[i/t] 其中t是i的最小质因子 在要用最小质因子这块,我感觉算是贪心吧

&代码:

#include <cstdio>
#include <bitset>
#include <iostream>
#include <set>
#include <cmath>
#include <cstring>
#include <algorithm>
#include <map>
#include <queue>
#include <vector>
using namespace std;
#define INF 0x3f3f3f3f
#define ll long long
#define fo(i,a,b) for(int i=(a);i<=(b);i++)
#define fd(i,a,b) for(int i=(a);i>=(b);i--)
#define cle(a,v) memset(a,(v),sizeof(a))
const int maxn = 5e6 + 7, mod = 1e9 + 7;
bool nopri[maxn];
int l, r, f[maxn];
ll t;
vector<int> pri;
void mkno() {
for(int i = 2; i < maxn; i++) {
if(!nopri[i]) {
pri.push_back(i);
for(int j = i + i; j < maxn; j += i) {
nopri[j] = true;
}
}
}
}
int main() {
freopen("E:1.in", "r", stdin);
scanf("%lld%d%d", &t, &l, &r);
mkno();
for(int i = 2; i < maxn - 6; i++) {
if(!nopri[i]) {
f[i] = ((ll)i * (i - 1) / 2) % mod;
}
else {
int j;
for(auto x : pri) {
if(i % x == 0) {
j = x;
break;
}
}
int te = i / j;
f[i] = ((ll)f[j] * te + f[te]) % mod;
}
}
ll ans = 0, tp = 1;
for(int i = l; i <= r; i++) {
ans = (ans + tp * f[i]) % mod;
tp = (tp * t) % mod;
}
printf("%lld\n", ans);
return 0;
}

CF822D 贪心+递推的更多相关文章

  1. 【51Nod】1519 拆方块 贪心+递推

    [题目]1519 拆方块 [题意]给定n个正整数,\(A_i\)表示第i堆叠了\(A_i\)个石子.每轮操作将至少有一面裸露的石子消除,问几轮所有石子均被消除.\(n \leq 10^5\). [算法 ...

  2. codeforces 735C Tennis Championship(贪心+递推)

    Tennis Championship 题目链接:http://codeforces.com/problemset/problem/735/C ——每天在线,欢迎留言谈论. 题目大意: 给你一个 n ...

  3. 2019 ICPC南京网络赛 F题 Greedy Sequence(贪心+递推)

    计蒜客题目链接:https://nanti.jisuanke.com/t/41303 题目:给你一个序列a,你可以从其中选取元素,构建n个串,每个串的长度为n,构造的si串要满足以下条件, 1. si ...

  4. [NOI2017]蔬菜(贪心+递推)

    这题很有思维难度,乍一看基本无从下手. 给每个蔬菜钦定退役的时间显然很困难,可以考虑让时光倒流,从后向前递推,然后就变成了某个时间点有一部分蔬菜服役,而已经服役的蔬菜不会退役了.然后就可以直接考虑贪心 ...

  5. 第46套题【STL】【贪心】【递推】【BFS 图】

    已经有四套题没有写博客了.今天改的比较快,就有时间写.今天这套题是用的图片的形式,传上来不好看,就自己描述吧. 第一题:单词分类 题目大意:有n个单词(n<=10000),如果两个单词中每个字母 ...

  6. codeforce 227D Naughty Stone Piles (贪心+递归+递推)

    Description There are n piles of stones of sizes a1, a2, -, an lying on the table in front of you. D ...

  7. 【CF607B】Zuma——区间dp(记忆化搜索/递推)

    以下是从中文翻译成人话的题面: 给定一个长度小于等于500的序列,每个数字代表一个颜色,每次可以消掉一个回文串,问最多消几次可以消完? (7.16) 这个题从洛谷pend回来以后显示有103个测试点( ...

  8. 【BZOJ-2476】战场的数目 矩阵乘法 + 递推

    2476: 战场的数目 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 58  Solved: 38[Submit][Status][Discuss] D ...

  9. 从一道NOI练习题说递推和递归

    一.递推: 所谓递推,简单理解就是推导数列的通项公式.先举一个简单的例子(另一个NOI练习题,但不是这次要解的问题): 楼梯有n(100 > n > 0)阶台阶,上楼时可以一步上1阶,也可 ...

随机推荐

  1. Android+openCV 动态人脸检测

    动态人脸检测前提是需要打开摄像头. 网上看了很多教程,我知道的有两种方式打开摄像头: JavaCameraView mCameraView = new JavaCameraView(this, -1) ...

  2. javascript模板引擎template.js使用

    到GitHub上下载template.js库.引入到页面 以type="text/html" 这样指定javascript类型的是一种javascript模板渲染方法,在实际项目中 ...

  3. UOJ#195. 【ZJOI2016】大♂森林 LCT

    原文链接https://www.cnblogs.com/zhouzhendong/p/UOJ195.html 题解 首先询问都可以放到最后处理. 对于操作,我们把它差分一下离线下来. 现在的问题就是从 ...

  4. Excel 转为 MySQL 语句

    一.方法 一.假设你的表格有A.B.C三列数据,希望导入到你的数据库中表格table,对应的字段分别是col1.col2.col3 二.在你的表格中增加一列,利用excel的公式自动生成sql语句,具 ...

  5. bool值的底层应用场景

    这里我们的if 或者while,还有and,or,not 等都是在内部调用一个对象的bool方法,然后返回True或者是False, a = [0, ] # a = [] # print(bool(a ...

  6. 工作笔记——使用Jest时遇到的一些问题

    最近公司想要从mocha+karma的前端单元测试方式转换到Jest,然后任务就分配给我了,好吧,在这之前连单元测试是什么都不知道.硬生生的开始写单元测试了,写这篇文章的初衷是因为在配置Jest的过程 ...

  7. [Error]Python虚拟环境报错 OSError: setuptools pip wheel failed with error code 2

    mkvirtualenv py35 python新建虚拟环境报错,setuptools pip wheel failed with error code 2 刚好昨天在CentOS安装的时候也总是报s ...

  8. easy-ui 中的事件触发 (tree)

    easy-ui可以为插件添加事件,但没有触发事件的处理(可能是未找到),所以有时候,我们需要通过程序去触发某个插件指定的事件时,就一筹莫展了 以Tree插件为例 ,添加了onClick事件 jQuer ...

  9. Java 基础 Java平台的3个版本

    Java平台有3个版本:适用于小型设备和智能卡的JavaME(Java Platform Micro Edition,Java微型版).适用于桌面系统的JavaSE(Java Platform Sta ...

  10. vue_表单 input 的绑定

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...