• 【2019.7.23】算术 / 比赛 / 数字三角形


     T1(poj2601)

     题解

     二分后线性判断即可

     T2(poj1818)

     题解

     不好意思之前写错了

     第一次看这题时没看懂题意,就没做

     后来看课件时顺便看了下这题题解,发现根本不明白他在说什么

     上网查 poj1818 才发现原来是让求哪个最蔡的人有机会当冠军……

     那显然让每个蔡的跟他可能打过的最强的打,并假设蔡的打赢了

     这样晋级的都是尽可能蔡的,晋到只有一个人时这个人显然也是极尽可能蔡的

     然后考虑怎么设计打的方案。这块我卡住了,看来我还是太蔡了

     看了一眼题解最上面一行,发现写了一句“倒推局面”,然后我就赶紧关了题解继续想,好像还挺好想的

     我们假设冠军是某个人,那上一轮我们显然要让他跟他能打过的最强的那个打

     再上一局我们再让这俩人分别跟除他俩之外他们能打过的最强的那个打

     以此类推,让每个晋级的人在上一轮都挑一个没晋到这一级的最强的打

     如果在某一个轮,某个晋级的在上一轮找不到他能打过的,那冠军的假设就被推翻了,我们需要换一个实力分数更小的冠军

     否则换一个实力分数更大的冠军,因为如果当前假设的冠军有可能当冠军,那实力分数比他小的人肯定也能当冠军

     二分优化即可

     贪心好像不难啊,没啥可讲的吧,但我脑残没想出来倒推

     

     T3

     题解

     二分答案

     想到了把大于 $mid$ 的数变成 $1$,小于 $mid$ 的数变成 $0$

     但我昨晚没把纸和笔带回公寓,然后脑回路比较短没想出规律

     找 scb 大佬一块讨论,他帮我画了一下,发现规律就是连续的一段 $0$ 或 $1$ (长度 $ge 2$)会一直往上走,然后 $01010$ 这样的非连续段往上走时会取反

     再手玩一下就会发现非连续段两端的数由于取反后就会并入左邻和右邻的连续段,所以哪个连续段先走到最中间那一格谁就赢了,它就会随连续段一直到达顶端

     所以 $check$ 函数判断一下离中间最近的连续段是 $0$ 还是 $1$ 即可。

     显然不可能存在 $0$ 的连续段和 $1$ 的连续段都离中间最近的情况,这个想到后验证一下就好了

     后记

     没时间,鸽了

  • 相关阅读:
    Python之面向对象新式类和经典类
    Python之面向对象继承和派生
    Python之面向对象类和对象
    Python之面向对象的程序设计
    Python之面向对象函数式编程
    Python之内置函数
    列表解析与生成器表达式
    03: 交换机基本原理与配置
    02: 网络布线与数制转换
    01:数据封装解封的过程
  • 原文地址:https://www.cnblogs.com/scx2015noip-as-php/p/2019_7_23.html
Copyright © 2020-2023  润新知