[NOI2016]旷野大计算
Subtask0
造计算机神题。给一个忠告:珍爱生命,远离旷野大计算......
代码在这里:戳我
Subtask1
给定\(a,b\);求\(-2a-2b\)。
熟悉操作环境:\([-(a+b)]<<1\),共\(6\)次操作。
Subtask2
给定\(a\);求\(\frac{1}{1+e^{17a}}\)。
熟悉关键函数及操作:\(s(-((a<<4)+a))\),共\(6\)次操作。
Subtask3
给定\(a\),求\(fu(a)\),其中\(fu(a) = \{-1,0,1\}\)。
可以发现\(s(x)\)在\(x\to \infty\)时\(\to 1\),在\(x\to -\infty\)时\(\to 0\)。
所以通过放缩就能够实现正、\(0\)、负数的区分了,即\([s(a<<500)-0.5]<<1\),共\(6\)次操作。
Subtask4
给定\(a\);求\(|a|\)。
最为关键的一档部分分。
首先\(s'(x)=\frac{e^{-x}}{(1+e^{-x})^2}\),\(s'(0)=\frac{1}{4}\),所以当\(x\to 0\),则\(s(x)\to \frac{x}{4}+\frac{1}{2}\)。
所以考虑用\(x\to 0\)时的\(s(x)\)构造我们需要的值。
考虑\(INFs(INFx)=[\{INF,x>0\},\{0,x<0\}]\)。
那么\(s(\frac{x}{INF}+INFs(INFx))=[\{1,x>0\},\{\frac{x}{4INF}+\frac{1}{2},x<0\}]\),然后对着构造即可。
至于\(0\)的尴尬处境,通过加\(eps\)解决,令\(b=a+eps\)。
操作为:\(-8INF([s(\frac{b}{INF}+4INFs(INFb))]-\frac{1}{2})+b+4INFs(INFb)\),共\(14\)次操作。
这个\(Subtask\)的构造思想之后要反复用到。
Subtask5
给定二进制数\(a\),把它翻译为十进制数。
开始写\(for\):对后\(31\)位模拟即可(第\(32\)位直接取),共\(95\)次操作。
Subtask6
给定十进制数\(a\),把它翻译为二进制数。
核心思想:从高位到低位,把当前数\(-2^t\),若\(\ge 0\)则为\(1\),否则为\(0\)。
与\(Subtask3\)蜜汁相像啊。先写出一个大概:\(s((x-2^t+eps)<<500)>>500\)。
然后来卡常,不难发现每次都左移十分浪费,所以预先左移一次即可。
再者第\(0\)位貌似不需要该操作,直接取当前结果即可,通过卡常共\(190\)次操作。
Subtask7
给定两个数\(a,b\);求\(a\ xor\ b\)。
先转为二进制数操作,最后再转回十进制,那么只需要考虑某一位的答案。
考虑支持函数:\(f(x=\{0,1,2\})=[\{0,x=0,2\}\{1,x=1\}]\),然后用\(f(x)\)求答案即可。
不难想到\(f(x)=x-s((x-1.5)<<500)<<1\)。一共\(603\)次操作。
Subtask8
给定\(a\);求\(\frac{a}{10}\)。
考虑求\(s'(x_0)=\frac{1}{10}\),然后当\(x\to x_0\),\(s(x)=s(x_0)+\frac{1}{10}(x-x_0)\)。
手解可得:\(x_0=-ln(\frac{3+\sqrt{5}}{2})\),先各凭本事把\(x_0\)和\(s(x_0)\)的高精小数搞出来再说。
然后就比较简单了,\(s(\frac{x}{INF}+x_0)=s(x_0)+\frac{x}{10INF}\)。
所以操作为:\([s(x>>500+x_0)-s(x_0)]<<500\),共\(7\)次操作。
Subtask9
给定\(a_{1,2...,32}\);把\(a\)数组排好序后输出来。
冒泡排序,每次操作:\(t=a_i+a_{i+1},a_{i+1}=a_i+max(0,a_i-a_{i+1}),a_i=t-a_{i+1}\)。
唯一的问题在于实现\(f(t)=max(0,t)\),应该已经轻车熟路了吧。
一种可行构造:\(f(t)=x-4INF(s(\frac{t}{INF}+2INFs(INFt))-\frac{1}{2})+2INFs(INFt)\)。
共\(2192\)次操作。
Subtask10
给定\(a,b,c\);实现\(a\times b \% c\)。
分两步,先算\(a\times b=t\),再算\(t\% c\)。
第一步龟速乘,先把\(b\)转化为二进制数,设第\(i\)位为\(b_i\)。
我们需要一个函数\(f(x,t=\{0,1\})=[\{0,t=0\},\{x,t=1\}]\),做出\(f(x,t)\)事情就简单了。
注意到\(s(-\infty)\to 0\),所以\(f(x,t)\)大概形式为\(s(x+INF(t-1))\),但这样得不到\(x\)的值。
再次利用\(Sub4\)、\(Sub8\)的那种方法即可。
最终设计出来\(f(x,t)=2INF(-t+s(\frac{x}{INF}+INF(t-1))<<1)\)。
然后来实现取模,核心思想类似\(Sub6\),需要函数\(g(x)=[\{1,x\ge 0\},\{0,x<0\}]\)。
由于\(x\)是整数域\(Z\)下的,所以这个就比较简单了,\(g(x)=s(INF(x+0.5))\)。一共\(1493\)步。
[NOI2016]旷野大计算的更多相关文章
- UOJ224 NOI2016 旷野大计算 构造、造计算机
传送门——UOJ 传送门——Luogu 这段时间请不要找Itst聊天,Itst已经做疯了 事实证明大模拟题不可做 query 1 送分,加起来一起乘即可 I I + < - O query 2 ...
- [JZOJ4763] 【NOIP2016提高A组模拟9.7】旷野大计算
题目 题目大意 给你一个数列,有很多个询问,询问一段区间内,某个数乘它的出现次数的最大值,也就是带权众数. 思考历程 第一次看到这道题,立马想到了树套树之类的二位数据结构,发现不行.(就算可以也很难打 ...
- noi2016旷野大作战
玩了差不多两个小时61分 大概第9个点可以再拿5-6分 但是挺麻烦的并不想搞.. 这道题还是比较考验智商的??以及对那个特殊的ln函数的应用 感觉题目出的挺好的 看了题解 发现第4个点的确我应该想不到 ...
- 【JZOJ4763】【NOIP2016提高A组模拟9.7】旷野大计算
题目描述 输入 输出 样例输入 5 5 9 8 7 8 9 1 2 3 4 4 4 1 4 2 4 样例输出 9 8 8 16 16 数据范围 解法 离线莫队做法 考虑使用莫队,但由于在删数的时候难以 ...
- [luogu1737]旷野大计算
- Microsoft Azure 大计算 – 宣布收购 GreenButton
数据以及令人不可思议的计算能力,正在改变我们日常业务的经营方式,从科学和工程到媒体和金融,各行各业的客户正逐渐意识到什么是可能的.我们对整个基因组进行分析,以研制新药物.我们构建金融和保险模型, ...
- sql server 大数据, 统计分组查询,数据量比较大计算每秒钟执行数据执行次数
-- 数据量比较大的情况,统计十分钟内每秒钟执行次数 ); -- 开始时间 ); -- 结束时间 declare @num int; -- 结束时间 set @begintime = '2019-08 ...
- NOI2010~NOI2018选做
[NOI2010] [NOI2010]海拔 高度只需要0/1,所以一个合法方案就是一个割,平面图求最小割. [NOI2010]航空管制 反序拓扑排序,每次取出第一类限制最大的放置,这样做答案不会更劣. ...
- NOI2016 高中OI生涯的最后一站
你乘坐的航班XXX已经抵达终点站——四川绵阳. “呼——”机舱外的天空灰沉沉的,不禁有些压抑与紧张. 一出机场,就看见南山中学的牌子,黄色衣服的志愿者们,还有热情的老师们. 感觉刚才的情绪又一扫而空了 ...
随机推荐
- Unity扩展编辑器一
将Test1脚本挂在摄像机上 如图展示 下面我们需要在代码中动态的编辑它,请在你的Project视图中创建一个Editor文件夹,把MyEditor放进Editor文件夹中 在OnInsp ...
- 学习python,第二篇
注释 # 单行注释 ''' 多行注释 ''' 或者 """ 多行注释 """ # Author: Itxpl mag ...
- ResNet——Deep Residual Learning for Image Recognition
1. 摘要 更深的神经网络通常更难训练,作者提出了一个残差学习的框架,使得比过去深许多的的网络训连起来也很容易. 在 ImageNet 数据集上,作者设计的网络达到了 152 层,是 VGG-19 的 ...
- ReLU——Deep Sparse Rectifier Neural Networks
1. 摘要 ReLU 相比 Tanh 能产生相同或者更好的性能,而且能产生真零的稀疏表示,非常适合自然就稀疏的数据. 采用 ReLU 后,在大量的有标签数据下,有没有无监督预训练模型取得的最好效果是一 ...
- Homebrew1.5之后安装PHP和扩展
Homebrew 1.5 宣布放弃 homebrew/php, 转而使用homebrew/core维护, 详见https://brew.sh/2018/01/19/homebrew-1.5.0/ 于是 ...
- mongodb基本使用(四)
MongoDB 条件操作符 描述 条件操作符用于比较两个表达式并从mongoDB集合中获取数据. MongoDB中条件操作符有: (>) 大于 - $gt (<) 小于 - $lt (&g ...
- Python List Comprehension
(一)使用List Comprehension的好处 在了解Python的List Comprehension之前,我们习惯使用for循环创建列表,比如下面的例子: numbers = range(1 ...
- oraclejdbc
https://segmentfault.com/q/1010000004952621/a-1020000004955600
- Chapter 9 软件实现
软件实现包括代码设计.设计审查.代码编写.代码走查.代码编译和单元测试等活动.程序设计语言有很多,从机器语言到高级语言一直发展.软件编码需要遵循一些规范,JAVA代码有适当的空行,代码行及行内空格.分 ...
- eclipse 中使用git
1.安装egit插件,在新版的eclipse中已经集成了这个插件,省了不少时间, 旧版的eclipse可以在help->install new software中点击add,写入名称,网址具体如 ...