【马蹄集】— 百度之星 2023

在这里插入图片描述

BD202301·公园

可以先 b f s bfs bfs统计一下 t , f t,f t,f到达每个点的距离,还有 n n n到达其他点的距离即其他点到达 n n n的距离 然后枚举每个点 直接计算得到最小值即可
注意特判有人无法到达 n n n的情况

code:


#include<bits/stdc++.h>
#define endl '\n'
#define fast() ios::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr)
#define F first
#define S second
#define lowbit(x) ((x) & (-x))
#define _ int _T; _T = 1; while(_T --) 
#define int long long
#define no cout << "NO" << endl
#define yes cout << "YES" << endl

using namespace std;
typedef pair<int, int> PII;
typedef pair<char,int> PCI;
const int N = 4e4 + 7;
const int mod = 998244353;
int t,f,n,m;
int te,fe,s;
vector<int> g[N];
int d1[N],d2[N],d3[N];

void bfs(){
    queue<int> q1,q2,q3;
    q1.push(t);
    q2.push(f);
    q3.push(n);
    vector<int> st1(n + 1,0),st2(n + 1,0),st3(n + 1,0);
    st1[t] = 1,st2[f] = 1,st3[n] = 1;
    for(int i = 1;i <= n;i ++){
        d1[i] = 500000;
        d2[i] = 500000;
        d3[i] = 500000;
    }
    d1[t] = 0,d2[f] = 0,d3[n] = 0;
    while(q1.size()){
        auto x = q1.front();
        q1.pop();
        for(auto son : g[x]){
            if(st1[son]) continue;
            st1[son] = 1;
            q1.push(son);
            d1[son] = min(d1[son],d1[x] + 1);
        }
    }
    while(q2.size()){
        auto x = q2.front();
        q2.pop();
        for(auto son : g[x]){
            if(st2[son]) continue;
            st2[son] = 1;
            q2.push(son);
            d2[son] = min(d2[son],d2[x] + 1);
        }
    }
    while(q3.size()){
        auto x = q3.front();
        q3.pop();
        for(auto son : g[x]){
            if(st3[son]) continue;
            st3[son] = 1;
            q3.push(son);
            d3[son] = min(d3[son],d3[x] + 1);
        }
    }
}

void solve(){
    cin >> te >> fe >> s;
    cin >> t >> f >> n >> m;
    for(int i = 0;i < m;i ++){
        int u,v; cin >> u >> v;
        g[u].push_back(v);
        g[v].push_back(u);
    }
    bfs();
    if(d3[t] == 500000 || d3[f] == 500000){
        cout << -1 << endl;
        return;
    }
    int mn = d3[t] * te + d3[f] * fe;
    for(int i = 1;i <= n;i ++){
        int cnt1 = d1[i] * te;
        int cnt2 = d2[i] * fe;
        int cnt3 = d3[i] * (te + fe - s);
        mn = min(mn,cnt1 + cnt2 + cnt3);
    }
    cout << mn << endl;
}

signed main(){
    fast();
    _
    solve();
    return 0;
}  

BD202303·第五维度

首先特判下如果 v v v 不为零的人 ≤ \leq 1 那么就是 -1
其他二分算一下能完成多少 然后减去最大的然后 return 判断即可

code:


#include<bits/stdc++.h>
#define endl '\n'
#define fast() ios::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr)
#define F first
#define S second
#define lowbit(x) ((x) & (-x))
#define _ int _T; _T = 1; while(_T --) 
#define int long long
#define no cout << "NO" << endl
#define yes cout << "YES" << endl

using namespace std;
typedef pair<int, int> PII;
typedef pair<char,int> PCI;
const int N = 1e5 + 7;
const int mod = 998244353;
int n,m;

struct node{
    int s;
    int v;
} a[N];

int check(int x){
    __int128 sum = 0;
    vector<int> v;
    for(int i = 0;i < n;i ++){
        int cnt;
        if(x <= a[i].s) cnt = 0;
        else cnt = (x - a[i].s) * a[i].v;
        v.push_back(cnt);
        sum += cnt;
    }
    int mx = *max_element(v.begin(),v.end());
    sum -= mx;
    return sum <= m;
}

void solve(){
    cin >> n >> m;
    for(int i = 0;i < n;i ++) cin >> a[i].s >> a[i].v;
    int cnt = 0;
    for(int i = 0;i < n;i ++){
        if(a[i].v) cnt ++;
    }
    if(cnt < 2){
        cout << -1 << endl;
        return;
    }
    int l = 0,r = 5e9;
    while(l + 1 != r){
        int mid = l + r >> 1;
        if(check(mid)) l = mid;
        else r = mid;
    }
    cout << r << endl;
}

