E1. Send Boxes to Alice (Easy Version)】的更多相关文章

发送盒子给Alice(简单版本) 题意:准备n个盒子放巧克力,从1到n编号,初始的时候,第i个盒子有ai个巧克力. Bob是一个聪明的家伙,他不会送n个空盒子给Alice,换句话说,每个盒子里面都有巧克力. Alice不喜欢互质集,如果这里存在一个整数k > 1,每个盒子里的巧克力数量都能被k整除,那么Alice会很高兴. Alice不介意这里有空盒子. 每次操作可以把一个盒子里的巧克力放置在相邻两个盒子里,即第i个盒子里的巧克力可以放在第i + 1和i - 1盒子里. 如果这里没有方法使得Al…
#include <bits/stdc++.h> using namespace std; typedef long long ll; ; int a[N]; int n; bool prime(int x) {//判断是否为质数 ; i*i <= x; i++) { ) return false; } return true; } ll solve(int x) { vector<int>b; ll ans = ; ; i <= n; i++) { &&…
题解: 保存每个1的位置.然后记录1的总个数cnt,如果存在一个k使得这个k是每个集合的倍数,那么为了使操作次数最小,这个k应该是cnt的质因子.(因为都是每个集合的数目1,使每个集合的数目变为2需要的次数一定小于使每个集合数目变为4需要的次数) 枚举cnt的质因子x,即x个1构成一个新的集合.构成新集合的时候要是两边的1往中间凑(中位数).剩下的就暴力... #include<bits/stdc++.h> using namespace std; typedef long long ll;…
Codeforces Round #601 (Div. 2) E2. Send Boxes to Alice (Hard Version) N个盒子,每个盒子有a[i]块巧克力,每次操作可以将盒子中的一块巧克力左移或右移,要求移动后的每个盒子中的巧克力数量都能被k整除(无视空盒子),求最小的操作数.(1<=N<=1e6,0<=a[i]<=1e6) 题解 k只需考虑巧克力总数的质因子 考虑每个盒子的贡献,盒子中可以保存k的整数倍(k*i)块巧克力,从左向右递推,每个盒子保留最大数目的…
题意 n个数字的序列a,将i位置向j位置转移x个(a[i]-x,a[j]+x)的花费为\(x\times |i-j|\),最终状态可行的条件为所有a[i]均被K整除(K>1),求最小花费 做法 \(sum=\sum\limits a\),则\(K|sum\) 有\(K1|sum,K2|sum\),若\(K1|K2\),则转移到被K1整除比转移到K2更优.这个是显然的,所以最终可能成为最优解的K个数为\(logsum\le 40\) 对于一个枚举到的K,将\(b[i]=a[i]\% K\) 对于b…
秒的有点难以理解:https://blog.csdn.net/weixin_42868863/article/details/103200132 #include<bits/stdc++.h> using namespace std; typedef long long ll; ; ; ll arr[N]; ll n; ll cal(ll x){ ll sum=,s=; ;i<=n;i++){ s=(s+arr[i])%x; sum+=min(s,x-s); } return sum;…
E. Send Boxes to Alice 首先求出每一个位置的前缀和. 对答案进行复杂度为\(\sqrt{a[n]}\)的遍历,因为最后的答案不可能大于\(\sqrt{a[n]}\) for(ll j=2;j*j<=a[n];++j) if(a[n]%j==0) { Try(j); while(a[n]%j==0) a[n]/=j; } 在Try(j)函数中,求的是当因子为\(j\)时的操作数量 void Try(ll k) { ll temp=0; for(int i=1;i<n;++i…
我们考虑前缀和sum[i],如果将a[i+1]中的一个塞入a[i]中,则不影响sum[i+1],但是sum[i]++,如果将a[i]中的一个塞入a[i+1],则不影响sum[i+1],但是sum[i]--,我们可以发现操作一次相当于将一个sum[i]+1或者到sum[i]-1,那么题意就变成了操作多少次可以使得所有的sum[i]为某一个k的倍数,那么一个sum[i]变成k的倍数操作次数最小必然为min(sum[i]%k,k-sum[i]%k),那么接下如何考虑k呢,显然k是sum[n]的一个因子…
E1. String Coloring (easy version) time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output This is an easy version of the problem. The actual problems are different, but the easy version is almost…
http://codeforces.com/problemset/problem/1216/E1 E1. Numerical Sequence (easy version) time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output The only difference between the easy and the hard ver…