zoukankan      html  css  js  c++  java
  • 寒假集训

    待补题目:

    题解

    A. Left-handers, Right-handers and Ambidexters

    题目大意:

    有 3 种属性的人 a, b, ab。其中 ab 属性的人既可以当 a 也可以当 b。问如果组建一个团队要求 a, b 属性的人各一半,这个团队的最大人数是多少?

    分析:

    不妨设 (a < b) , 那么分为两种情况:

    1. (a + ab < b) 的时候,答案就是 (2(a + ab))
    2. (a + ab le b) 的时候,先用 ab 填满 a, 使得 a 的个数和 b 的个数相同,然后 ab 再对半分给 a, b。答案就是 (2(b + (ab - (b - a)) / 2))

    所以就是一水题……

    B - Intercepted Message

    题目大意:

    将两个序列分成相同的块数,使得每一个块的和相同。问最多能分成几块?

    分析:

    类似于双指针的想法,当第一个序列的和小于第二个序列和的时候,上面的指针右移动,直到两个序列的和相同,这时块数加一,然后两个序列的和重置(反之亦然)。直到两个指针都指向了序列尾。

    C - Zebras

    题目大意:

    给定一段 01 序列,问能不能分成几个子序列,使得每个子序列都是 0 开始和结尾,且 01 交替。

    分析:

    一开始读错题目了…… 看漏了 01 交替这个条件,直到我 wa 了一发。

    其实不用想那么多,直接模拟即可。答案用队列维护。再开个数据结构(我用队列)标记下当前这个答案队列是 0 结尾,还是 1 结尾。
    那么从左到右扫一遍:

    当遇到 1 的时候,查询当前是否有 0 结尾的答案队列,有,就插入到这个答案队列里,并把标记改为 1 结尾。没有,就直接输出 -1 即可。

    当遇到 0 的时候,查询当前是否有 1 结尾的答案队列,有,就插入并修改标记,没有,就多开一个队列,表示这是一个新的队列,并且是 0 结尾的。

    扫完之后,0 结尾的队列的个数就是子序列个数。注意这个时候, 1 结尾队列应该为空(为此,我还 wa 了一发)这里要判断一下。剩下的就是序列输出了,队列不断弹出即可。

    G. Feed the cat

    题目大意:

    大意是在某个给定的时间点,猫有 H 个饥饿值,然后每分钟会掉 D 点饥饿值,你需要去买一些面包给猫。每个面包降低 N 点饥饿值。每个面包的价格为 C 。但是在过了 20: 00 的时候,面包会打八折。问把猫的饥饿值降低到小于等于 0 的最小花费是多少。

    分析:

    很显然 20: 00 后立刻买。
    20: 00 前计算立刻买和 20:00 的时候买的花费,取比较小的那一个就行了。

    H - Not simply beatiful strings

    题目大意:

    定义如果一个字符串为只含有两种不同字母的,那么这种字符串就是特殊的。
    给定一个字符串,询问是否能分为两个特殊的字符串。

    分析:

    水题……计算字母种数,显然,当种数为 1 或者 大于 4 的时候,不能分成两个特殊的字符串。
    当字母种数为 4 的时候一定可以。
    当种数为 2,3 的时候,只要这几种字母的个数都不为 1,那么肯定能分。

    写完我才发现原来都是水题……手速好慢啊

  • 相关阅读:
    如何使用SAP Intelligent Robotic Process Automation自动操作Excel
    OpenSAML 使用引导 IV: 安全特性
    Spring Cloud Zuul 网关使用与 OAuth2.0 认证授权服务
    微服务架构集大成者—Spring Cloud (转载)
    Spring Cloud Eureka 服务注册列表显示 IP 配置问题
    使用 Notification API 开启浏览器桌面提醒
    SignalR 中使用 MessagePack 序列化提高 WebSocket 通信性能
    配置 Nginx 的目录浏览功能
    关于 Nginx 配置 WebSocket 400 问题
    Migrate from ASP.NET Core 2.0 to 2.1
  • 原文地址:https://www.cnblogs.com/ljxtt/p/12199402.html
Copyright © 2011-2022 走看看