ARC122C-Calculator【乱搞,构造】
正题
题目链接:https://atcoder.jp/contests/arc122/tasks/arc122_c
题目大意
一个数对开始是\((0,0)\),每次可以选择一个数加一或者让一个数加上另一个数,求使得第一个数变成\(n\)的方案。步数不超过\(130\)。
\(1\leq n\leq 10^{18}\)
解题思路
官方是斐波那契,但是我考试的时候过法比较神奇。
看上去比较像更相减损,但是不知道第二个数是多少,感觉我们应该能找到一个数对\((n,k)\)使得它更相减损的步骤很少。
考虑的分散一点,设\(n=xk+k\)。那么我们相当于要找到一个\(x\)使得\(\frac{xk+k}{k}=\frac{1}{x}\)。
然后解出来得到\(x=\frac{\sqrt 5-1}{2}\)(其实就是黄金分割率)。
所以我们让\(k=n\times \frac{\sqrt 5-1}{2}\)然后更相减损下去,之后会发现有点误差,我们前后各枚举\(10000\)找到一个满足条件的就好了。
code
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>
#include<cmath>
#define ll long long
using namespace std;
ll n;vector<ll> z;
void print(ll x,ll y){
if(!x){while(y&&z.size()<=130)y--,z.push_back(2);return;}
if(!y){while(x&&z.size()<=130)x--,z.push_back(1);return;}
if(x<y) print(x,y-x),z.push_back(4);
else print(x-y,y),z.push_back(3);
}
signed main()
{
scanf("%lld",&n);
double M=(sqrt(5.0)-1.0)*(double)n/2.0;
ll m=M;
for(ll i=max(m-10000,0ll);i<=m+10000;i++){
print(n,i);
if(z.size()>130){z.clear();continue;}
printf("%lld\n",z.size());
for(ll i=0;i<z.size();i++)
printf("%lld\n",z[i]);
break;
}
return 0;
}
ARC122C-Calculator【乱搞,构造】的更多相关文章
- 【uoj#142】【UER #5】万圣节的南瓜灯 乱搞+并查集
题目描述 给出一张 $n\times m$ 的网格图,两个格子之间有一条双向边,当且仅当它们相邻,即在网格图中有一条公共边. 特殊地,对于 $1\le x\le n$ ,$(x,1)$ 和 $(x ...
- CodeForces - 1228D (暴力+思维+乱搞)
题意 https://vjudge.net/problem/CodeForces-1228D 有一个n个顶点m条边的无向图,在一对顶点中最多有一条边. 设v1,v2是两个不相交的非空子集,当满足以下条 ...
- URAL 1827 Indigenous Wars(排序、乱搞)
题意:给一个长度为n数组{a[i]}.有m个操作Ti,Si,Li表示找以Ti值结束,以Si值开始,长度为Li的连续子串.找到后,将区间的答案值设为1.一开始答案值全部为0.最后输出n个答案值. 好久没 ...
- UVA 11853 [dfs乱搞]
/* 大连热身E题 不要低头,不要放弃,不要气馁,不要慌张 题意: 在1000×1000的格子内有很多个炮弹中心,半径给定. 为某人能否从西部边界出发,从东部边界走出. 不能输出不能,能的话输出最北边 ...
- Codeforces 732e [贪心][stl乱搞]
/* 不要低头,不要放弃,不要气馁,不要慌张 题意: 给n个插座,m个电脑.每个插座都有一个电压,每个电脑都有需求电压. 每个插座可以接若干变压器,每个变压器可以使得电压变为x/2上取整. 有无限个变 ...
- 【BZOJ-4692】Beautiful Spacing 二分答案 + 乱搞(DP?)
4692: Beautiful Spacing Time Limit: 15 Sec Memory Limit: 128 MBSubmit: 46 Solved: 21[Submit][Statu ...
- 【BZOJ-3578】GTY的人类基因组计划2 set + map + Hash 乱搞
3578: GTY的人类基因组计划2 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 367 Solved: 159[Submit][Status][ ...
- 【BZOJ-2937】建造酿酒厂 前缀和 + 展环为链 + 乱搞
2937: [Poi2000]建造酿酒厂 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 70 Solved: 24[Submit][Status][D ...
- SCOI 2013 密码 & 乱搞
题意: Fish 是一条生活在海里的鱼.有一天他很无聊,就到处去寻宝.他找到了位于海底深处的宫殿,但是一扇带有密码锁的大门却阻止了他的前进.通过翻阅古籍,Fish 得知了这个密码的相关信息:1. 该密 ...
随机推荐
- sentinel使用(结合gateway)
前 如果你想在Spring Cloud Gateway中使用Sentinel Starter,你需要添加Spring - Cloud -alibaba- Sentinel - Gateway依赖,并添 ...
- Win10下安装SVN出现2503/2502解决方法
出现错误的原因是权限不够 在win10的开始按钮上,右键点击,选择"命令提示符(管理员)(A)",弹出管理员身份运行模式的命令行的窗口,输入如下的命令: msiexec /pack ...
- 使用dom4j工具:XMLWriter写出文件(五)
package dom4j_write; import java.io.File; import java.io.FileOutputStream; import java.io.OutputStre ...
- 基于 Mysql 实现一个简易版搜索引擎
前言 前段时间,因为项目需求,需要根据关键词搜索聊天记录,这不就是一个搜索引擎的功能吗? 于是我第一时间想到的就是 ElasticSearch 分布式搜索引擎,但是由于一些原因,公司的服务器资源比较紧 ...
- 在多数据源中对部分数据表使用shardingsphere进行分库分表
背景 近期在项目中需要使用多数据源,其中有一些表的数据量比较大,需要对其进行分库分表:而其他数据表数据量比较正常,单表就可以. 项目中可能使用其他组的数据源数据,因此需要多数据源支持. 经过调研多数据 ...
- vue组件里不用的css还在搜索过滤来删除?试一下vue-clearcss吧!
这篇文章其实是推广介绍我个人的npm工具库,但你不会后悔点进来的(应该吧...)vue-clearcss 为什么要用它? 一个vue文件在长期迭代中css会越来越冗余,它不像html和js那么好删除, ...
- Gogs (Go git server) 使用笔记
issue: 话题,一个新特性,BUG或其他关注的任何话题,都可创建issure,便于讨论,明确目标. label: 标签,一般用于描述issue的类型,如:bug.feature.enhanceme ...
- MySQL-SQL基础-查询2
mysql> create table customer(mid char(5) primary key,th date,sex char(1) default '0'); Query OK, ...
- 并发编程之:AQS源码解析
大家好,我是小黑,一个在互联网苟且偷生的农民工. 在Java并发编程中,经常会用到锁,除了Synchronized这个JDK关键字以外,还有Lock接口下面的各种锁实现,如重入锁ReentrantLo ...
- 20210821 打表,蛇,购物,ants
考场 T1 没看懂 T4 一眼回滚莫队,但忘记怎么写了,小慌 模拟 T1 题意的时候教练让 zsy 澄清了一下,确定了我不会做... T2 一看就是毒瘤题,T3 感觉比较可做 T4 确定了回滚的细节, ...