题目链接: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 思维的更多相关文章

  1. Codeforces Round #556 (Div. 2) - C. Prefix Sum Primes(思维)

    Problem  Codeforces Round #556 (Div. 2) - D. Three Religions Time Limit: 1000 mSec Problem Descripti ...

  2. Codeforces Round #666 (Div. 2)

    比赛链接:https://codeforces.com/contest/1397 A. Juggling Letters 题意 给出 $n$ 个字符串,可在字符串间任意移动字母,问最终能否使这 $n$ ...

  3. Codeforces Round #666 (Div. 2) B. Power Sequence (枚举)

    题意:有一个长度为\(n\)的序列,你每次可以对序列重新排序,然后花费\(1\)使某个元素加减\(1\),多次操作后使得新序列满足\(a_{i}=c^i\),\(c\)是某个正整数,求最小花费. 题解 ...

  4. Codeforces Round #666 (Div. 2) C. Multiples of Length (构造,贪心)

    题意:有一个长度为\(n\)的序列,可以操作\(3\)次,每次选取一段区间,然后区间的元素加减区间长度的倍数,\(3\)次操作后使得序列所有元素为\(0\),问具体操作情况. 题解:假如我们能选择一整 ...

  5. Codeforces Round #666 (Div. 2) C. Multiples of Length (贪心)

    题意:给你一个由\(0,1,?\)组成的字符串,你可以将\(?\)任意改成\(0\)或\(1\),问你操作后能否使得该字符串的任意长度为\(k\)的区间中的\(0\)和$1的个数相等. 题解:我们首先 ...

  6. Codeforces Round #514 (Div. 2) C. Sequence Transformation(递归)

    C. Sequence Transformation 题目链接:https://codeforces.com/contest/1059/problem/C 题意: 现在有1~n共n个数,然后执行下面操 ...

  7. 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 ...

  8. Codeforces Round #514 (Div. 2) C. Sequence Transformation 思维构造

    题意 给出一个1-n的集合   gcd 集合里面的所有数  得到的 一个 数   然后自己选择删去一个数   要使得到的数 构成的数列 的字典序最大 思路: gcd所有数 那gcd得到的数肯定要小于数 ...

  9. Codeforces Round #514 (Div. 2) C. Sequence Transformation

    题目大意:给你一个n 从1,2,3......n这个序列中 依次进行以下操作:1 .求所有数的最大公因数,放入a序列里面 2 .任意删去一个元素 一直到序列为空 根据删除元素的不同,导致序列a的字典序 ...

随机推荐

  1. Flutter 应用入门:路由管理

    路由(Route)在移动开发中通常指页面(Page),这跟web开发中单页应用的Route概念意义是相同的,Route在Android中通常指一个Activity,在iOS中指一个ViewContro ...

  2. 阿里云OSS整合

    一.对象存储OSS 为了解决海量数据存储与弹性扩容(主要是静态文件的存储例如图片,语音,视频等),项目中我们通常采用云存储的解决方案- 阿里云OSS. 1.开通"对象存储OSS"服 ...

  3. Vue基础语法与指令

    项目初始化 用vscode打开终端,输入npm init -y生成package.json 然后安装vue npm install vue 需要注意的是,我遇到了这个问题 出现原因:文件夹名和生成的p ...

  4. Empire

    Empire 内网渗透神器 一 基本渗透 安装 git clone https://github.com/BC-SECURITY/Empire/ ./setup/install.sh 启动 ./emp ...

  5. 私有镜像仓库Harbor基础介绍与部署

    企业级私有镜像仓库Harbor 一:介绍 Harbor,是一个英文单词,意思是港湾,港湾是干什么的呢,就是停放货物的,而货物呢,是装在集装箱中的,说到集装箱,就不得不提到Docker容器,因为dock ...

  6. 为什么会有 AtomicReference ?

    我把自己以往的文章汇总成为了 Github ,欢迎各位大佬 star https://github.com/crisxuan/bestJavaer 我们之前了解过了 AtomicInteger.Ato ...

  7. 集成Redis缓存

    一.简介 1.场景 由于首页数据变化不是很频繁,而且首页访问量相对较大,所以我们有必要把首页数据缓存到redis中,减少数据库压力和提高访问速度. 2.RedisTemplate Jedis是Redi ...

  8. 2021/1/20随记,MTU

    背景: 事情是这样的,客户2台防火墙部署了ipsec,内网互通,但是其中ssh以及其他大命令之类的操作就会卡住,简单的vi命令可以使用. 解决: 排除网络问题,因为内网互通,其次是系统层面问题,最终定 ...

  9. 中文电子病历命名实体识别(CNER)研究进展

    中文电子病历命名实体识别(CNER)研究进展 中文电子病历命名实体识别(Chinese Clinical Named Entity Recognition, Chinese-CNER)任务目标是从给定 ...

  10. python_3 装饰器之初次见面

    装饰器 定义:本质是函数,(只不过是用来装饰其他函数而已),就是为其他函数添加附加功能 原则: 1. 不能修改被修饰函数的源代码 2.不能修改被修饰函数的调用方式 实现装饰器的知识储备 1.函数即&q ...