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())])
  • 相关阅读:
    【转】java面试题与答案
    【Appium】移动端自动化测试,触摸(TouchAction) 与多点触控(MultiAction)
    【转载】appium+python自动化-首次打开app权限弹窗问题
    【转载】视频直播平台测试
    关于http协议
    🍖MVC 与 MVT
    🍖Django框架之视图层(CBV源码剖析) ⭐
    🍖Django之settings源码分析
    🍖CGI、FastCGI、WSGI、uWSGI、uwsgi关系
    🐍Python内置函数
  • 原文地址:https://www.cnblogs.com/skylee03/p/6866352.html
Copyright © 2011-2022 走看看