signed main(){
    fast();
    _
    solve();
    return 0;
}  

BD202305·糖果促销

首先第一种方法 很明显的二分 去特判下 p = 1 即可
第二种则直接计算 显然想吃 k k k 块糖 就会产生 k k k 个糖纸 最后一个吃的糖肯定不参与糖纸的置换 所以参与糖纸置换的仅有 k − 1 k-1 k1个糖纸 那么 答案即 k − ( k − 1 ) / p k-(k-1)/p k(k1)/p

code1:


#include<bits/stdc++.h>
#define endl '\n'
#define fast() ios::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr)
#define F first
#define S second
#define lowbit(x) ((x) & (-x))
#define _ int _T; cin >> _T; while(_T --) 
#define int long long
#define no cout << "NO" << endl
#define yes cout << "YES" << endl

using namespace std;
typedef pair<int, int> PII;
typedef pair<char,int> PCI;
const int N = 3e5 + 7;
const int mod = 998244353;
int p,k;

int check(int x){
    int sum = x;
    while(x / p){
        sum += x / p;
        x = x / p + x % p;
    }
    return sum < k;
}

void solve(){
    cin >> p >> k;
    if(!k){
        cout << 0 << endl;
        return;
    }
    if(p == 1){
        cout << 1 << endl;
        return;
    }
    int l = 0,r = k;
    while(l + 1 != r){
        int mid = l + r >> 1;
        if(check(mid)) l = mid;
        else r = mid;
    }
    cout << r << endl;
}

signed main(){
    fast();
    _
    solve();
    return 0;
} 

code2:


#include<bits/stdc++.h>
#define endl '\n'
#define fast() ios::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr)
#define F first
#define S second
#define lowbit(x) ((x) & (-x))
#define _ int _T; cin >> _T; while(_T --) 
#define int long long
#define no cout << "NO" << endl
#define yes cout << "YES" << endl

using namespace std;
typedef pair<int, int> PII;
typedef pair<char,int> PCI;
const int N = 3e5 + 7;
const int mod = 998244353;
int p,k;

void solve(){
    cin >> p >> k;
    if(!k){
        cout << k << endl;
        return; 
    }
    int ans = k - (k - 1) / p;
    cout << ans << endl;
}

signed main(){
    fast();
    _
    solve();
    return 0;
} 

BD202321·新材料

直接遇到出现过得数就与上一次出现的位置距离看是否小于等于 k k k即可

code:


#include<bits/stdc++.h>
#define endl '\n'
#define fast() ios::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr)
#define F first
#define S second
#define lowbit(x) ((x) & (-x))
#define _ int _T; _T = 1; while(_T --) 
#define int long long
#define no cout << "NO" << endl
#define yes cout << "YES" << endl

using namespace std;
typedef pair<int, int> PII;
typedef pair<char,int> PCI;
const int N = 1e5 + 7;
const int mod = 998244353;
int n,k;

void solve(){
    cin >> n >> k;
    map<int,int> mp;
    map<int,int> mp2;
    int ans = 0;
    for(int i = 1;i <= n;i ++){
        int x; cin >> x;
        if(!mp[x]) mp[x] = i;
        else{
            if(i - mp[x] <= k){
                if(mp2[x]) continue;
                mp2[x] = 1;
                ans ^= x;
            } else{
                mp[x] = i;
            }
        }
    }
    cout << ans << endl;
}

signed main(){
    fast();
    _
    solve();
    return 0;
}  

BD202319·新的阶乘

筛一下质数 然后暴力跑质数的倍数 去统计倍数中含有此质数的指数
#define int long long 等于 喜提 tle

code:


#include<bits/stdc++.h>
#define endl '\n'
#define fast() ios::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr)
#define F first
#define S second
#define lowbit(x) ((x) & (-x))
#define _ int _T; _T = 1; while(_T --) 
#define no cout << "NO" << endl
#define yes cout << "YES" << endl

using namespace std;
typedef pair<int, int> PII;
typedef pair<char,int> PCI;
const int N = 1e7 + 7;
const int mod = 998244353;
int st[N];
int x;
int prime[N];
int cnt;

void get_prime(int n){
    for(int i = 2;i <= n;i ++){
        if(st[i]) continue;
        prime[cnt ++] = i;
        for(int j = i + i;j <= n;j += i) st[j] = 1; 
    }
}

