题目链接:http://codeforces.com/contest/822/problem/D

题解:做这题首先要推倒一下f(x)假设第各个阶段分成d1,d2,d3...di组取任意一组来说,如果第i组有n个人参加分成di组那么所需要的为(n/di)*(di*(di-1)/2)=n*(di-1)/2

显然di还可以再分成两阶段di=a*b那么这样的价值就是(n/a)*(a*(a-1)/2)+((n/a)/b)*(b*(b-1)/2)=n*(a-1)/2+n*(b-1)/2a。其实还可以再分那么就要知道分到什么程度就是最小了n*(a-1)/2+n*(b-1)/2a<=n*(a-1)/2+n*(b-1)/2=n*(a+b-2)/2<=n*(a*b-1)/2=n*(di-1)/2也就是说它是越分越小的所以只有当di是素数的时候才是最小的,那么就简单了具体看一下代码。

#include <iostream>
#include <cstring>
#include <cstdio>
#include <cmath>
#define mod 1000000007
using namespace std;
typedef long long ll;
const int M = 5e6 + 10;
const ll inf = 1000000000;
const int maxn = 5000500;
int isPrime[maxn];
ll dp[M];
int prime[M];
void IsPrime(){
prime[2] = 2;
for(int i = 2 ; i < M ; i++)
prime[i] = i;
for(int i = 2 ; i * i < M ; i++)
if(prime[i] == i)
for(int j = i * i ; j < M ; j += i)
prime[j] = min(i , prime[j]);
}//利用素数筛求出每个数最小的素因子。 int main() {
int t , l , r;
scanf("%d%d%d" , &t , &l , &r);
IsPrime();
dp[1] = 0;
for(int i = 2 ; i <= r ; i++) {
dp[i] = inf * inf;
for(int j = i ; j != 1 ; j /= prime[j]) {
dp[i] = min(dp[i] , dp[i / prime[j]] + (ll)i * (prime[j] - 1) / 2);
}//利用公式n*(di-1)/2求值用来更新dp
}
ll ans = 0 , cnt = 1;
for(int i = l ; i <= r ; i++) {
dp[i] %= mod;
ans += dp[i] * cnt;
cnt *= t;
cnt %= mod;
ans %= mod;
}
printf("%lld\n" , (ans + mod) % mod);
return 0;
}

codeforces 822 D. My pretty girl Noora(dp+素数筛)的更多相关文章

  1. Codeforces 264B Good Sequences(DP+素数筛)

    题目链接:http://codeforces.com/problemset/problem/264/B 题目大意:给出n个单调递增的数,让你找出最长的好序列,好序列是一种单调递增的并且相邻元素的最大公 ...

  2. POJ 3132 DP+素数筛

    Sum of Different Primes Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 3684   Accepted ...

  3. Codeforces 219D. Choosing Capital for Treeland (树dp)

    题目链接:http://codeforces.com/contest/219/problem/D 树dp //#pragma comment(linker, "/STACK:10240000 ...

  4. [CodeForces - 1272D] Remove One Element 【线性dp】

    [CodeForces - 1272D] Remove One Element [线性dp] 标签:题解 codeforces题解 dp 线性dp 题目描述 Time limit 2000 ms Me ...

  5. codeforces 569C C. Primes or Palindromes?(素数筛+dp)

    题目链接: C. Primes or Palindromes? time limit per test 3 seconds memory limit per test 256 megabytes in ...

  6. Codeforces Round #257 (Div. 1) C. Jzzhu and Apples (素数筛)

    题目链接:http://codeforces.com/problemset/problem/449/C 给你n个数,从1到n.然后从这些数中挑选出不互质的数对最多有多少对. 先是素数筛,显然2的倍数的 ...

  7. Codeforces 385C - Bear and Prime Numbers(素数筛+前缀和+hashing)

    385C - Bear and Prime Numbers 思路:记录数组中1-1e7中每个数出现的次数,然后用素数筛看哪些能被素数整除,并加到记录该素数的数组中,然后1-1e7求一遍前缀和. 代码: ...

  8. Codeforces Round #511 (Div. 2)-C - Enlarge GCD (素数筛)

    传送门:http://codeforces.com/contest/1047/problem/C 题意: 给定n个数,问最少要去掉几个数,使得剩下的数gcd 大于原来n个数的gcd值. 思路: 自己一 ...

  9. codeforces 822 C. Hacker, pack your bags!(思维+dp)

    题目链接:http://codeforces.com/contest/822/submission/28248100 题解:多维的可以先降一下维度sort一下可以而且这种区间类型的可以拆一下区间只要加 ...

随机推荐

  1. 对Rust所有权、借用及生命周期的理解

    Rust的内存管理中涉及所有权.借用与生命周期这三个概念,下面是个人的一点粗浅理解. 一.从内存安全的角度理解Rust中的所有权.借用.生命周期 要理解这三个概念,你首要想的是这么做的出发点是什么-- ...

  2. [AI开发]目标检测之素材标注

    算力和数据是影响深度学习应用效果的两个关键因素,在算力满足条件的情况下,为了到达更好的效果,我们需要将海量.高质量的素材数据喂给神经网络,训练出高精度的网络模型.吴恩达在深度学习公开课中提到,在算力满 ...

  3. Code blocks返回错误代码:Process returned -1073741819 (0xC0000005)

    循环语句访问链表时,返回了错误代码: 逐项排查后,发现是由while循环引起的: 附上出错代码: do{ L=L->post; printf("%05d %d %05d\n" ...

  4. Spring的依赖注入和管理Bean

    采用Spring管理Bean和依赖注入 1.实例化spring容器 和 从容器获取Bean对象 实例化Spring容器常用的两种方式: 方法一: 在类路径下寻找配置文件来实例化容器 [推荐使用] Ap ...

  5. js 双向绑定数据

    let aaa = []; let bbb = [1,2,3]; let ccc = [0,9,8]; aaa = bbb; //此时aaa与bbb被绑定(aaa指向bbb的指向) ,若使用push则 ...

  6. php sql 类似 mybatis 传参

    PHP sql 处理上,没有类似于 java mybatis 的工具,导致进行一些sql 处理时,会有诸多不便, 楼主抽时间写了一个 php 类似 mybatis 的sql 工具,省去了拼装sql 的 ...

  7. Golang高效实践之array、slice、map

    前言 Golang的slice类型为连续同类型数据提供了一个方便并且高效的实现方式.slice的实现是基于array,slice和map一样是类似于指针语义,传递slice和map并不涉及底层数据结构 ...

  8. abp(net core)+easyui+efcore实现仓储管理系统——使用 WEBAPI实现CURD (十三)

    abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统——ABP总体介绍(一) abp(net core)+ ...

  9. mui的app页面使用layui填充数据

    在mui的开发中有个坑,mui.plusReady在web上使用时是不会起作用的,只能在app上才行,所以推荐自己测试时使用mui.ready去写加载时的方法. 前端请求的返回格式为json,所以在后 ...

  10. 60701BMP彩色图像转化为灰度及二值图像

    1 概述 多媒体技术是一门综合了多种学科的新技术,其涉及到计算机科学与技术.通信和网络技术.人工智能技术.微电子技术.数字信号处理.图形处 理技术.声像技术等诸多学科.许多新技术的不断出现和体验,带给 ...