【强训笔记】day27

NO.1

代码实现:

cpp 复制代码
#include<iostream>

using namespace std;

int n,m;
int main()
{
    cin>>n>>m;
    long long ret=n;
    for(int i=0;i<m-1;i++)
        ret=ret*(n-1)%109;
    cout<<ret<<endl;
    return 0;
}

NO.2

思路:bfs遍历实现,dist用来标记是否走过和记录最小步数。

代码实现:

cpp 复制代码
#include<iostream>
#include<cstring>
#include<queue>

using namespace std;

const int N=1010;
char arr[N][N];
int dist[N][N];
int n,m,x1,y1,x2,y2;
int dx[4]={1,-1,0,0};
int dy[4]={0,0,1,-1};

int bfs()
{
    if(arr[x2][y2]=='*') return -1;
    memset(dist,-1,sizeof dist);
    queue<pair<int,int>> q;
    q.push({x1,y1});
    dist[x1][y1]=0;
    while(q.size())
    {
        auto [a,b]=q.front();
        q.pop();
        for(int i=0;i<4;i++)
        {
            int x=a+dx[i],y=b+dy[i];
            if(x>=1&&x<=n&&y>=0&&y<=m&&arr[x][y]=='.'&&dist[x][y]==-1)
            {
                q.push({x,y});
            dist[x][y]=dist[a][b]+1;
            if(x==x2&&y==y2) return dist[x2][y2];
            }
        }
    }
    return -1;
}
int main()
{
    cin>>n>>m;
    cin>>x1>>y1>>x2>>y2;
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=m;j++)
        {
            cin>>arr[i][j];
        }
    }
    cout<<bfs()<<endl;
    return 0;
}

NO.3

思路:先按照左端点排序,将第一个的右端点放入队列,将后一个的左端点与之对比,若后一个的左端点大于前一个的右端点说明没有重叠部分,删除前一个右端点,加入该点的右端点,最后返回队列的size。

代码实现:

cpp 复制代码
class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 计算成功举办活动需要多少名主持人
     * @param n int整型 有n个活动
     * @param startEnd int整型vector<vector<>> startEnd[i][0]用于表示第i个活动的开始时间,startEnd[i][1]表示第i个活动的结束时间
     * @return int整型
     */
    int minmumNumberOfHost(int n, vector<vector<int> >& startEnd) {
        sort(startEnd.begin(),startEnd.end());
        priority_queue<int,vector<int>,greater<int>> heap;
        heap.push(startEnd[0][1]);
        for(int i=1;i<n;i++)
        {
            int a=startEnd[i][0],b=startEnd[i][1];
            if(a>=heap.top())
            {
                heap.pop();
                heap.push(b);
            }
            else {
            heap.push(b);
            }
        }
        return heap.size();
    }
};
相关推荐
John_ToDebug6 小时前
判断力无法被 AI 替代,但它正在被你亲手扔掉
经验分享·笔记
柳鲲鹏7 小时前
运气学概论:提纲草案
笔记
疯狂打码的少年10 小时前
【计算机网络】子网掩码与子网划分计算(含CIDR表示法)
服务器·笔记·计算机网络·php
自小吃多11 小时前
PCB Editor软件复制、改变、删除操作笔记
笔记·嵌入式硬件
动词ing13 小时前
【学习笔记】数据结构栈与队列(栈先进后出+队列先进先出+括号匹配+消消乐模型)
数据结构·笔记·学习
彧azz13 小时前
Git 入门实操实例:从安装到远程仓库全流程
大数据·笔记·git·学习·elasticsearch
David猪大卫15 小时前
【C++修炼】哈希表的实现
数据结构·c++·笔记·学习·算法·哈希算法·散列表
江湖人称菠萝包15 小时前
【Windows】《深入浅出Windows API程序设计:核心编程篇》笔记-Chapter6-动态链接库
windows·笔记
宵时待雨16 小时前
linux笔记归纳18:传输层协议TCP
linux·网络·笔记·网络协议·tcp/ip
逆境不可逃16 小时前
Pi Agent 学习笔记:一次提问背后的工具调用循环
java·笔记·学习