首页 > 其他分享 >2024.08.31美团

2024.08.31美团

时间:2024-09-10 13:14:08浏览次数:1  
标签:小美 int 美团 pos 2024.08 种树 区间 31 小团

1. 小美的姓名统计

小美写单词喜欢横着写,她记录了若干个人的名字,但是不小心加进去了一些无关的单词。
一个名字单词以大写字母开头,请你帮助她统计共有多少个人的名字。

简单输入处理
int main() {
    string cur;
    int res = 0;
    while(cin>>cur){
        if(cur[0]>='A'&&cur[0]<='Z') res++;
        if(cin.get()=='\n') break;
    }
    cout<<res<<endl;
    return 0;
}

2. 小美种树

长度无限长的公路上,小美雇佣了 n 位工人来种树,每个点最多种一棵树。
从左向右数,工人所站的位置为 a1,a2,...,an 。已知每位工人都会将自己所在位置的右侧一段长度的区间种满树,且每位工人的种树区间长度相同。
现在小美希望公路上至少有 k棵树,为了节约成本,他希望每位工人种树的区间长度尽可能短,请你帮他求出,工人们的种树区间至少多长,才能使得公路被种上至少 k棵树。

简单二分
int main() {
    int n,k;
    cin>>n>>k;
    vector<int> pos(n);
    for(int i=0;i<n;i++)
        cin>>pos[i];
    sort(pos.begin(),pos.end());//排序方便扫描
    int l = 1; int r = k;
    while(l<r){
        int m = (l+r)/2; //每个人种m颗树
        int total = 0;
        int prepos = -1;//上一区域的右边界
        for(int i=0;i<n;i++){//根据位置计算,假如是1,2,3,4,5
            total += m;//种植m颗
            if(prepos>=pos[i]) total -= (prepos-pos[i]+1);
            prepos = pos[i]+m-1;//右边界
        }
        if(total>=k) r = m;//满足条件,移动
        else l = m + 1;//不满足条件,增加
    }
    cout<<r<<endl;
    return 0;
}

3. 小美和小团的游戏

小美和小团在玩一个游戏,游戏中有一个长度为 n 的数组 a ,她们会玩 q 轮游戏,每轮游戏都是独立的。

游戏规则如下,双方都会执行最优策略:

1) 第一步,游戏给出一个区间 [l,r]。
2) 第二步,小团在 [l,r] 区间中选择一个数。
3) 第三步,小美将区间扩展成 [L,R] ( [L,R] 必须包含 [l,r] ),然后在 [L,R] 区间中选择一个数,但不能跟小团选同一个数。
4) 第四步,小美和小团选择的数字较大的一方获胜,若相同则平局。

小美想知道她每一轮的输赢状态,并且她想知道要达到输赢状态所需的 [L,R] 区间长度最小是多少。

小团必然会选[l,r]中最大的数,对于小美,找l左侧下一个更大值下标,以及右侧下一个更大值下标,两者更近的为需要拓展的边界,这里使用单调栈预先计算,
如果没有,则是判断整个数组是否至少有两个该最大值,使用哈希计数即可,对于找[l,r]中的最大值,可以使用线段树,同时记录其下标

标签:小美,int,美团,pos,2024.08,种树,区间,31,小团
From: https://www.cnblogs.com/929code/p/18406205

相关文章

  • 2024.09.10 1311版
    起于《海奥华预言》的思考◆地球管理结构和参考持续更新中...... 英文地址:https://github.com/zhuyongzhe/Earth/tags中文地址:https://www.cnblogs.com/zhuyongzhe85作者:朱永哲 -----------------------------------------------------------------------------------......
  • 8.31
    安装burp并实现抓取HTTP站点的数据包(HTTPS站点暂时不要求)   练习TomcatPUT方法任意写文件漏洞(CVE-2017-12615),提供蚁剑连接成功截图   练习S2-048远程代码执行漏洞(CVE-2017-9791),提供命令执行截图    4、练习JBoss5.x/6.x反序列化漏洞(CVE-2017-1......
  • 力扣刷题——3177. 求出最长好子序列 II
    根据题意,暴力做法不可取,因为至少要对遍历位置之前的位置,以及不同的子序列阈值(跟k对应的那个)做循环。于是就能够想到使用动态规划的手段去解决问题,考虑需要保存的两个状态,当前序列末尾的数字、子序列阈值,设计一个二维的dp数组dp[i][j],其中i为位置索引,指代当前在nums数组中遍历的位......
  • 2024.08.28得物(超简单)
    1.拨动数字已知小红每次可以把一个数字向下拨动,即9变成8,8变成7...1变成0,0变成9。她想知道从第一个状态变成第二个状态需要最少拨动多少次?简单打卡intmain(){stringa,b;cin>>a>>b;intres=0;for(inti=0;i<a.size();i++){intnum1=a[i]-......
  • 2024.08.17米哈游(有难度)
    1.米小游的原石计划为了抽到心爱的五星角色,米小游需要至少n颗原石。目前米小游手里没有任何的原石,距离卡池结束还有m天。原石有两种获取方式,一种是充小月卡,另一种是直接买。1.充一次月卡需要30块钱,可以增加30天的祝福次数,每天只能领一次祝福(90原石),购买当天可额外领取......
  • 1 件全新6ES7314-6EH04-0AB0 6ES73146EH040AB0 中央处理单元
    6ES7314-6EH04-0AB06ES73146EH040AB0中央处理单元6ES7314-6EH04-0AB06ES73146EH040AB0中央处理单元6ES7314-6EH04-0AB06ES73146EH040AB0中央处理单元6ES7314-6EH04-0AB06ES73146EH040AB0中央处理单元引脚线6ES7314-6EH04-0AB06ES73146EH040AB0中央处理单元说明书......
  • 2024.08.24京东
    1.100的倍数给你一个整数,请你判断0~N之间有多少个数是100的正整数倍。输入描述:输入的第一行给出一个整数N输出描述:输出0~N之间有多少个数是100的整数倍。简单题intmain(){stringst;cin>>st;intn=strlen(st);if(n<=2||st[0]=='-'){cout<<"0";retur......
  • 蓝桥杯-STM32G431RBT6采用不同方式进行点亮LED灯(深层次剖析其原理并包含可能遇到的问
    系列文章新建工程见上篇http://t.csdnimg.cn/LH8vj一、原理部分LED部分如上图,左侧为电阻和LED,右侧为锁存器(锁存器可以在输入信号发生变化时,将其状态锁定并保持,直到接收到新的触发信号。它主要用于存储数据或状态信息),当PD2置高电平的时候,右侧的状态才能够传输到左侧,本LED为......
  • AtCoder Beginner Contest 318 G - Typical Path Problem 题解
    G-TypicalPathProblem题目大意给定一张\(N\)个点、\(M\)条边的简单无向图\(G\)和三个整数\(A,B,C\)。是否存在一条从顶点\(A\)到\(C\),且经过\(B\)的简单路径?数据范围:\(3\leN\le2\times10^5\)\(N-1\leM\le\min(\frac{N(N-1)}2,2\times10^5)\)\(1\leA......
  • 2024.08.24阿里灵犀互娱
    1.减一给出一组数,求出最长的子串。使得这个子串中的数最大值和最小值的差值最大为1。 如154124255。最长子串为54455,长度为5红黑树计数即可intmain(intargc,char*argv[]){intn;cin>>n;vector<int>nums(n);map<int,int>m;fo......