Codeforces Round #666 (Div. 2) Power Sequence、Multiples of Length 思维
题目链接:Power Sequence
题意:
给你n个数vi,你可以对这个序列进行两种操作
1、可以改变其中任意个vi的位置,无成本
2、可以对vi进行加1或减1,每次操作成本为1
如果操作之后的vi(设v数组下标从1到n)满足:如果存在一个数c,使得每一个vi都满足vi==ci
你需要输出这个满足题意得vi数组构成所需的最小成本
题解:
题目要求1<=ai<1e9,那么可以说所有vi都加起来得数量级是1e9,那么也就说如果cn,那么c这个数就不可取
因为我们c可以取1,那么成本最大也是在1e9数量级
所以就暴力枚举c因子就行,这个c得范围我随便定了一个范围,具体见代码
代码:

1 #include<stdio.h>
2 #include<string.h>
3 #include<algorithm>
4 #include<iostream>
5 using namespace std;
6 typedef long long ll;
7 const int maxn=1e5+10;
8 const int INF=1e9;
9 char s[maxn];
10 ll v[maxn];
11 long long pf(ll a, ll b)
12 {
13 ll res = 1;
14 while (b--)
15 res *= a;
16 return res;
17 }
18 int main()
19 {
20 ll n;
21 scanf("%lld",&n);
22 v[0]=1;
23 for(ll i=1; i<=n; ++i)
24 {
25 scanf("%lld",&v[i]);
26 }
27 sort(v+1,v+n+1);
28 ll sum;
29 sum=100000000000000;
30 if (n >= 36)
31 {
32 sum = 0;
33 for (ll i = 1; i <= n; i++)
34 sum += v[i] - 1;
35 printf("%lld\n", sum);
36 return 0;
37 }
38 for (ll k = 1; k <= 100000; k++)
39 {
40 long long temp = 0, flag = 1,tmp=1;
41 for (ll i = 1; i <= n; i++)
42 {
43 if (tmp >= n * 1000000000)
44 {
45 flag = 0;
46 break;
47 }
48 temp += abs(v[i] - tmp);
49 tmp*=k;
50 }
51 if (flag)
52 sum = min(temp, sum);
53 }
54 printf("%lld\n",sum);
55 return 0;
56 }
题目链接:Multiples of Length
题意:
给你n个数vi,每次操作你可以选取一个区间[l,r],区间长度len=r-l+1,那么你可以对这个区间内的vi加上len的倍数,这个倍数可以是负数,即-1*len
你必须要在3个操作内使得所有vi变为0,请输出这3个操作
题解:
我们设v数组下标从1到n,你可以先对区间[1,n-1]上的vi都加上(n-1)*vi,那么再使v[n]变成n*v[n]。那么最后在对区间[1,n]内的所有vi减去n*vi就行
代码:

