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的字典序 ...
随机推荐
- Flutter 基础组件:进度指示器
前言 Material 组件库中提供了两种进度指示器:LinearProgressIndicator和CircularProgressIndicator,它们都可以同时用于精确的进度指示和模糊的进度指 ...
- Java远程下载文件到本地(http协议和ssh2协议)
Java中java.io包为我们提供了输入流和输出流,对文件的读写基本上都依赖于这些封装好的关于流的类中来实现.前段时间遇到了以下两种需求: 1.与某系统对接,每天获取最新的图片并显示在前端页面.该系 ...
- Centos 6 下安装 OSSEC-2.8.1 邮件告警 (二)
Ossec 配置邮件通知 ## 1 安装软件包: yum install -y sendmail mailx cyrus-sasl cyrus-sasl-plain #安装postfix邮件相关的软件 ...
- Ubuntu 18.04.4 LTS 更换国内系统源
Ubuntu 18.04.4 LTS 更换国内系统源 1.1) 好习惯先做备份在干活: mv /etc/apt/sources.list /etc/apt/sources.list.bak 1.2) ...
- 使用 C# 9 的records作为强类型ID - JSON序列化
在本系列的上一篇文章中,我们注意到强类型ID的实体,序列化为 JSON 的时候报错了,就像这样: { "id": { "value": 1 }, "n ...
- 19.java设计模式之备忘录模式
基本需求 游戏的角色有攻击力和防御力,在大战Boss之前保存自身的状态(攻击力和防御力),当大战Boss之后攻击力和防御力下降,从备忘录对象恢复到大战前的状态 传统方案 一个对象,就对应一个保存对象状 ...
- kernel升级模式RKS让人振奋
前几天刚将我的ERP内核从701_rel 升级到721_ext_rel,看到721的说明了讲到,对于这次的更新,支持RKS(Rolling Kernel Switch)了,简单的讲,就是以后对于内核的 ...
- Sentry(v20.12.1) K8S 云原生架构探索,JavaScript 性能监控之采样 Transactions
系列 Sentry-Go SDK 中文实践指南 一起来刷 Sentry For Go 官方文档之 Enriching Events Snuba:Sentry 新的搜索基础设施(基于 ClickHous ...
- Hive常用性能优化方法实践全面总结
Apache Hive作为处理大数据量的大数据领域数据建设核心工具,数据量往往不是影响Hive执行效率的核心因素,数据倾斜.job数分配的不合理.磁盘或网络I/O过高.MapReduce配置的不合理等 ...
- Vue之事件绑定
Vue事件绑定 点击事件 @click="事件名" or v-on:click="事件名" 结构部分: <el-button type="pri ...