首页 > 其他分享 >P8685 [蓝桥杯 2019 省 A] 外卖店优先级

P8685 [蓝桥杯 2019 省 A] 外卖店优先级

时间:2024-03-19 15:22:06浏览次数:28  
标签:level int cache check 蓝桥 2019 外卖 time orders

这道题虽然难度很低,但是细节不少

1.要先处理减,再处理加。因为是先经历了空档期的优先级衰减,然后才有订单带来的优先级提升;先减后加的时候有0这个下限兜底,如果先加后减可能会导致答案偏小。

2.减之后和加之后都要check一下,如果in_cache为true,减完之后小于等于三,但是加了以后又上升到了4,这时候应该就不算优先店铺了,但是如果少了减之后的那次check,就会导致这个本该被去掉的店仍然是优先店铺。

#include <iostream>
#include <stdio.h>
#include <algorithm>
#include <string>
#include <vector>
#include <cmath>
#define For(i, j, n) for(int i = j ; i <= n ; ++i)
using namespace std;

const int N = 1e5 + 5;

inline int read()
{
    int x = 0; char ch=getchar();
    while(ch<'0'||ch>'9')
        ch = getchar();
    while(ch>='0'&&ch<='9')
        x=x*10+ch-'0',ch=getchar();
    return x;
}

int n, m, t, cnt;
vector<int> _orders[N];

void check(bool &f, int l)
{
    if(!f && l > 5)
        f = true;
    if(f && l <= 3)
        f = false;
}

void calculate_priority(vector<int> &tar, int id)
{
    int last_time = 0, _level = 0;
    bool in_cache = false;
    for(int _time:tar)
    {
        _level = max(0, _level - max(0, _time - last_time - 1));
        check(in_cache, _level);
        _level += 2;
        check(in_cache, _level);
        last_time = _time;
    }
    _level = max(0, _level - (t - last_time));
    check(in_cache, _level);
    if(in_cache)
        cnt++;
}

int main()
{
    n=read();m=read();t=read();
    For(i,1,m)
    {
        int ts = read(), id = read();
        _orders[id].push_back(ts);
    }
    For(i,1,n)
    {
        if(!_orders[i].empty())
        {
            sort(_orders[i].begin(), _orders[i].end());
            calculate_priority(_orders[i], i);
        }
    }
    printf("%d\n", cnt);
    return 0;
}

 

标签:level,int,cache,check,蓝桥,2019,外卖,time,orders
From: https://www.cnblogs.com/smartljy/p/18083026

相关文章

  • Windows Server 2019上离线安装.NET Framework 3.5
    1、打开服务器管理器首先,下载sxs文件。然后打开服务器管理器,点击左侧的“仪表盘”,如下图所示。https://chaonb.lanzouw.com/ifOU01rvm7gf密码:666 2、添加角色和功能点击上图中的“添加角色和功能”,弹出下图所示“添加角色和功能向导”。3、选择安装功能一直点击“下......
  • [极客大挑战 2019]web部分题解(sql部分已完结,其他部分正在更新)
    SQL部分:[极客大挑战2019]BabySQL打开环境后有登录界面◕‿◕一眼注入,后先试试万能密码:username:admin'or'1'='1password:1 GG,出大问题,我就会这一招啊O.o??完结撒花(不是꒰ঌ(⌯''⌯)໒꒱开玩笑的,着看着像是过滤了or后来尝试了一下oorr双写发现也不行,那咱继续注入哈:尝试......
  • 2024 蓝桥打卡Day15
    洛谷刷题P8752[蓝桥杯2021省B2]特殊年份题目[P8752[蓝桥杯2021省B2]特殊年份](https://www.luogu.com.cn/problem/P8752)题解P8780[蓝桥杯2022省B]刷题统计题目[P8780[蓝桥杯2022省B]刷题统计](https://www.luogu.com.cn/problem/P8780)题解P......
  • 蓝桥杯刷题(十一)
    1.卡片反向思考,看k种卡片可以分给几位同学代码n=int(input())k=1whilek*(k+1)<2*n:k+=1print(k)2.美丽的2代码deff(x)->bool:whilex:ifx%10==2:returnTruex//=10returnFalsecnt=0foriinrange(1,2021):iff(i):......
  • P8626 [蓝桥杯 2015 省 A] 灾后重建
    根号分治之类的思路分析这里就不讲了,主要关注代码细节:#include<iostream>#include<stdio.h>#include<algorithm>#include<vector>#include<string>#include<cmath>#defineFor(i,j,n)for(inti=j;i<=n;++i)usingnamespacestd;co......
  • 蓝桥杯day4刷题日记
    P8605[蓝桥杯2013国AC]网络寻路思路来源于https://www.luogu.com.cn/article/iat8irsf#include<iostream>usingnamespacestd;intn,m;intq[10010];intv[100010],u[100010];longlongres;intmain(){ cin>>n>>m; for(inti=0;i<m;i++) { cin......
  • [极客大挑战 2019]web部分题解(sql部分已完结,其他部分正在更新)
    SQL部分:[极客大挑战2019]BabySQL打开环境后有登录界面◕‿◕一眼注入,后先试试万能密码:username:admin'or'1'='1password:1 GG,出大问题,我就会这一招啊O.o??完结撒花(不是꒰ঌ(⌯''⌯)໒꒱开玩笑的,着看着像是过滤了or后来尝试了一下oorr双写发现也不行,那咱继续注入哈:尝试......
  • 蓝桥杯——344图书管理员
      法一使用取模运算对于每本书的图书编码(bookCode),我们需要判断其是否以读者的需求码结尾。首先,将需求码的长度作为指数,使用Math.pow(10,demandLength)来得到一个以需求码长度为指数的基数。然后,将书的图书编码与这个基数进行取模运算,即bookCode%Math.pow(10,demandLe......
  • CTF练习日记——[SUCTF 2019]EasySQL 1
    查询1试试试试堆叠注入1;showdatabases;#来查询数据库,以及1;showtables;#查询表再看看表里面的字段名1,showcolumnsfromFlag;#显示nonono,到这里之后我不太懂就参考了http://t.csdnimg.cn/MHwz1,利用1;setsql_mode=PIPES_AS_CONCAT;select1,得到flag:flag......
  • CTF练习日记——[强网杯 2019]随便注 1
    先点查询1试试:再试试查询1',看是否存在字符注入:?inject=1'#利用orderby查看有几个字段:?inject=1'orderby3#,?inject=1'orderby2#可以知道有两个字段,接下来利用联合查询:?inject=1'unionselect1,2#发现select被过滤了,那咱们利用堆叠注入来查看数据库,表名,?inject=1......