传送门——UOJ

传送门——Luogu


这段时间请不要找Itst聊天,Itst已经做疯了

事实证明大模拟题不可做

query 1

送分,加起来一起乘即可

I
I
+
<
-
O 

query 2

送分

I
-
<
+
S
O 

query 3

送分,把原数扩大$INF$倍,再调用$s$函数即可

默认下面的$INF=2^{100}$

I
<
S
C  -0.5
<
O 

query 4

好火啊qaq

因为我们的操作只允许我们放大到无穷大和缩小到趋近于$0$,所以我们考虑当$x$趋近于$0$时式子会趋向于什么

因为$s'(x) = ((1+e^{-x})^{-1}) ' = -(1+e^{-x})^{-2} \times (1+e^{-x})'$

$(1+e^{-x}) ' = (e^{-x}) ' = -e^{-x}$

所以$s'(x) = \frac{e^{-x}}{(1 + e^{-x})^2}$

将$0$带入得$s'(0)=\frac{1}{4}$

也就是说当$x$趋近于$0$时,函数可以近似为一个一次函数:$y=\frac{1}{4}x + 0.5$

而$s(x \times INF)$在$x<0$时等于$0$

所以不妨求$s(\frac{x}{INF} + INF \times s(x \times INF))$

如果$x<0$,括号内部的值趋向于$0$,得到的结果为$\frac{x}{4INF}+0.5$,那么取负、加上$0.5$、乘上$8INF$之后得到了$-2x$,加上$x$就得到了$-x$。

如果$x>0$,括号内部的值为$INF$,得到的结果为$1$。那么取负、加上$0.5$、乘上$8INF$、加上$x$之后得到了$4INF + x$,与我们需要的条件不符

那么我们只需要最后减去$4INF \times s(x \times INF)$即可满足条件了

当输入为$0$时会很尴尬地得到$0.5$的结果,我们只需要给$0$加上或减去$eps$就可以了

I
C  -0.0000000000000000000000001
<
S
<
>
+
S
-
C  0.5
<
+
+
O 

query 5

送分,模拟题,注意不要对$2^0$项左移即可

    freopen("nodes5.out" , "w" , stdout);
    queue < int > q;
    ;
     ; i >=  ; --i){
        puts("I");
        ++cnt;
        if(i)
            printf("< %d %d\n" , cnt++ , i);
        q.push(cnt);
    }
    ){
        printf("+ %d " , q.front());
        q.pop();
        printf("%d\n" , q.front());
        q.pop();
        q.push(++cnt);
    }
    printf("O %d\n" , q.front());

query 6

贼卡常

设$p$为当前数,$k$从$31$到$1$用$query\ 3$的方法检验$p-2^k$是否为正,如果为正减去$2^k$

$k=0$时可以直接输答案,无需判断。

考虑我们每一次使用$query\ 3$的方法时都需要乘上$INF$,常数太大,我们考虑在输入这个数据之后直接乘上$INF$,这样就不用每一次都左移。

使用浮点数计算二进制次幂。

可能会存在$p=2^k$,导致$s((p-2^k) \times INF)=0.5$的情况产生,我们只需要将$2^k -= eps$就不会有这种问题发生了。

    freopen("nodes6.out" , "w" , stdout);
    puts("I");
    puts("< 1 100");
    ;
     ; i >  ; --i){
        printf("C %d -%.7lf\n" , cur , pow(2.0 , i-0.0001));
        printf();
        printf();
        printf( , i);
        printf();
        printf();
        cur += ;
    }
    printf("> %d 100\n" , cur);
    printf();

query 7

实际上直接交样例可以在$Luogu$上$AC$,但是$UOJ\ Hack$了

用$query\ 6$的方法拆二进制,如果我们做按位加法,只有$11$不满足我们的要求

也就是说和为$2$时答案为$0$,否则和原来一样