void solve(){
    int x; cin >> x;
    get_prime(x);
    cout << "f(" << x << ")=";
    for(int i = 0;i < cnt;i ++){
        int nw = prime[i];
        long long sum = x - (nw - 1);
        for(int j = nw + nw;j <= x;j += nw){
            int k = j;
            int sb = 0;
            while(k % nw == 0){
                sb ++;
                k /= nw;
            }
            sum += sb * (x - (j - 1));
        }
        cout << nw;
        if(sum > 1) cout << "^" << sum;
        if(i != cnt - 1) cout << "*";
    }
}

signed main(){
    fast();
    _
    solve();
    return 0;
}  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/654738.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MaxKB,基于 LLM 大语言模型的知识库问答系统,开箱即用,支持快速嵌入到第三方业务系统。

MaxKB 是一款基于 LLM 大语言模型的知识库问答系统。MaxKB Max Knowledge Base&#xff0c;旨在成为企业的最强大脑。开箱即用&#xff0c;支持快速嵌入到第三方业务系统。 项目链接 github.com/1Panel-dev/MaxKB 项目介绍 MaxKB 是一款基于 LLM 大语言模型的知识库问答系统…

C++代码使用ClangCL编译注意事项

遇到cmake指定模板类工程使用msvc的clang编译器编译代码&#xff0c;代码变量出现与预期不符的问题&#xff1b; 如下&#xff1a; clangcl将实现放到头文件里则不会出现这样的情况&#xff1b; 最后按照pcl的模板类写法则解决这个问题&#xff1b;

WPF之TextBlock文本标签

TextBlock: 用于显示文本内容 常用属性 Text设置展示的文本fontsize设置字体大小FontWeight设置字体粗细FontFamily设置字体样式 实例 <Grid><TextBlock Text"显示文本"FontSize"10"FontWeight"Bold"Foreground"red">&l…

【博客20】缤果Matlab串口调试助手V1.0(中级篇)

超级好用的Matlab串口调试助手 开发工具: MATLAB 2024a中文版 (编程语言matlab) 目录 前言 一、软件概要&#xff1a; 二、软件界面&#xff1a; 1.App演示 ​ ​---- ◇♣♡♠ ---- 2.其他扩展App展示 ​编辑 三、获取 >> 源码以及Git记录&#xff1a; 总结 前…

[STM32+HAL]LD-1501MG舵机二次开发指南

一、准备材料 核心板&#xff1a;STM32F407ZGT6 舵机&#xff1a;LD-1501MG数字舵机 控制器&#xff1a;24路PWM舵机控制器 二、HAL库配置 开启串口与控制器通信 三、Keil填写代码 1、Servo.c #include "Servo.h" #include "usart.h"uint8_t Message…

计算机毕业设计 | springboot养老院管理系统 老人社区管理(附源码)

1&#xff0c;绪论 1.1 背景调研 养老院是集医疗、护理、康复、膳食、社工等服务服务于一体的综合行养老院&#xff0c;经过我们前期的调查&#xff0c;院方大部分工作采用手工操作方式,会带来工作效率过低&#xff0c;运营成本过大的问题。 院方可用合理的较少投入取得更好…

微前端探秘:初识微前端

微前端探秘&#xff1a;初识微前端 什么是微前端微前端的好处现有的微前端方案 什么是微前端 微前端是指存在于浏览器中的服务&#xff0c;其借鉴了微服务的架构理念&#xff0c;将微服务的概念扩展到了前端。 如果对微服务的概念比较陌生的话&#xff0c;可以简单的理解为微前…

媒体发布会怎么邀请媒体,到场采访报道?

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 媒体发布会的邀请和组织是一个需要精心策划的过程&#xff0c;以下是一些基本步骤和建议&#xff0c;以确保媒体发布会能够吸引媒体到场并进行有效的采访报道&#xff1a; 明确宣传目的和…

K-独立钻石(dfs),G-邪恶铭刻(贪心)

这两题&#xff0c;都是应该赛场上A出来的。 K.独立钻石 当时一直关注点在 I. Path Planning&#xff0c;没关注榜单&#xff0c;K,也能写&#xff0c;也就是dfs,从数据范围可以看出&#xff0c;直接暴力搜索。 代码 #include<bits/stdc.h> #define int long long #d…

5 分钟快速上手图形验证码,防止接口被恶意刷量!

