NowCoder Wannafly 27E 黄魔法师 构造
原文链接https://www.cnblogs.com/zhouzhendong/p/NowCoder-Wannafly27E.html
题目传送门 - NowCoder Wannafly 27E
题意
给出 n, k,求一个长度为 n 的数组 a, 满足有恰好 k 对数对 (i, j) (1 <= i < j <= n) 满足 ai + aj 为完全平方数。如果不存在,输出 -1。
题解
首先考虑最大能构造多少:
容易发现,全部填 2 就是 n(n-1)/2 最大了。然后猜一猜小于等于这个的都是有解的。
首先,找到满足 m(m-1)/2<=k 的最大 m , 则 k = 1+2+ … + m + x
我们考虑构造这 m+1 个数来达到目的,假装其他的数不影响结果,设为 d 。
于是可以想到一种构造方案:
找到正整数 a,b,c,d ,满足:
a+b,a+a,b+b,b+c 是完全平方数
a+c,a+d,b+d,c+d,d+d,c+c 不是完全平方数。
那么,我们考虑分 x = 0 和 x>0 讨论:
如果 x = 0 ,那么直接放 m 个 a 然后其他的放 d 就好了。
如果 x > 0 ,那么放 m-x 个 a,x 个 b,放一个 c ,剩下的放 d 即可。
手造出这样的 abcd 比较麻烦,但是这样的 abcd 在 10w 范围内显然是很容易找的,直接写个代码暴搜即可。
由于 我太懒了,直接用了 珂爷 的: a=98,b=2,c=7 。我 d 随便取了个 1 。
话说 珂爷 太巨了,E 题一血虐场 Orz 。
代码
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const int N=100005;
LL read(){
LL x=0;
char ch=getchar();
while (!isdigit(ch))
ch=getchar();
while (isdigit(ch))
x=(x<<1)+(x<<3)+(ch^48),ch=getchar();
return x;
}
LL n,k;
int a=98,b=2,c=7,d=1;
vector <int> v;
int main(){
n=read(),k=read();
if (n*(n-1)/2<k)
return puts("-1"),0;
if (!k){
for (int i=1;i<=n;i++)
printf("1 ");
return 0;
}
v.clear();
while ((n-1)*(n-2)/2>=k){
v.push_back(d);
n--;
}
if (n*(n-1)/2==k)
for (int i=1;i<=n;i++)
v.push_back(a);
else {
v.push_back(c);
LL rem=k-(n-1)*(n-2)/2;
for (int i=1;i<=rem;i++)
v.push_back(b);
for (int i=n-1-rem;i>=1;i--)
v.push_back(a);
}
for (auto i : v)
printf("%d ",i);
return 0;
}
NowCoder Wannafly 27E 黄魔法师 构造的更多相关文章
- nowcoder wannafly 25 E:01串
E:01 串 链接 分析: 线段树维护转移矩阵.每个节点是一个矩阵,区间内的矩阵乘起来就是答案矩阵.矩阵乘法满足结合律,所以线段树维护. 代码: #include<cstdio> #inc ...
- 牛客 Wannafly 挑战赛26D 禁书目录 排列组合 概率期望
原文链接https://www.cnblogs.com/zhouzhendong/p/9781060.html 题目传送门 - NowCoder Wannafly 26D 题意 放一放这一题原先的题面 ...
- 退役前的最后的做题记录upd:2019.04.04
考试考到自闭,每天被吊打. 还有几天可能就要AFO了呢... Luogu3602:Koishi Loves Segments 从左向右,每次删除右端点最大的即可. [HEOI2014]南园满地堆轻絮 ...
- Wannafly Winter Camp 2020 Day 5H Geometry PTSD - 构造,计算几何
Solution 考虑如何计算点到平面的距离,我们可以用行列式算出锥形的体积和底面的面积,来得到距离 考虑构造一个等边三角形,这样基本是满足 \(\geq 1.7\) 的条件的 于是我们对它的坐标枚举 ...
- nowcoder 181045 / 克洛涅的多项式 构造+思维
题意:有多项式 $F(x),G(x)$,最高次项分别为 $n,m$.$F(x)$ 最高次项系数为 $1$. $m<n$ 给定 $n$ 个不同的点值,满足 $F(x[i])=G(x[i])$ 给定 ...
- nowcoder牛客wannafly挑战赛20
A---染色 签到题,设最终颜色为x,一次操作就需要把一个不是x的点变为x,所以最终颜色为x时需要操作 总结点个数-颜色为x的节点个数,然后枚举所有颜色就行了 #include <iostrea ...
- Wannafly挑战赛27
Wannafly挑战赛27 我打的第一场$Wannafly$是第25场,$T2$竟然出了一个几何题?而且还把我好不容易升上绿的$Rating$又降回了蓝名...之后再不敢打$Wannafly$了. 由 ...
- 【瓜分5000元奖金】Wannafly挑战赛13
链接:https://www.nowcoder.com/acm/contest/80/A来源:牛客网 zzy的小号 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他 ...
- Hilbert-Huang Transform: matlab 希尔伯特-黄变换: matlab实现
关于Hilbert-Huang的matlab实现,材料汇总,比较杂...感谢所有网络上的贡献者们:) 核心:以下代码计算HHT边际谱及其对应频率 工具包要求:G-Rilling EMD Toolbox ...
随机推荐
- Golang channel 特性
最近在项目中遇到了 Go channel 的一些问题,在此记录下 close channel 的一些特性. 关闭channel ch := make(chan bool) close(ch) clos ...
- Android apk动态加载机制
参考链接:http://blog.csdn.net/singwhatiwanna/article/details/22597587
- 如何使用Jquery直接导入记事本的内容
直接上代码 <!DOCTYPE html> <html> <head> <title> </title> </head> < ...
- 深入Golang调度器之GMP模型
前言 随着服务器硬件迭代升级,配置也越来越高.为充分利用服务器资源,并发编程也变的越来越重要.在开始之前,需要了解一下并发(concurrency)和并行(parallesim)的区别. 并发: 逻 ...
- Android:图解四种启动模式 及 实际应用场景解说
在一个项目中会包括着多个Activity,系统中使用任务栈来存储创建的Activity实例,任务栈是一种“后进先出”的栈结构.举个栗子,若我们多次启动同一个Activity.系统会创建多个实例依次放入 ...
- filter(HTML)滤镜用法
CCS滤镜参考语法:STYLE="filter:filtername(fparameter1, fparameter2...)" (Filtername为滤镜的名称,fparame ...
- 2018年Android的保活方案效果统计
一.常见保活方案 1.监听广播:监听全局的静态广播,比如时间更新的广播.开机广播.解锁屏.网络状态.解锁加锁亮屏暗屏(3.1版本),高版本需要应用开机后运行一次才能监听这些系统广播,目前此方案失效.可 ...
- 基于多进程的Tcp套接字服务器
服务端 import socketfrom multiprocessing import Process def task(c): print('顾客吃点啥') while True: data = ...
- Kali安装问题解决方案
一.对今天安装Kalilinux 失败的原因做一个简单的总结, 1.安装之前的电脑状况,电脑配置Windows7 64位旗舰版配置,虚拟版本是VMware Workstation Pro14 ver ...
- IP的计算
IP的计算 时间限制: 1 Sec 内存限制: 32 MB 位无符号整数来表示,一般用点分方式来显示,点将IP地址分成4个部分,每个部分为8位,表示成一个无符号整数(因此不需要用正号出现),如192 ...