zoukankan      html  css  js  c++  java
  • 考试总结 模拟95

     考试心得:

    T1考场上找规律,想了好久的整除分块,无果,心态十分爆炸,无奈之下出去转了一圈

    回来之后突然就想着把最初的想法延续下去,然后似乎找到了一些规律

     拼命打表伪证xjb尝试什么的,可算是挂上了对拍

    然后T2的贪心也很迷,根本就没想到这是原题

    T3一看就是神题最后留着时间也不太够了

    T1

    第一眼就是要拆开向下取整

    先写我考场上的推法:

    不考虑取整的结果是(1+p)*q/2

    需要减的是取整少的东西

    取整一般跟取余相关,所以我们先求sum {i*q%p}

    然后就打表,令d=gcd(p,q)

    发现是循环的 len=p/d ,次数times= d

    每一节的s1=gcd* sum{1~(p/d-1)}

    所以:sum {i*q%p}=s1*gcd然后就十分混乱的试出了一个系数1/p

    其实可以这么搞 a%b==a-floor(a/b)*b

    移项:floor(a/b)==a/b -(a%b)/b

    然后就用上了上面所求了

    正解是:

    那个gcd怎么来的?

    即证明p-gcd(p,q)==sum iin [1,p]那一坨。。。

    即证 p | i*q 的个数是gcd个

    另pp=p/d,qq=p/d

    pp| i*qq 成立,当且仅当 i | pp, 而此时i在 [1,p]内只有d个

    T2「贪心」

    后一种情况与X国军队相同

    首先一个贪心是先收益正的,再进行亏损

    现在把所有情况变成:打怪。打前需要a点血,打后成了b点血

    对于 a<b 即收益为正的情况:我们让a从小到大排序

    初始血条为0。。。每打一个怪就会有收益,i

    最终所有收益是相同的,每次就让需要的限制尽量小

    那可能你会问,我直接打最肥的收益最大的不就行了?

    但显然你还要达到一个a的限制,你能打这个了,那为什么不先把a-1,a-2的都干掉多收益一些 呢?

    对于a>b  即出现亏损的情况:我们让b从大到小排序处理

    每打一个怪就会有亏损

    我们打完所有怪减少的血量总和是一定的,而我每次只希望尽量少的用血瓶

    所以就每次就多剩点

    Miemeng:引用某电池广告:××用完了,***还能接着用。。。。。

    要是你先打b最小的,然后你就要补更多的血,最后剩了一个b次小的,然后你发现你多补的那些血没用了

    似乎证明掺杂了各种思路十分混乱

  • 相关阅读:
    命令模式
    责任链模式
    代理模式
    享元模式
    195 Tenth Line
    test命令
    read命令
    echo命令
    java反射
    http状态码
  • 原文地址:https://www.cnblogs.com/casun547/p/11771845.html
Copyright © 2011-2022 走看看