zoukankan      html  css  js  c++  java
  • 2019-11-16比赛

    摘要:

      今天好像是csp的复赛了,可我却在机房里打着比赛(初赛未果)

      可惜可惜

    比赛内容:

       第一题:数列极差

       题目大意:佳佳的老师在黑板上写了一个由 n 个正整数组成的数列,要求佳佳进行如下操作:每次擦去其中的 两个数 a 和 b,然后在数列中加入一个数 a × b + 1,如此下去直至黑板上剩下一个数为止,在所有按这种操作方式最后得到的数中,最大的为 max,最小的为 min, 则该数列的极差定义为 M = max- min由于佳佳忙于准备期末考试,现请你帮助他,对于给定的数列,计算出相应的极差 M。   

        题解:其实这道题目模拟就够了,将一整个数列进行a*b+1操作,存储在a[tail]中就可以了,但max与min要正反排序求解,注意:在遇到比min小的地方要进行再次排序

        意外:但是我们的hh老师可能出题时粗心大意出错样例了,不然肯定ac

       第二题:智力大冲浪

      题目大意:小伟报名参加中央电视台的智力大冲浪节目。本次挑战赛吸引了众多参赛者,主持人为了表彰大家的勇气,先奖励每个参赛者 m 元。先不要太高兴!因为这些钱还不一定都是你的?!接下来主持人宣布了比赛规则:
    首先,比赛时间分为 n 个时段,它又给出了很多小游戏,每个小游戏都必须在规定期限   前完成。如果一个游戏没能在规定期限前完成,则要从奖励费 m 元中扣去一部分钱    为自然数,不同的游戏扣去的钱是不一样的。当然,每个游戏本身都很简单,保证每个参赛者都能在一个时段内完成,而且都必须从整时段开始。主持人只是想考考每个参赛者如何安排组织自己做游戏的顺序。作为参赛者,小伟很想赢得冠军,当然更想赢取最多的钱!注意:比赛绝对不会让参赛者赔钱!

       题解:这道题目十分的水,为什么这么说呢?因为把题目转化成数学问题就可以了。也就是在规定时间内,做规定时间的事,求最大的利益,贪心+模拟即可,简单ac

       第三题:棋盘问题

      题目大意:在一个4*4的棋盘上有8个黑棋和8个白棋,当且仅当两个格子有公共边,这两个格子上的棋是相邻的。移动棋子的规则是交换相邻两个棋子。现在给出一个初始棋盘和一个最终棋盘,要求你找出一个最短的移动序列使初始棋盘变为最终棋盘。

       题解:这道题目一看就知道是搜索了,只是把球距离分为从之前的棋盘到之后的棋盘每颗棋子有没有移动过,记录有多少颗移动过的棋子就可以了。

          交换即可,但是大家要这个状态不好标记处理,所以我们需要hash处理,这个01矩阵,不难想到我们处理成二进制来处理。

          我们怎么处理这个题目中1,0对应的位置呢???我们可以用我们二维数组通用的hash方法,就是除以列宽得行号,对列宽取余得到列号的做法。

          ”交换“:如何实现??

          同样地得到上下两个坐标的位置,同时其实他们对应的二进制也是序号来记录的,然后我们直接找到两个位置,用异或处理就可以交换0和1的操作。

          怎么打印这个答案呢??

          我认为这个题目还有一点就是记录路径的方法,记录路径是非常考验人的,但是我们需要开一个结构体,

          这个结构体需要记录这次hash值对应的哪两个坐标进行交换了,同时这个结构体能通过最终状态的hash值回溯输出

        当时就写了一个纯宽搜,0分

        第四题:打鼹鼠

       题目大意:

    鼹鼠是一种很喜欢挖洞的动物,但每过一定的时间,它还是喜欢把头探出到地面上来透透气的。根据这个特点阿Q编写了一个打鼹鼠的游戏:在一个n*n的网格中,在某些时刻鼹鼠会在某一个网格探出头来透透气。你可以控制一个机器人来打鼹鼠,如果i时刻鼹鼠在某个网格中出现,而机器人也处于同一网格的话,那么这个鼹鼠就会被机器人打死。而机器人每一时刻只能够移动一格或停留在原地不动。机器人的移动是指从当前所处的网格移向相邻的网格,即从坐标为(i,j)的网格移向(i-1, j),(i+1, j),(i,j-1),(i,j+1)四个网格,机器人不能走出整个n*n的网格。游戏开始时,你可以自由选定机器人的初始位置。现在你知道在一段时间内,鼹鼠出现的时间和地点,希望你编写一个程序使机器人在这一段时间内打死尽可能多的鼹鼠。
       题解:其实这只是一个简单的迪屁,状态转移方程if abs(a[i,2]-a[j,2])+abs(a[i,3]-a[j,3])<=a[i,1]-a[j,1]        then if dis[i]<dis[j]+1 then dis[i]:=dis[j]+1,只要记录
     鼹鼠的初始位置,然后在出现的时间和地点进行状态转移即可
     
     

      总结:

          这就是我这次的比赛成绩,整体来说还可以,但有些地方未思考出来,想的不够全面,所以下次再加油!

  • 相关阅读:
    C# Graphics类详解
    c#画直线
    c#画直线
    基础练习 数列特征
    基础练习 数列特征
    基础练习 字母图形
    基础练习 字母图形
    基础练习 字母图形
    基础练习 01字串
    基础练习 01字串
  • 原文地址:https://www.cnblogs.com/WestJackson/p/11613227.html
Copyright © 2011-2022 走看看