zoukankan      html  css  js  c++  java
  • NOIP模拟赛-2018.11.7

    NOIP模拟赛  

      如果用命令行编译程序可以发现没加头文件之类的错误。

      如果用命令行编译程序可以发现没加头文件之类的错误。

      如果用命令行编译程序可以发现没加头文件之类的错误。

      编译之前另存一份,听说如果敲错文件名可能把文件给编译消失了,所以不要考试到最后再试这个。

      T1:一道有点考察$bfs$性质的题,给定一些黑点,一些白点,黑点每步会往四联通的格子扩展一步,问每个白点最早被扩展到是什么时候.

      一次性把所有黑点都放进队列里面$bfs$即可.

      T2:给定一个长度为$n$的序列,其中有的数未知,每个数的范围是$1-k$,最小化原序列的逆序对数量.$n<=10^5,k<=50$.

      考场上不知道在想什么...好像是觉得正解肯定想不到,就一直在打暴力和奇怪的骗分,甚至没有想一想正解可能是什么样的,不过这并不是非常重要,因为我$CE$了!在五种骗分中有一个是依赖于随机化的,但是我没有调用随机种子的头文件,而神奇的$dev$竟然把它编译过去了...?后来尝试了一下用命令行编译,是可以发现编译不通过的,以后写完程序可以先拿命令行编译看看。如果编译不通过是非常可惜的。

      五种贪心似乎也没有帮我得到多少分...

      1.找到前面最近的已知数,跟它填一样的;

      2.找到后面最近的已知数,跟它填一样的;

      3.找到前后最近的已知数,取平均值填;

      4.枚举每个空位置填什么,看一下能和多少已经填好的数或者已知数构成逆序对,取最小的一个来填;

      5.以上四种方法每种运行完后,随机$1000$次,每次找到一个未知数随机将它加一或减一;

      看起来前三种是真的乱搞,后两种还算有点道理,然而第四个给我送$CE$,改过来后第五个让我$TLE$

      还有一些特判:如果所有的数都要填,那肯定可以填出一个没有逆序对的数列,如果只有一个已知数,同上.

      正解是这样的:首先发现填的数是非降的,可以推理一下,也可以认为本来填数就有多种可能,不需要选额外制造逆序对的做法,这样就很好做了,记录一个前缀最小值优化$dp$转移即可.

      

      T3:

      $n$个选手,$m$个测试点,现在知道每个人能通过哪些测试点,要求将测试点进行捆绑测试使得总得分最小.捆绑后只要有一个不通过就算不通过,否则得分为每个点的分数和.询问一共捆绑$[1,k]$部分的最小得分.

      一个比较显然的做法:$dp[i][j]$表示前$i$个部分捆绑成$j$个的最小得分,可以得$60$.

      题解做法还没看懂...

      ---shzr

  • 相关阅读:
    hdu 5524 Subtrees 递推
    一些数论函数
    hdu 5480 Conturbatio (前缀和)
    hdu 5479 Scaena Felix (好坑的简单题)
    hdu 5465 Clarke and puzzle(树状数组 或 前缀和 + Nim游戏)
    uva 10534 Wavio Sequence(LIS)
    MFC简单绘制安卓机器人
    解决kubuntu(KDE4.8.5桌面环境)找不到中文语言包
    Windows系统完全退出VMware方法
    【VC6.0】getline需要输入2次回车才会结束的BUG修复方法
  • 原文地址:https://www.cnblogs.com/shzr/p/9922422.html
Copyright © 2011-2022 走看看