草庐IT

2021.08.21【普及组】模拟赛C组 赛后总结

OIer_FY 2023-04-19 原文

前言

        今天是集训最后一天,也是最后一场比赛了!我也是给了自己这次比赛考得不错,315分,第13名,虽然没有上次好,但已经超出我的平均水平了。AC三题,有一道签到题。好的地方就是没有再出现提交错代码的错误了。应得:T1AC,T2AC,T3AC,T4AC,T4WA5。实得:T1AC,T2AC,T3AC,T4WA10,T5WA5。


T1 Daisy Chains

题目大意

        有一个集合P,再P里面选一个子集,满足子集里有一个数等于那个子集的平均值。问有多少个这样的子集。

正解

        签到题直接过。

赛时情况

        要是不AC我早毕业了。


T2 Stuck in a Rut

题目大意

        有n头奶牛在一个无穷大的棋盘上,它们可以一直想北走或向东走,知道碰到其他牛的路径。问一头牛最多可以走多少个格子。

正解

        和昨天的题一模一样,只不过换了个问法。排序后枚举向东走的牛和向北走的牛,看看它们会不会阻拦对方。如果向东走的被向北走的阻拦了,则向东走的距离是。如果向北走的被向东走的阻拦了,则向北走的距离是

赛时情况

        我要是不AC我能rank13?


T3 交通换乘

题目大意

        再数轴轴上标有两类点:1类点需要花费;2类点需要花费,不过如果再比它小45个单位长度之内有一个1类点满足,则不需要花费,但是每一个1类点只能让一个二类点免费。现在给你这个数轴上的所有点,问总花费是多少。

正解

        模拟。不过会爆,我们用一个单调队列q维护所有时间再当前点45个单位长度以内的点。因为题目保证所有点的位置是升续的,所以我们就每个点更新。因为q是单调的,所以如果有一个元素不行,它之前的元素也都是不行的,我们这样去更新q。

        更新后的q里都是位置允许的1类点,我们遍历一遍q,找出第一个费用允许的点,花了这张优惠券。如果没有,那就只能花钱了。

赛时情况

        想了大概半个小时,想到了用单调队列优化,AC。


T4 纪念品

题目大意

        你有n个物品,m个比特币,你可以买或卖物品,但是每天它的物品的价值不一样。问t天后你获得的最大比特币数量。ps:致敬xmring

正解

        完全背包问题。物品的买卖只能再两天之间进行,即昨天买+今天卖,因为前天买今天卖=前天买+昨天卖+昨天买+今天卖。昨天的价格当作重量,今天的价格当做价值,做一遍完全背包。注意每天的初始化,以及答案的更新

赛时情况

        花了太多时间搞T5,没时间就打了个表骗了10分。


T5 加工零件

题目大意

        有n个点,m条边,如果让一个点做等级为的零件,和他有边相连的点要做的零件。给你Q个任务,问你1要不要做0的零件。

正解

        图论。因为两个有边相连的点可以来回跳,所以如果1做了零件,他也要做零件,所以我们可以分析奇偶性。我们先计算出1到每个点的奇数最短路和偶数最短路。如果是奇数并且,那么输出Yes;如果是偶数并且,那么输出Yes。否则输出No

赛时情况

        我想到了正解,但实现错了WA5。


总结

这次比赛有两个问题:

        1.不要因为题目复杂就放弃。

        2.多手推几组数据测试。


写在最后

        祝我们全体2021届纪中信息队队员,初一的生活++,RP++,信息学学得和文化课进步++,作业--。

        @2021吴同春,@2021罗浚博,@2021刘宇翔,@2021凌梓亿天神,咱么开学见!