设和为$x$,不难想到$ans=x +(-(s(x - 1.5) \times 2))$

    freopen("nodes7.out" , "w" , stdout);
    queue < int > que1 , que2 , que3;
    puts("I");
    puts("< 1 100");
    cur = ;
     ; i >  ; --i){
        printf("C %d -%.7lf\n" , cur , pow(2.0 , i-0.0001));
        printf();
        que1.push(cur + );
        printf( , i);
        printf();
        printf();
        cur += ;
    }
    printf("> %d 100\n" , cur);
    que1.push(cur + );
    puts("I");
    printf();
    cur += ;
     ; i >  ; --i){
        printf("C %d -%.7lf\n" , cur , pow(2.0 , i-0.00000000001));
        printf();
        que2.push(cur + );
        printf( , i);
        printf();
        printf();
        cur += ;
    }
    printf("> %d 100\n" , cur);
    que2.push(cur + );
    ++cur;
     ; i >=  ; --i){
        printf("+ %d %d\n" , que1.front() , que2.front());
        ++cur;
        que1.pop();
        que2.pop();
        printf("C %d -1.5\n" , cur++);
        printf("< %d 200\n" , cur++);
        printf("S %d\n" , cur++);
        printf("< %d 1\n" , cur++);
        printf("- %d\n" , cur++);
        printf( , cur);
        ++cur;
        if(i)
            printf("< %d %d\n" , cur++ , i);
        que3.push(cur);
    }
    ){
        printf("+ %d " , que3.front());
        que3.pop();
        printf("%d\n" , que3.front());
        que3.pop();
        que3.push(++cur);
    }
    printf("O %d\n" , que3.front());

query 8

考虑找到一个点$x0$使得$s'(x0)=0.1$

然后用跟$query\ 4$相似的方法,将$\frac{x}{INF}+x0$代入$s$就可以得到$0.1x0 + 0.1\frac{x}{INF}$

然后还原就可以了

关于这个$x0$我是直接蒯的数据可以二分求上面导数式子的零点

    freopen("nodes8.out" , "w" , stdout);
    puts("I");
    puts("> 1 96");
    puts("C 2 -0.9624236501192068949955178268487368462703686687713210393220363376803277");
    puts("S 3");
    puts("C 4 -0.2763932022500210303590826331268723764559381640388474275729102754589479");
    puts("< 5 95");
    puts("O 6");

query 9

使用冒泡排序(虽然我自己写的冒泡排序不知道怎么无限$WA$)

伪代码长这样:

 ->
     ->
        t = val[i] + val[j];
        val[j] = min(val[i]-val[j] , ) + val[j];
        val[i] = t - val[j];

然后考虑如何实现上面的min函数

跟$query\ 4$的实现很像:求$s(\frac{x}{INF} + INF \times s(x \times INF))$,减$0.5$,乘$4INF$,减$s(x\times INF)\times 2INF$即可

    freopen("nodes9.out" , "w" , stdout);
    ] = {};
     ; i <=  ; ++i){
        puts("I");
        num[i] = i;
    }
    cur = ;
     ; i <=  ; ++i){
         ; j <=  ; ++j){
            printf("+ %d %d\n" , num[i] , num[j]);
            printf("- %d\n" , num[i]);
            printf();
            printf();
            printf();
            printf();
            printf();
            printf();
            printf( , cur + );
            printf();
            printf();
            printf();
            printf();
            printf( , cur + );
            printf();
            printf();
            printf( , cur + );
            num[i] = cur + ;
            num[j] = cur + ;
            cur += ;
        }
    }
     ; i <=  ; ++i)
        printf("O %d\n" , num[i]);

query 10

TBC

调$query\ 9$调太久了,不想写了,然后就随便蒯了一份代码把结果蒯了

尾声

这题目真养生~

