zoukankan      html  css  js  c++  java
  • [UOJ282]长度测量鸡

    思路:

    数学归纳。

    设最少所需刻度数为$s$,则$n和s$的关系为:

    $n=1,s=0;$

    $n=2,s=1;$

    $n=3,s=3;$

    ...

    观察发现$s=n(n-1)/2$,得到$sn$时,满足条件。

    然而只有50分。。

    因为我手算错了,$n=3,s=2$。

    然而人不能没有信仰,就把$<$改成$leq$,A了。。

    正解:

    当$n>3$时,一定不能满足条件。

    官方题解

    from nneztlk

    算法一

    直接枚举刻度, 时间复杂度为 O((n(n+1)/21n1))O((n(n+1)/2−1n−1)). n=5n=5 时这个数是 (144)=1001(144)=1001, n=8n=8 时这个数是 (357)=6724520(357)=6724520. 期望得分 102010∼20 分.

    算法二

    我们需要题目描述中的 sjsi (0i<jn)sj−si (0≤i<j≤n) 这 n(n+1)2n(n+1)2 个数取到 1n(n+1)21∼n(n+1)2 的所有整数, 所以每个整数只能取一次, 即每种长度只能被一种方法量出. 特别地, sisi1(1in)si−si−1(1≤i≤n) 这 nn 段长度两两不同, 故只能是 1,2,,n1,2,…,n 的一种排列.

    枚举排列, 时间复杂度为 O(n!)O(n!). n=8n=8 时这个数是 4032040320. 期望得分 2020 分.

    算法三

    事实上, n=1,2,3n=1,2,3 时可以直接试出刻度方案, 分别为 ,{1},{1,4}∅,{1},{1,4}, 而对所有 n>3n>3 都不存在满足要求的刻度. 证明如下:

    记 M=n(n+1)2M=n(n+1)2, 则对 n>3n>3, M10M≥10. 现假设存在满足要求的刻度方案. 由于需要量出 M1M−1 的长度, 所以 11 或 M1M−1 处必须有刻度, 由对称性不妨设 11 处有. 要量出 M2M−2 的长度, 2,M2,M12,M−2,M−1 中需要有一处有刻度, 而如果 22 或 M1M−1 处有刻度, 则可以用两种方法量出长度 11, 矛盾! 所以 M2M−2 处必须有刻度. 此时由 (M2)1=M3(M−2)−1=M−3, M3M−3 的长度已经可以被量出. 要量出 M4M−4 的长度, 2,4,M3,M42,4,M−3,M−4 四处必有一处有刻度. 容易发现只有 44 处的刻度不会引起重复.

    现在已经知道 1,4,M21,4,M−2 处都需要有刻度, 而长度 M5M−5 尚未被量出. 欲量出 M5M−5, 需要 3,5,M5,M4,M13,5,M−5,M−4,M−1 中的一处有刻度. 然而它们都会导致 1,2,31,2,3 中的某个长度能被两种方法量出, 矛盾! 故不存在满足要求的刻度.

    所以只需判断 nn 是否大于 33. 时间复杂度 O(1)O(1), 期望得分 100100 分.

    我的AC代码:

     1 #include<cstdio>
     2 int main() {
     3     int t;
     4     scanf("%d",&t);
     5     while(t--) {
     6         int n;
     7         scanf("%d",&n);
     8         printf("%d
    ",((n*(n+1)>>2)<=n)?1:-1);
     9     }
    10     return 0;
    11 }

    最短代码(Python2.7):

    1 print'
    '.join(['-1'if input()>3 else'1'for i in range(input())])
  • 相关阅读:
    第三天 moyax
    mkfs.ext3 option
    write file to stroage trigger kernel warning
    download fomat install rootfs script
    custom usb-seriel udev relus for compatible usb-seriel devices using kermit
    Wifi Troughput Test using iperf
    learning uboot switch to standby system using button
    learning uboot support web http function in qca4531 cpu
    learngin uboot design parameter recovery mechanism
    learning uboot auto switch to stanbdy system in qca4531 cpu
  • 原文地址:https://www.cnblogs.com/skylee03/p/6866352.html
Copyright © 2011-2022 走看看