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())])
  • 相关阅读:
    Data Base mysql备份与恢复
    java 乱码问题解决方案
    【知识强化】第二章 物理层 2.1 通信基础
    【知识强化】第二章 进程管理 2.2 处理机调度
    【知识强化】第二章 进程管理 2.1 进程与线程
    【知识强化】第一章 操作系统概述 1.3 操作系统的运行环境
    【知识强化】第一章 网络体系结构 1.1 数据结构的基本概念
    【知识强化】第一章 网络体系结构 1.2 计算机网络体系结构与参考模型
    【知识强化】第一章 网络体系结构 1.1 计算机网络概述
    【知识强化】第一章 操作系统概述 1.1 操作系统的基本概念
  • 原文地址:https://www.cnblogs.com/skylee03/p/6866352.html
Copyright © 2011-2022 走看看