UOJ224 NOI2016 旷野大计算 构造、造计算机的更多相关文章

  1. [NOI2016]旷野大计算

    Subtask0 造计算机神题.给一个忠告:珍爱生命,远离旷野大计算...... 代码在这里:戳我 Subtask1 给定\(a,b\):求\(-2a-2b\). 熟悉操作环境:\([-(a+b)]& ...

  2. [JZOJ4763] 【NOIP2016提高A组模拟9.7】旷野大计算

    题目 题目大意 给你一个数列,有很多个询问,询问一段区间内,某个数乘它的出现次数的最大值,也就是带权众数. 思考历程 第一次看到这道题,立马想到了树套树之类的二位数据结构,发现不行.(就算可以也很难打 ...

  3. noi2016旷野大作战

    玩了差不多两个小时61分 大概第9个点可以再拿5-6分 但是挺麻烦的并不想搞.. 这道题还是比较考验智商的??以及对那个特殊的ln函数的应用 感觉题目出的挺好的 看了题解 发现第4个点的确我应该想不到 ...

  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 数据范围 解法 离线莫队做法 考虑使用莫队,但由于在删数的时候难以 ...

  5. [luogu1737]旷野大计算

  6. Microsoft Azure 大计算 – 宣布收购 GreenButton

     数据以及令人不可思议的计算能力,正在改变我们日常业务的经营方式,从科学和工程到媒体和金融,各行各业的客户正逐渐意识到什么是可能的.我们对整个基因组进行分析,以研制新药物.我们构建金融和保险模型, ...

  7. 【XSY3413】Lambda - 造计算机初步——邱奇-图灵论题与lambda演算

    题意: 关于邱奇-图灵论题的一点思考 这道题起源于计算机科学史上一个非常著名的问题——邱奇-图灵论题,这个论题是可计算性理论的基石,关于它的思考与证明几乎贯穿了整个计算机科学史,涵盖了数学.算法理论. ...

  8. sql server 大数据, 统计分组查询,数据量比较大计算每秒钟执行数据执行次数

    -- 数据量比较大的情况,统计十分钟内每秒钟执行次数 ); -- 开始时间 ); -- 结束时间 declare @num int; -- 结束时间 set @begintime = '2019-08 ...

  9. NOI2010~NOI2018选做

    [NOI2010] [NOI2010]海拔 高度只需要0/1,所以一个合法方案就是一个割,平面图求最小割. [NOI2010]航空管制 反序拓扑排序,每次取出第一类限制最大的放置,这样做答案不会更劣. ...

随机推荐

  1. 【工具相关】web-HTML/CSS/JS Prettify的使用

    一,打开Sublime Text,代码如下面所示. 二,鼠标右键--->HTML/CSS/JS Prettify--->Prettify Code.代码如图所示,明显的代码变得整齐了.

  2. React 入门学习笔记整理(七)—— 生命周期

    (1)react 生命周期 只有类组件有生命周期,函数组件没有生命周期 1.挂载阶段:这些方法会在组件实例被创建和插入DOM中时被调用: 1)constructor(props) 初始化组件的状态.绑 ...

  3. 【机器学习】激活函数(ReLU, Swish, Maxout)

    https://blog.csdn.net/ChenVast/article/details/81382939 神经网络中使用激活函数来加入非线性因素,提高模型的表达能力. ReLU(Rectifie ...

  4. Android学习笔记----天地图API开发之UnsatisfiedLinkError

    由于在jniLibs目录下移除了x86的相关so文件,后来又因为需要在PC模拟器上调试,将该文件夹恢复后,增加了天地图的sdk,却忘记将libMapEngine.so文件同时拷贝至x86目录下,导致如 ...

  5. flow-vue.js移动端效果

    得益于vue.js和element,以及vue-element-extends在线表格编辑.前后端分离的后端用golang+beego框架,服务器采用腾讯云. vue的自适应做的很好,只要将侧栏加一行 ...

  6. B-树、B+树

    B-树 用来在外部存储中组织数据. 严格来说,2-3树.2-3-4树都是B-树的特例:但B树更强调它的节点有很多个子节点,B-树中的节点可以有几十或几百个子节点. B-树也可以是查找树,也可以不是查找 ...

  7. Expo大作战(二十九)--expo sdk api之registerRootComponent(注册跟组件),ScreenOrientation(屏幕切换),SecureStore,

    简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻+个人 ...

  8. 【Java入门提高篇】Day21 Java容器类详解(四)ArrayList源码分析

    今天要介绍的是List接口中最常用的实现类——ArrayList,本篇的源码分析基于JDK8,如果有不一致的地方,可先切换到JDK8后再进行操作. 本篇的内容主要包括这几块: 1.源码结构介绍 2.源 ...

  9. Python零基础学习系列之三--Python编辑器选择

    上一篇文章记录了怎么安装Python环境,同时也成功的在电脑上安装好了Python环境,可以正式开始自己的编程之旅了.但是现在又有头疼的事情,该用什么来写Python程序呢,该用什么来执行Python ...

  10. python中json序列化的东东

    之所以写这个因为自己总是弄混了,容易弄错,记下来有事没事看看   序列化是指把变量从内存中变成可存储或传输的过程称之为序列化用(使用dump或者dumps),把变量内容从序列化的对象重新读到 内存里称 ...