5 分钟快速上手图形验证码&#xff0c;防止接口被恶意刷量&#xff01; 大家好&#xff0c;我是程序员小白条&#xff0c;今天来给大家介绍一个快速实现图形验证码的优秀框架 AJ-Captcha。 需求分析 如果注册接口没有验证码这种类型的限制&#xff0c;很容易会被刷量&#x…

java第十八课 —— 重载、可变参数

方法重载 基本介绍 java 中允许同一个类中&#xff0c;多个同名方法的存在&#xff0c;但要求形参列表不一致&#xff01; 比如&#xff1a;System.out.println(); out 是 PrintStream 类型 重载的好处 减轻了起名的麻烦减轻了记名的麻烦 注意事项和使用细节 方法名&…

26计算机操作系统408考研--操作系统处理机调度篇章(五)

文章目录 一、调度简介死锁一、调度简介 计算机系统中,处理器和内存资源会出现供不应求的情况,特别是多个I/O设备与主机交互,作业不断进入系统,或者是多个批处理作业在磁盘的后备队列中等待进入内存的情况。操作系统在管理有限的资源的同时,需要考虑如何选取进入内存的作…

Python-3.12.0文档解读-内置函数map()详细说明+记忆策略+常用场景+巧妙用法+综合技巧

一个认为一切根源都是“自己不够强”的INTJ 个人主页&#xff1a;用哲学编程-CSDN博客专栏&#xff1a;每日一题——举一反三Python编程学习Python内置函数 Python-3.12.0文档解读 目录 详细说明 map(function, iterable, *iterables) 参数 返回值 示例 注意事项 参考…

数据结构初阶 栈

一. 栈的基本介绍 1. 基本概念 栈是一种线性表 是一种特殊的数据结构 栈顶&#xff1a;进行数据插入和删除操作的一端 另一端叫做栈底 压栈&#xff1a;插入数据叫做压栈 压栈的数据在栈顶 出栈&#xff1a; 栈的删除操作叫做出栈 出栈操作也是在栈顶 栈遵循一个原则 叫做…

NXP i.MX8系列平台开发讲解 - 3.13 Linux 之Audio子系统(二)

专栏文章目录传送门&#xff1a;返回专栏目录 目录 1. Linux ALSA 内核框架 2. Linux ALSA 代码分析 2.1 声卡驱动初始化 2.2 声卡创建注册 2.3 PCM设备创建 3. ALSA ASoC 3.1 Machine 3.2 Platform 3.3 Codec 上一章节&#xff0c;对于Linux Audio子系统有了大概的了解…

58. UE5 RPG AI行为树的装饰器

书接56. UE5 RPG 给敌人添加AI实现跟随玩家&#xff0c;我们实现了AI一些基础设置&#xff0c;并实现了获取敌人附近的玩家实现了跟随功能 接下来&#xff0c;我们将实现区分职业&#xff0c;并根据职业不同设置不同的攻击距离&#xff0c;并且根据职业实现不同的技能施放。 …

【启程Golang之旅】基本变量与类型讲解

欢迎来到Golang的世界&#xff01;在当今快节奏的软件开发领域&#xff0c;选择一种高效、简洁的编程语言至关重要。而在这方面&#xff0c;Golang&#xff08;又称Go&#xff09;无疑是一个备受瞩目的选择。在本文中&#xff0c;带领您探索Golang的世界&#xff0c;一步步地了…

若依启动run-modules-system.bat报错问题解决方案

在启动run-modules-system.bat时遇到了一些问题,在网上搜索无果后,排查解决完毕 1.启动nacos时,报错如下 Error creating bean with name grpcClusterServer: Invocation of init method failed; nested exception is java.io.IOException: Failed to bind to address 0.0.0.0…

场景题11111

关单操作&#xff1f; 优先考虑定时任务、Redissonredis、RocketMQ延迟消息实现&#xff08;订单量特别大的时候&#xff0c;不建议使用MQ&#xff09; 每个订单都有一个消息会增加资源消耗可靠性问题&#xff08;丢失&#xff09;大量的无效消息不是所有消息队列都支持一般通…

【JAVA |图书管理系统】JAVA实现图书管理系(附完整代码)

✨✨谢谢大家捧场&#xff0c;祝屏幕前的小伙伴们每天都有好运相伴左右&#xff0c;一定要天天开心哦&#xff01;✨✨ &#x1f388;&#x1f388;作者主页&#xff1a; &#x1f388;丠丠64-CSDN博客&#x1f388; ✨✨ 帅哥美女们&#xff0c;我们共同加油&#xff01;一起…