有关2021.08.21【普及组】模拟赛C组 赛后总结的更多相关文章

  1. ruby - 如何模拟 Net::HTTP::Post? - 2

    是的,我知道最好使用webmock,但我想知道如何在RSpec中模拟此方法:defmethod_to_testurl=URI.parseurireq=Net::HTTP::Post.newurl.pathres=Net::HTTP.start(url.host,url.port)do|http|http.requestreq,foo:1endresend这是RSpec:let(:uri){'http://example.com'}specify'HTTPcall'dohttp=mock:httpNet::HTTP.stub!(:start).and_yieldhttphttp.shou

  2. SPI接收数据异常问题总结 - 2

    SPI接收数据左移一位问题目录SPI接收数据左移一位问题一、问题描述二、问题分析三、探究原理四、经验总结最近在工作在学习调试SPI的过程中遇到一个问题——接收数据整体向左移了一位(1bit)。SPI数据收发是数据交换,因此接收数据时从第二个字节开始才是有效数据,也就是数据整体向右移一个字节(1byte)。请教前辈之后也没有得到解决,通过在网上查阅前人经验终于解决问题,所以写一个避坑经验总结。实际背景:MCU与一款芯片使用spi通信,MCU作为主机,芯片作为从机。这款芯片采用的是它规定的六线SPI,多了两根线:RDY和INT,这样从机就可以主动请求主机给主机发送数据了。一、问题描述根据从机芯片手

  3. ruby-on-rails - 在这种情况下我如何模拟一个对象?没有明显的方法可以用模拟替换对象 - 2

    假设我在Store的模型中有这个非常简单的方法:defgeocode_addressloc=Store.geocode(address)self.lat=loc.latself.lng=loc.lngend如果我想编写一些不受地理编码服务影响的测试脚本,这些脚本可能已关闭、有限制或取决于我的互联网连接,我该如何模拟地理编码服务?如果我可以将地理编码对象传递到该方法中,那将很容易,但我不知道在这种情况下该怎么做。谢谢!特里斯坦 最佳答案 使用内置模拟和stub的rspecs,你可以做这样的事情:setupdo@subject=MyCl

  4. ruby - "public/protected/private"方法是如何实现的,我该如何模拟它? - 2

    在ruby中,你可以这样做:classThingpublicdeff1puts"f1"endprivatedeff2puts"f2"endpublicdeff3puts"f3"endprivatedeff4puts"f4"endend现在f1和f3是公共(public)的,f2和f4是私有(private)的。内部发生了什么,允许您调用一个类方法,然后更改方法定义?我怎样才能实现相同的功能(表面上是创建我自己的java之类的注释)例如...classThingfundeff1puts"hey"endnotfundeff2puts"hey"endendfun和notfun将更改以下函数定

  5. ruby - 在 RSpec 中 stub /模拟全局常量 - 2

    我有一个gem,它有一个根据Rails.env的不同行为的方法:defself.envifdefined?(Rails)Rails.envelsif...现在我想编写一个规范来测试这个代码路径。目前我是这样做的:Kernel.const_set(:Rails,nil)Rails.should_receive(:env).and_return('production')...没关系,只是感觉很丑。另一种方法是在spec_helper中声明:moduleRails;end而且效果也很好。但也许有更好的方法?理想情况下,这应该有效:rails=double('Rails')rails.sho

  6. ruby - 如何更快地解决 project euler #21? - 2

    原始问题Letd(n)bedefinedasthesumofproperdivisorsofn(numberslessthannwhichdivideevenlyinton).Ifd(a)=bandd(b)=a,whereab,thenaandbareanamicablepairandeachofaandbarecalledamicablenumbers.Forexample,theproperdivisorsof220are1,2,4,5,10,11,20,22,44,55and110;therefored(220)=284.Theproperdivisorsof284are1,2,

  7. ruby-on-rails - rspec 模拟对象属性赋值 - 2

    我有一个rspec模拟对象,一个值赋给了属性。我正在努力在我的rspec测试中满足这种期望。只是想知道语法是什么?代码:defcreate@new_campaign=AdCampaign.new(params[:new_campaign])@new_campaign.creationDate="#{Time.now.year}/#{Time.now.mon}/#{Time.now.day}"if@new_campaign.saveflash[:status]="Success"elseflash[:status]="Failed"endend测试it"shouldabletocreat

  8. ruby - 如何使用 rspec stub /模拟对命令行的调用? - 2

    我正在尝试测试命令行工具的输出。如何使用rspec来“伪造”命令行调用?执行以下操作不起作用:it"shouldcallthecommandlineandreturn'text'"do@p=Pig.new@p.should_receive(:run).with('my_command_line_tool_call').and_return('resulttext')end如何创建stub? 最佳答案 使用newmessageexpectationsyntax:规范/虚拟规范.rbrequire"dummy"describeDummy

  9. Simulink方法总结和避坑指南(一)——Simulink入门与基本调试方法 - 2

    文章目录一、项目场景二、基本模块原理与调试方法分析——信源部分:三、信号处理部分和显示部分:四、基本的通信链路搭建:四、特殊模块:interpretedMATLABfunction:五、总结和坑点提醒一、项目场景  最近一个任务是使用simulink搭建一个MIMO串扰消除的链路,并用实际收到的数据进行测试,在搭建的过程中也遇到了不少的问题(当然这比vivado里面的debug好不知道多少倍)。准备趁着这个机会,先以一个很基本的通信链路对simulink基础和相关的debug方法进行总结。  在本篇中,主要记录simulink的基本原理和基本的SISO通信传输链路(QPSK方式),计划在下篇记

  10. ruby - 接收 block 作为参数的模拟方法 - 2

    我有一个或多或少这样的场景classAdefinitialize(&block)b=B.new(&block)endend我正在对A类进行单元测试,我想知道B#new是否正在接收传递给A#new的block。我使用Mocha作为模拟框架。这可能吗? 最佳答案 我用Mocha和RSpec都试过了,虽然我可以通过测试,但行为不正确。从我的实验中,我得出结论,验证block是否已通过是不可能的。问题:为什么要传递一个block作为参数?block将用于什么目的?什么时候调用?也许这确实是您应该用类似的东西测试的行为:classBlockP

随机推荐