Codeforces Round #601 (Div. 2)E(寻找质因子,DP)
先分解质因数,对于当前a[i],假设当前的质因数为x,这个位置要满足能被k整除,有两个可能,要么是它向后一个转移x%k个,要么是后一个向它转移k-x%k个。
对于每一个a[i]满足后,因为只会对下一个位置产生影响,所以下一个位置a[i+1]算上a[i]产生的影响,之后又是一个新的子问题(禁止套娃)。
对于每一个质因数x,对所有所有位置i求min(a[i],x-a[i])的和,取所有质因子i的求和的最小值作为答案。
- #define HAVE_STRUCT_TIMESPEC
- #include<bits/stdc++.h>
- using namespace std;
- long long a[];
- int main(){
- ios::sync_with_stdio(false);
- cin.tie(NULL);
- cout.tie(NULL);
- long long n;
- cin>>n;
- long long sum=;
- for(long long i=;i<=n;++i){
- cin>>a[i];
- sum+=a[i];
- }
- if(sum<=){
- cout<<-;
- return ;
- }
- long long ans=1e18;
- for(long long i=;i*i<=sum;++i){
- long long flag=;
- while(sum%i==){
- sum/=i;
- flag=;
- }
- if(flag){
- long long pre=,summ=;
- for(long long j=;j<=n;++j){
- pre=(a[j]+pre)%i;
- summ+=min(pre,i-pre);
- }
- ans=min(ans,summ);
- }
- }
- if(sum>){
- long long pre=,summ=;
- for(long long j=;j<=n;++j){
- pre=(a[j]+pre)%sum;
- summ+=min(pre,sum-pre);
- }
- ans=min(ans,summ);
- }
- cout<<ans;
- return ;
- }
Codeforces Round #601 (Div. 2)E(寻找质因子,DP)的更多相关文章
- 【cf比赛记录】Codeforces Round #601 (Div. 2)
Codeforces Round #601 (Div. 2) ---- 比赛传送门 周二晚因为身体不适鸽了,补题补题 A // http://codeforces.com/contest/1255/p ...
- Codeforces Round #367 (Div. 2) C. Hard problem(DP)
Hard problem 题目链接: http://codeforces.com/contest/706/problem/C Description Vasiliy is fond of solvin ...
- Codeforces Round #601 (Div. 2)
传送门 A. Changing Volume 签到. Code /* * Author: heyuhhh * Created Time: 2019/11/19 22:37:33 */ #include ...
- Codeforces Round #601 (Div. 2) E2. Send Boxes to Alice (Hard Version)
Codeforces Round #601 (Div. 2) E2. Send Boxes to Alice (Hard Version) N个盒子,每个盒子有a[i]块巧克力,每次操作可以将盒子中的 ...
- Codeforces Round #601 (Div. 2) E1 Send Boxes to Alice (Easy Version)
#include <bits/stdc++.h> using namespace std; typedef long long ll; ; int a[N]; int n; bool pr ...
- CF1103D Codeforces Round #534 (Div. 1) Professional layer 状压 DP
题目传送门 https://codeforces.com/contest/1103/problem/D 题解 失去信仰的低水平选手的看题解的心路历程. 一开始看题目以为是选出一些数,每个数可以除掉一个 ...
- Codeforces Round #601 (Div. 2) D Feeding Chicken
//为了连贯,采取一条路形式,从第一行开始 也就是s型 #include <bits/stdc++.h> using namespace std; ; char str[MAXN][MAX ...
- Codeforces Round #601 (Div. 2) C League of Leesins
把每一次输入的一组数字存下来,然后把每个数字出现的组数存下来 然后找只出现过一次的数字a,那么这个数字a不是开头就是结尾,默认为开头(是哪个都无所谓),然后去找和它出现在同一组的两个数字b和c,而b和 ...
- Codeforces Round #601 (Div. 2) B Fridge Lockers
//题目要求的是每一个点最少要有两条边连接,所以可以先构成一个环.然后再把剩余的最短的边连接起来 #include<iostream> #include<algorithm> ...
随机推荐
- SpringMVC进行Ajax请求页面显示乱码
最近在项目的使用过程中发现在springmvc的项目中,使用返回页面的请求方式,数据都能正常显示,但是对于ajax的请求,始终显示乱码. 首先第一种是因为我们在web.xml中配置了spring的字符 ...
- this.$nextTick
首先我们先来看看官方介绍的用法: 将回调延迟到下次 DOM 更新循环之后执行.在修改数据之后立即使用它,然后等待 DOM 更新. 它跟全局方法 Vue.nextTick 一样,不同的是回调的 this ...
- IntelliJ IDEA 2017.3尚硅谷-----配置 Tomcat
- 10day 字符集优化 重点
什么是字符编码: 可以实现对非英文字符的支持 计算机操作系统是谁发明的? --美国人--英语 支持中文比较好的编码: UTF-8 比较通用 GBK 比较国际通用 出现乱码的原因: 01. 系统字符集设 ...
- node 崩 处理
node_modules->bin webpack-dev-server.cmd @IF EXIST "%~dp0\node.exe" ( "%~dp0\node. ...
- HTML学习(4)属性
属性是HTML元素提供的附加信息,大多数标签都能设置属性,一般位于开始标签,以名称/值的方式出现,例:name="value". 值要放在引号内(单引号.双引号都可以),如果值包含 ...
- stm32f103中freertos的tasks基本使用案例及备忘
基本实例 freetos的在stm32中使用踩了一些坑,事情做完了,就 做个备忘,希望能给后面的人一些借鉴. 先给出一个实际的例子吧. 启动代码 void task_create(void) { ...
- es8中对string补白的方式
//允许将空字符串或其他字符串添加到原始字符串的开头或结尾for(let i = 1; i < 32; i++) { if(i < 10) { console.log(`0{i}`) }e ...
- css的理解 ----footrt固定在底部
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Linux06——安装JDK、Tomcat、Eclipse
一.安装JDK(具体解压命令在Linux02中) ①将JDK解压到opt目录下(opt就是文件夹) ②配置环境变量 vim /etc/profile JAVA_HOME=/opt/jdk1.8.0 ...