1 #include<stdio.h>
2 #include<string.h>
3 #include<algorithm>
4 #include<iostream>
5 using namespace std;
6 typedef long long ll;
7 const int maxn=1e5+10;
8 const int INF=1e9;
9 ll v[maxn];
10 int main()
11 {
12 ll n;
13 scanf("%lld",&n);
14
15 for(ll i=1;i<=n;++i)
16 {
17 scanf("%lld",&v[i]);
18 }
19 if(n==1)
20 {
21 printf("1 1\n");
22 printf("%lld\n",-1*v[1]);
23 printf("1 1\n0\n");
24 printf("1 1\n0\n");
25 return 0;
26 }
27 printf("1 %lld\n",n-1);
28 for(ll i=1;i<n;++i)
29 {
30 if(i==n-1)
31 printf("%lld\n",(n-1)*v[i]);
32 else printf("%lld ",(n-1)*v[i]);
33 }
34
35 printf("%lld %lld\n",n,n);
36 printf("%lld\n",n*v[n]-v[n]);
37
38 printf("1 %lld\n",n);
39 for(ll i=1;i<=n;++i)
40 {
41 if(i==n)
42 printf("%lld\n",-1*n*v[i]);
43 else printf("%lld ",-1*n*v[i]);
44 }
45 return 0;
46 }
Codeforces Round #666 (Div. 2) Power Sequence、Multiples of Length 思维的更多相关文章
- Codeforces Round #556 (Div. 2) - C. Prefix Sum Primes(思维)
Problem Codeforces Round #556 (Div. 2) - D. Three Religions Time Limit: 1000 mSec Problem Descripti ...
- Codeforces Round #666 (Div. 2)
比赛链接:https://codeforces.com/contest/1397 A. Juggling Letters 题意 给出 $n$ 个字符串,可在字符串间任意移动字母,问最终能否使这 $n$ ...
- Codeforces Round #666 (Div. 2) B. Power Sequence (枚举)
题意:有一个长度为\(n\)的序列,你每次可以对序列重新排序,然后花费\(1\)使某个元素加减\(1\),多次操作后使得新序列满足\(a_{i}=c^i\),\(c\)是某个正整数,求最小花费. 题解 ...
- Codeforces Round #666 (Div. 2) C. Multiples of Length (构造,贪心)
题意:有一个长度为\(n\)的序列,可以操作\(3\)次,每次选取一段区间,然后区间的元素加减区间长度的倍数,\(3\)次操作后使得序列所有元素为\(0\),问具体操作情况. 题解:假如我们能选择一整 ...
- Codeforces Round #666 (Div. 2) C. Multiples of Length (贪心)
题意:给你一个由\(0,1,?\)组成的字符串,你可以将\(?\)任意改成\(0\)或\(1\),问你操作后能否使得该字符串的任意长度为\(k\)的区间中的\(0\)和$1的个数相等. 题解:我们首先 ...
- Codeforces Round #514 (Div. 2) C. Sequence Transformation(递归)
C. Sequence Transformation 题目链接:https://codeforces.com/contest/1059/problem/C 题意: 现在有1~n共n个数,然后执行下面操 ...
- Codeforces Round #506 (Div. 3) D. Concatenated Multiples
D. Concatenated Multiples You are given an array aa, consisting of nn positive integers. Let's call ...
- Codeforces Round #514 (Div. 2) C. Sequence Transformation 思维构造
题意 给出一个1-n的集合 gcd 集合里面的所有数 得到的 一个 数 然后自己选择删去一个数 要使得到的数 构成的数列 的字典序最大 思路: gcd所有数 那gcd得到的数肯定要小于数 ...
- Codeforces Round #514 (Div. 2) C. Sequence Transformation
题目大意:给你一个n 从1,2,3......n这个序列中 依次进行以下操作:1 .求所有数的最大公因数,放入a序列里面 2 .任意删去一个元素 一直到序列为空 根据删除元素的不同,导致序列a的字典序 ...
随机推荐
- 【SpringBoot1.x】SpringBoot1.x Web 开发
SpringBoot1.x Web 开发 文章源码 简介 SpringBoot 非常适合 Web 应用程序开发.可以使用嵌入式 Tomcat,Jetty 或 Undertow 轻松创建独立的 HTTP ...
- Cloudera Manager添加主机节点
为了监控方便,想把研发环境中的主机节点都纳入Cloudera Manager的管理中,这样在遇到问题时可方便的查看主机的硬件资源情况. 添加主机节点有多种方式,由于我是离线工作,所以选择rpm包的方式 ...
- 使用ogg实现oracle到postgresql表的实时同步
参考:https://docs.oracle.com/goldengate/c1221/gg-winux/index.html https://blog.51cto.com/hbxztc/188071 ...
- pg_rman的安装与使用
1.下载对应数据库版本及操作系统的pg_rman源码 https://github.com/ossc-db/pg_rman/releases 本例使用的是centos6.9+pg10,因此下载的是pg ...
- BAPI_MATERIAL_BOM_GROUP_CREATE创建BOM
天使用BAPI函数:BAPI_MATERIAL_BOM_GROUP_CREATE创建BOM组数据,过程中发现很多问题啊.总结如下: BOMGROUP VARIANTS 这两个参数必须要传 ...
- 20V,24V转5V,20V,24V转3.3V降压芯片,IC介绍
常用的20V和24V转5V,3.3V的LDO稳压和DC-DC降压芯片: PW6206系列是一款高精度,高输入电压,低静态电流,高速,低压降线性稳压器具有高纹波抑制.输入电压高达40V,负载电流高达10 ...
- Vue的核心思想
Vue的核心思想主要分为两部分: 1.数据驱动 2.组件系统 1.数据驱动 在传统的前端交互中,我们是通过Ajax向服务器请求数据,然后手动的去操作DOM元素,进行数据的渲染,每当前端数据交互变化时 ...
- 白日梦的Elasticsearch实战笔记,ES账号免费借用、32个查询案例、15个聚合案例、7个查询优化技巧。
目录 一.导读 二.福利:账号借用 三._search api 搜索api 3.1.什么是query string search? 3.2.什么是query dsl? 3.3.干货!32个查询案例! ...
- vue的nuxt框架中使用vue-video-player
一.基本需求:使用nuxt框架,需要在移动端网页中播放视频. 二.文中解决的基本问题: 1.vue-video-player在nuxt中怎么使用. 2.由于为了适配移动端,使用了 ...
- 提供个HDFS的目录的路径,对该目录进行创建和删除操作。创建目录时,如果目录 文件所在目录不存在则自动创建相应目录;删除目录时,由用户指定当该目录不为空时是否还删 除该目录
import java.io.IOException; import java.util.Scanner; import org.apache.hadoop.fs.*; public class G_ ...