Avito Cool Challenge 2018 :E. Missing Numbers
E. Missing Numbers
题目链接:https://codeforces.com/contest/1081/problem/E
题意:
现在有n个数(n为偶数),但只给出a2,a4....an的信息,要求你求出a1,a2....an。
假设前n项的和为Sn,那么满足S1,S2....Sn都为平方项。
题解:
假设S1=a^2,S2=b^2,S3=c^2,S4=d^2,因为我们已知a2,a4,所以得出a2=S2-S1=b^2-a^2,a4=d^2-c^2。
我们可以根据我们设的未知数推出a1=a^2,a3=c^2-b^2。
最后我们将这个推广可以推出a1,a3....an-1的表达式可以根据a0,a2...an得出,这里我们令a0=0。
现在的任务就是找每个数的因子,因为b^2-a^2=(b+a)*(b-a)。这里我们直接预处理一下就好了~
然后我们维护一下之前那个数的b^2(较大平方项),在找当前这个数的c^2(较小平方项),根据这个相减就可以求出他们中间的ai了~
代码如下:
#include <bits/stdc++.h>
#define mx 2e5
using namespace std;
typedef long long ll;
const int N =2e5+;
ll a[N];
int n;
vector <int> Div[N];
int main(){
cin>>n;
for(int i=;i<=n;i+=) scanf("%I64d",&a[i]);
for(int i=;i<=mx;i++)
for(int j=i;j<=mx;j+=i) Div[j].push_back(i); //nlogn预处理
ll last = ;
for(int i=;i<=n;i+=){
ll mn=2e18;
for(auto v:Div[a[i]]){
int d=a[i]/v;
if(d%==v%){
ll now = (max(d,v)-min(d,v))/;
if(now*now>last)
mn = min(mn,now*now);
}
}
if(mn==2e18){
puts("No");return ;
}
a[i-]=mn-last;
last = a[i]+mn;
}
puts("Yes");
for(int i=;i<=n;i++){
printf("%I64d ",a[i]);
}
return ;
}
Avito Cool Challenge 2018 :E. Missing Numbers的更多相关文章
- Avito Cool Challenge 2018 E. Missing Numbers 【枚举】
传送门:http://codeforces.com/contest/1081/problem/E E. Missing Numbers time limit per test 2 seconds me ...
- Codeforces Avito Code Challenge 2018 D. Bookshelves
Codeforces Avito Code Challenge 2018 D. Bookshelves 题目连接: http://codeforces.com/contest/981/problem/ ...
- Avito Cool Challenge 2018
考挂了.. A - Definite Game 直接看代码吧. #include<cstdio> #include<cstring> #include<algorithm ...
- Avito Cool Challenge 2018(div1+2)
A. Definite Game: 题意:输入N,输出最小的结果N-x,其中x不少N的因子. 思路:N=2时,输出2:其他情况输出1:因为N>2时,N-1不会是N的因子. #include< ...
- Avito Cool Challenge 2018 Solution
A. Definite Game 签. #include <bits/stdc++.h> using namespace std; int main() { int a; while (s ...
- Avito Code Challenge 2018
第一次打CF,很菜,A了三道水题,第四题好像是是数位DP,直接放弃了.rateing从初始的1500变成了1499,还是绿名,这就很尴尬.之后觉得后面的题目也没有想象的那么难(看通过人数)过两天吧剩下 ...
- Avito Cool Challenge 2018 自闭记
A:n==2?2:1. #include<iostream> #include<cstdio> #include<cmath> #include<cstdli ...
- Avito Cool Challenge 2018 C. Colorful Bricks 【排列组合】
传送门:http://codeforces.com/contest/1081/problem/C C. Colorful Bricks time limit per test 2 seconds me ...
- Avito Cool Challenge 2018 B. Farewell Party 【YY】
传送门:http://codeforces.com/contest/1081/problem/B B. Farewell Party time limit per test 1 second memo ...
随机推荐
- vue组件封装及父子组件传值,事件处理
vue开发中,把有统一功能的部分提取出来,作为一个独立的组件,在需要使用的时候引入,可以有效减少代码冗余.难点在于如果封装,使用,如何传参,派发事件等,我会采取倒叙的方式进行说明.(本文总结于Vue2 ...
- linux文件共享之samba,nfs的搭建
Samba server简介 Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成.SMB(Server Messages Block,信息服务块)是一种在局 ...
- 以CentOS为操作系统的vps或服务器安装lnmp运行环境的方法
安装步骤: 1.使用putty或类似的SSH工具登陆VPS或服务器: 登陆后运行:screen -S lnmp 如果提示screen: command not found 命令不存在可以执行:yum ...
- 477. Total Hamming Distance
class Solution { public: int totalHammingDistance(vector<int>& nums) { ; ; i < ; i++) { ...
- ubuntu安装wine 和sourceinsght
ubuntu安装wine: 1.sudo apt-get update 2.sudo apt-get install wine 安装完成后会在当前用户目录的的家目录下生成.wine目录,该目录就是wi ...
- html_parser.py
coding=UTF-8 # HTML解释器 import re from bs4 import BeautifulSoup class htmlParser(): def parse(self, u ...
- Flume使用(案例分析)
Flume官方文档 Usage: bin/flume-ng <command> [options]... commands: help display this help text age ...
- 绿盟python测试实习面试
1.简历问题 低级错误:时间写错 最近好像越来越马大哈了,总是犯低级错误. 上次的开题报告首页,这次的时间,每次都有小问题,确是大毛病 到底哪里出错了 2 RHCE证书好像没有用 面试官根本就不懂这个 ...
- CentOS7配置图形界面及设置vnc远程连接、windows远程桌面连接
安装CentOS桌面 yum groupinstall "GNOME Desktop" 重启,进入终端,将启动模式变更为图形模式 systemctl set-default gra ...
- C语言库函数实现 【微软面试100题 第八十三题】
题目要求 1.strcpy/memcpy/memmove: 2.memset函数: 3.字符串处理函数. 题目分析 1.接口定义: char * strcpy(char * dest, const c ...