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的字典序 ...
随机推荐
- Writing in the science: Introducion
1.what makes a good writing? 2.what makes a good writer? 1) have something to say 2) logical thinkin ...
- Nginx 路由转发和反向代理 location 配置
Nginx 配置的三种方式 第一种直接替换 location 匹配部分 第二种 proxy_pass 的目标地址,默认不带 /,表示只代理域名,url 和参数部分不会变(把请求的 path 拼接到 p ...
- 【Java】网络编程之NIO
简单记录 慕课网-解锁网络编程之NIO的前世今生 & 一站式学习Java网络编程 全面理解BIO/NIO/AIO 内容概览 文章目录 1.[了解] NIO网络编程模型 1.1.NIO简介 1. ...
- Github Python计算器开源项目 二次开发--增加函数图形
先上原项目链接:https://github.com/xhf79/Calculator_pyqt python+Qt 开发的计算器 原项目界面和功能如图所示: 科学计算的内容基本都有,但按照项目的提示 ...
- 阿里云 RTC QoS 屏幕共享弱网优化之若干编码器相关优化
屏幕共享是视频会议中使用频率最高的功能之一,但在实际场景中用户所处网络环境复杂,常遇到丢包或者拥塞的情况,所以如何优化弱网环境下的用户体验也成为了音视频通信中重要的一环.本文主要分享阿里云 RTC Q ...
- Mysql简要概述
Mysql学习笔记 Mysql简介: Mysql是一个轻量级关系型数据库管理系统,由瑞典Mysql AB公司开发,目前属于Oracle公司.目前Mysql被广泛地应用在Internet上的中小型网 ...
- Hive常用性能优化方法实践全面总结
Apache Hive作为处理大数据量的大数据领域数据建设核心工具,数据量往往不是影响Hive执行效率的核心因素,数据倾斜.job数分配的不合理.磁盘或网络I/O过高.MapReduce配置的不合理等 ...
- Apache环境下强制http跳转至https的配置总结
一. 简单实例介绍一般来说,apache配置好http和https后,如果想要做http强转到https,需要设置url重定向规则,大致需要下面几个步骤即可完成配置: 1)在httpd.conf文件里 ...
- 整合阿里云OSS
整合阿里云OSS 一.对象存储OSS 为了解决海量数据存储与弹性扩容,采用云存储的解决方案- 阿里云OSS. 1.开通"对象存储OSS"服务 (1)申请阿里云账号 (2)实名认证 ...
- Webpack4.0各个击破(1)html篇
webpack作为前端最火的构建工具,是前端自动化工具链最重要的部分,使用门槛较高.本系列是笔者自己的学习记录,比较基础,希望通过问题 + 解决方式的模式,以前端构建中遇到的具体需求为出发点,学习we ...