牛客周赛64

用PY32F003F18的PWM互补输出驱动无刷电机,保姆级配置流程(含代码) 本文详细介绍了如何利用PY32F003F18微控制器的TIM1定时器配置PWM互补输出功能来驱动三相无刷电机,涵盖硬件设计、代码实现及六步换相算法。通过保姆级配置流程和实用代码示例,帮助开发者快速掌握无刷电机驱动技术,适用于工业自动化和消费电子等领域。 阅读详情

(https://ac.nowcoder.com/acm/contest/92662#question)(比赛链接)

目录

A.小红的对错判断

B.小红的幂表达

C.小红的前缀询问

D.小红和小紫的博弈游戏

E.小红的字符串重排

F.小红的树上路径查询(easy)

G.小红的树上路径查询(hard)


A.小红的对错判断

1.思路

        判断字符串长度是否为3且s[0]是否为y或Y,s[1]是否为e或E,s[2]是否为s或S

2.代码

#include <bits/stdc++.h>
using namespace std;

signed main(){
    string s;
    cin>>s;
    if(s.length()==3&&(s[0]=='Y'||s[0]=='y')&&(s[1]=='E'||s[1]=='e')&&(s[2]=='S'||s[2]=='s')){
        cout<<"accept"<<endl;
    }else{
        cout<<"wrong answer"<<endl;
    }
    return 0;
}

B.小红的幂表达

1.思路

        利用for循环遍历所有的指数情况,从1到x,a^b=x,则a=pow(x,1.0/b),求出a,若a^b能等于x则输出对应的幂的表达式。需要注意的是,因为浮点数精度的问题,需要判断(a+1)^b是否等于x,以及(a-1)^b是否等于x。下面的结果就是浮点数精度问题导致的

    int t = pow(64,1.0/3);
    cout<<pow(64,1.0/3)<<endl;  // 4
    cout<<t<<endl;              // 3

        或利用for循环遍历所有底数情况,从x到2,若对于k=1,能通过乘法运算变为x则输出相应的幂的表达式

2.代码

#include <bits/stdc++.h>
using namespace std;

signed main(){
    int x;
    cin>>x;
    cout<<x<<endl;
    for(int i=1;i<=x;i++){
        int b = i;
        int a = pow(x,1.0/i);
        if(pow(a,i)==x){
            cout<<"="<<a<<"^"<<b<<endl;
        }else if(pow(a+1,i)==x){
            cout<<"="<<a+1<<"^"<<b<<endl;
        }else if(pow(a-1,i)==x){
            cout<<"="<<a-1<<"^"<<b<<endl;
        }
    }
    return 0;
}
#include <bits/stdc++.h>
#define int long long
using namespace std;

signed main(){
    int x;
    cin>>x;
    cout<<x<<endl;
    for(int i=x;i>=2;i--){
        int k=1;
        int b=0;
        while(k<x){
            k*=i;
            b++;
        }
        if(k==x){
            cout<<"="<<i<<"^"<<b<<endl;
        }
    }
    return 0;
}

C.小红的前缀询问

1.思路

        用map<int,int>来维护当前位置与新输入的数相同的个数,每次新输入一个数进行累计即可

2.代码

#include <bits/stdc++.h>
#define int long long
using namespace std;

map<int,int>mp;

signed main(){
    int n;
    cin>>n;
    int sum=0;
    for(int i=1;i<=n;i++){
        int t;
        cin>>t;
        sum+=mp[t];
        mp[t]++;
        cout<<sum<<" \n"[i==n];
    }
    return 0;
}

D.小红和小紫的博弈游戏

1.思路

        令a[1]、a[4]为一组,a[2]、a[3]为一组,每次操作相当于从每组中抽取一个元素进行减1,直到其中一组的两个元素都为0的时候无法操作,因此两组的和较小的那组先两个元素到0,因此以两组和较小的那组为判断依据,根据奇偶性判断结果

        

2.代码

#include <bits/stdc++.h>
#define int long long
using namespace std;

int a[5];

void solve(){
    for(int i=1;i<=4;i++){
        cin>>a[i];
    }
    int re = min(a[1]+a[4],a[2]+a[3]);
    if(re%2==0){
        cout<<"yukari"<<endl;
    }else{
        cout<<"kou"<<endl;
    }
}

signed main(){
    int t;
    cin>>t;
    while(t--){
        solve();
    }
    return 0;
}

E.小红的字符串重排

1.思路

        首先判断能否重排,若字符串中众数>字符串长度的一半,则不能重排,否则可以

        设原字符串为ababacc,可以的情况,利用vector<char,int>a保存每个字符在原字符串的位置,并按字符串大小进行排序,如:aaabbcc,现在考虑映射关系

        对于现在a中每个字符的位置,映射元素index=(i+max)%n(n为字符串长度),因为index=(i+max)%n能保证对应的映射元素绝对不同于自身

        比如现在的aaabbcc,第一个a映射元素为第一个b,第二个a映射元素为第二个b,第三个a映射元素为第一个c,第一个b映射元素为第二个c。所以根据映射元素,将每个字符置换到对应的映射元素的位置。如aaabbcc中第一个a的字符串中的位置为1,第一个b在字符串中的位置为2,可以选择将a放到2或者将b放置到1,两种方法选择其中一种进行置换即可

2.代码

#include <bits/stdc++.h>
#define int long long
using namespace std;

signed main(){
    string s;
    cin>>s;
    int max1=0;
    for(char i='a';i<='z';i++){
        max1 = max<int>(max1,count(s.begin(),s.end(),i));
    }
    if(max1>s.length()/2){
        cout<<-1<<endl;
        return 0;
    }
    vector<pair<char,int>>a(s.length());    // 存放字符在s中的位置
    vector<char>ans(s.length());            // 存放结果
    for(int i=0;i<s.length();i++){
        a[i] = {s[i],i};
    }
    sort(a.begin(),a.end());
    for(int i=0;i<s.length();i++){
        int index = (i+max1)%s.length();
        ans[a[index].second] = a[i].first;
        // ans[a[i].second] = a[index].first;
    }
    for(int i=0;i<s.length();i++){
        cout<<ans[i];
    }
    return 0;
}

F.小红的树上路径查询(easy)

1.思路

        总共进行三次bfs,第一次以左端点为起点对所有点进行遍历,得到左端点到各个点的距离;第二次以右端点为起点对所有点进行遍历,得到右端点到各个点的距离。那么如何判断某个点是在左端点到右端点的这条简单路径上,则是某个节点到两个端点的距离之和为两个端点之间的距离即可。通过前两次bfs,即可得到处于简单路径上的所有节点,最后一次bfs,则以这些节点对剩余节点进行遍历获取距离加起来即可

2.代码

#include <bits/stdc++.h>
#define int long long
using namespace std;

const int N = 1e5+7;

vector<int>a[N];
int visf[N],disf[N];    // 某个节点是否遍历过以及保存左端点到各个节点的距离
int viss[N],diss[N];    // 某个节点是否遍历过以及保存右端点到各个节点的距离
int vist[N],dist[N];    // 某个节点是否遍历过以及保存路径上的节点到非路径节点的距离
vector<int>b;   // 存储三次bfs遍历的起始节点
vector<int>bl;
vector<int>br;

void bfs(vector<int>b, int dis[], int vis[]){
    queue<int>q;
    for(auto t:b){
        q.push(t);
        vis[t] = 1;
        dis[t] = 0;
    }
    while(q.size()){
        int top = q.front();
        q.pop();
        for(int i=0;i<a[top].size();i++){
            int lb = a[top][i];
            if(vis[lb]){
                continue;
            }
            dis[lb] = dis[top] + 1;
            vis[lb] = 1;
            q.push(lb);
        }
    }
}

signed main(){
    int n,q;
    cin>>n>>q;
    for(int i=1;i<=n-1;i++){
        int u,v;
        cin>>u>>v;
        a[u].push_back(v);
        a[v].push_back(u);
    }
    int l,r;
    cin>>l>>r;
    bl.push_back(l);
    br.push_back(r);
    bfs(bl,disf,visf);
    bfs(br,diss,viss);
    int distancelr = disf[r];
    for(int i=1;i<=n;i++){
        // 若某个节点到两个端点的距离和为两个端点的距离则为简单路径上的节点
        if(disf[i]+diss[i]==distancelr){
            b.push_back(i);
        }
    }
    bfs(b,dist,vist);
    int ans = 0;
    for(int i=1;i<=n;i++){
        if(dist[i]!=0){
            ans+=dist[i];
        }
    }
    cout<<ans<<endl;
    return 0;
}

G.小红的树上路径查询(hard)

待补。。

离线安装 nvidia-docker2(nvidia-container-toolkit) 很多时候大家都有用docker使用gpu的需求,但是因为网络等原因不是那么好用,这里留了一个给ubuntu的安装包,网络好的话也提供了在线安装方式。 阅读详情

相关推荐

在 CentOS Stream 10 上搭建 Kubernetes 集群并支持开发调试与日志查看

搭建 Kubernetes 集群的每个步骤详细的文档。

灵犀物润 1640

牛客2023年情人节比赛 (c/c++题解)

咳咳~~我突然发现牛客比赛里面,可能打的人最少的就是情人节专场了~~因为都去陪女朋友啦~~~,只有我们单身狗才会来做吧,呜呜呜呜!这是属于单身狗的比赛,冲。

m0_73976567的博客 561

Seafile搭建以及onlyoffice在线办公

部署seafile docker-compose.yml 如下: 参考此篇文章 version: '2.0' services: db: image: mariadb:10.1 container_name: seafile-mysql environment: - MYSQL_ROOT_PASSWORD=db_dev # mysql root的密码,同时修改 seafile的DB_ROOT_PASSWD与这个一致 - MYSQL_LOG_CONSOLE

dwdcth的专栏 4656

牛客周赛 Round 64(博弈论、思维、构造、LCA、换根DP)

先手只需要第一步操作时,选择多出来的这一手操作,即可转化为 ‘先手’ 变 ’后手‘ 且出现 ’后手必胜的局面‘。每轮操作,后手都选先手没有操作的两个元素,即可实现使四个元素整体减一,直到出现==’例1’==,后手必胜。为了方便表示,把 2 * 2 的矩阵的四个元素定义为 1、2、3、4,如下图所示。这时,对于后手来说,肯定希望通过操作,使得==由’例3‘变为’例1‘==的情况。即,要么元素2和元素3拿完,剩下元素4;可以把点分为两类,一类为 u 为根的子树内的点,一类为 u 为根的子树外的点。

mldl_的博客 1029

fastbin attack快速入门

0x01 fastbin简介 Fastbin包含0x20~0x80大小bin的数组指针,用于快速分配小堆块。fastbin按照单链表结构进行组织,相同大小的bin在同一个链表中,fd指向下一个bin,采用LIFO(Last In First Out)机制。在fastbin中,堆块的inuse标志都为1,处于占用状态,防止chunk释放时进行合并,加快小堆块的分配。 正常fastbin的使用 通过这个简单的案例来了解fastbin的单链表结构,malloc和free的过程。 #include<stdio

abelxu 1571

Linux 下 OpenClaw 安装全记录:从零到一的保姆级图文教程

本文主要介绍了Linux 下 OpenClaw 安装全记录:从零到一的保姆级图文教程,希望能对学习使用OpenClaw 的同学们有所帮助。 文章目录 1. 背景 2. 实战教程 2.1 步骤一 安装Node.js 2.2 步骤二:安装git 2.3 步骤三:安装并配置OpenClaw 2.4 步骤四:配置OpenClaw 2.5 步骤五:配置模型 2.6 步骤六:对话 3. 后续使用步骤 4. 报错解决方案 5. OpenClaw的卸载

weixin_43178406的博客 10万+

牛客周赛 Round 64补题(A~F)

至此rank355,这场对我来说还是比较友好的,前十分钟a了三道,然后开始卡D,以为博弈论,又没发现这么简单,最后分析才得出答案。还有E,发现根本不会做,F的树形DP也还没学,就这样吧,下面是补的两道题,E F。

2302_79449906的博客 859

Linux(31)Rockchip RK3568 Ubuntu22.04上部署 Docker: 问题与解决方案

本博客在总结这些问题及其解决方案,为遇到类似问题的兄弟提供参考,如果我后续有碰到其他Docker 问题也会在此更新补充。

我其实什么都不会 1645

牛客周赛 Round 64(A~E)

由于题目范围不大,考虑暴力求解。这个数,那么与他有关的就是。偏移过程具体看代码~~

wh233z的博客 1382

Yolo11改进:Block改进|MixDehazeNet,用于图像去雾网络的混合结构块|即插即用|附代码

https://arxiv.org/pdf/2305.17654 图像去雾是低级视觉领域中的一项典型任务。先前的研究验证了大型卷积核和注意力机制在去雾中的有效性。然而,存在两个缺点:引入大型卷积核时容易忽略图像的多尺度特性,而注意力模块的标准串联方式没有充分考虑雾分布的不均匀性。在本文中,我们提出了一种名为混合结构图像去雾网络(MixDehazeNet)的新型框架,该框架解决了上述两个问题。具体而言,它主要由两部分组成:多尺度并行大型卷积核模块和增强并行注意力模块。与单个大型卷积核相比,多尺度的并行大型卷积

m0_47867638的博客 1270

出现 Transaction rolled back because it has been marked as rollback-only 解决方法

出现 Transaction rolled back because it has been marked as rollback-only 解决方法

码农研究僧的博客 1万+

牛客周赛 Round 64 G题 小红的树上路径查询(hard)(LCA树上公共祖先,换根dp,推式子)

之间的距离可以使用LCA进行快速求解,这也是一个经典问题。对于每一个点到其余所有点的距离之和,我们可以使用换根。求出,这是一个经典问题,这里不再赘述。到所有点的距离之和,还有点。因此,原式相当于求出点。对于每一次询问的路径。

weixin_74754298的博客 855

【科研数据获取】根据Excel表个中的企业/公司信息批量获取经纬度坐标,并进行地图可视化

批量获取企业/公司的经纬度坐标,并进行地图可视化1 需求2 实现途径3 需求逐步实现 1 需求 在做项目的时候,老板或者项目答辩时候甲方最喜欢看到的就是可视化结果,尤其是涉及到地图可视化。很多时候会遇到企业/公司的数据,想要做地图可视化,必不可少的就是要获取它们具体地址:第一种就是像查户口一样精准一下具体的城镇街道,还有一种就是经纬度信息,前一种属于文字内容往往用于管理方面,第二种数字信息多用于数据处理与分析。 2 实现途径 获取地理信息数据,自然需要使用到地图的功能,这里直接采用百度地图的拾取坐标系统,

lys_828的博客 2336

牛客周赛64(C++实现)

牛客周赛64,前4题讲解。

Yui_的博客 1293

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

牛客周赛64 个人题解

D题 小红和小紫的博弈游戏:小红和小紫拿到了一个2∗2的矩阵,她们准备在这个矩阵上玩一个博弈游戏。 游戏的规则是:两人轮流操作,每次操作时选择两个相邻的正整数(相邻格子,不包括斜角),使它们同时减1。谁先无法操作谁就输了。 小红先手操作,她想知道,两人都使用最优策略的情况下,谁将获得最终胜利? E题 小红的字符串重排:给定一个字符串s,将其重排为s1,使得s1和s的每个对应位置的字符都不相同,如果无解则输出-1。 F题 小红的树上路径查询(easy):给定一棵树,给定一条点x和y的简单路径,请给出树上所有节

qq_45554473的博客 871

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

牛客周赛 Round 64 (A~F)

【代码】牛客周赛 Round 64 (A~F)

2302_79372568的博客 643

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

牛客周赛 Round 64 A-F

首先dfs遍历树,将树种路径上所有点标记,再从路径起点开始dfs_1 一遍,因为是在树上,所以边权为1,不用考虑权重,01dfs,如果是路径上的点dist=0,否则路径大小则为父节点的基础上+1。该题如果求树上所有节点到路径的最短距离,不是很好求,但是如果换个角度,从路径上的起点出发,路径上的标记的点dist为0,求该路径到树上所有节点的最小距离和,就会很方便。该题的坑比较多,读题的时候思路为将每个字母个数记录一下,然后遍历字符串,用其他的字母填入,如果有一个字母个数大于其他所有字母总和,输出-1。

2301_80281705的博客 1390

【牛客周赛64】个人补题D、E

上周打的,这周才想起来写补题,老拖延症了。ABC题简单,暂且略过。

头顶尖尖的博客 465

牛客周赛64复盘:C++算法实战中的核心思路与优化技巧

数据结构与算法是计算机科学的核心基础,其原理在于通过高效的数据组织和计算策略解决复杂问题。掌握这些技术对于提升编程能力、通过技术面试以及优化实际项目性能具有重要价值,广泛应用于搜索引擎、推荐系统、数据库管理等场景。本文以牛客周赛64为例,深入剖析了C++选手在竞赛中如何运用动态规划、字符串哈希等关键技术解决实际问题,并分享了STL容器使用、输入输出优化等工程实践技巧,帮助读者在算法实战中提升效率与准确性。

WGH100817的博客 447

牛客周赛64 D小红和小紫的博弈游戏

那么这样分组有什么好处呢:鉴于每次都选相邻的格子,所以小红和小紫两人每操作一次的话,(a,d)、(b,c)两个分组各自的元素和都会减1,当他们各自分组和只要有一组到达了0,那么不论怎么选都不能确保选到了相邻的两个格子里的数均大于0。因为每次都要选择两个相邻的格子,且这两个格子里的数都是正整数,那么,我们不妨这样进行一个分组:(a,d),(b,c)。为什么这样分呢:因为你要在2*2的矩阵里选择相邻的格子,他们肯定一个属于主对角线上(a,d),另一个属于副对角线上(b,c)。

hsyhcr的博客 360

牛客周赛 Round 64 D小红和小紫的博弈游戏题解

题目大意是小红先手,两人轮流从2*2的矩阵中选择相邻的两个整数使他们同时减1,这里的相邻指的是在矩阵中位置的相邻而并不是数值大小的相邻。即是a11和a22与a12和a21是无法同时减少的,那么我们可以令sum1=a11+a22,sum2=a12+a21,那么他们每次操作时sum1和sum2都会同时减1,取sum=min(sum1,sum2),那么判断sum是否是2的倍数,若是,则小紫胜,否则小红胜。

ci_you123的博客 376

牛客周赛 Round 64 -F 小红的树上路径查询(easy)

核心思路在于第二次bfs, 创建一个超级节点.这里我用dfs标记了路径上所有的点。复杂度为o(n * q)

qq_38720513的博客 174

牛客周赛 Round 91 EF

思路:模拟,能够翻转成功就三种情况:(1)矩阵只有两行全是1 (2)矩阵只有两列全是1 (3)矩阵的1呈现”十“字状,且交点为0思路:根据唯一分解定理:可知一个数的为本题要我们求n!的因子个数,n!=(n-1)!*n,n!可以分解成形如:,括号内的代表(n-1)!的分解,外面的是n的因数分解,那么n!的因数分解就是将原来(n-1)!中已经出现过的底数进行指数相加,然后再增加新的底数,化简为:,n!

2302_79372568的博客 743

牛客周赛 Round 67

中间acm停了半年,现在水平退步很明显,想着刷一刷牛客周赛练一练,晚上发挥很烂,被第二个题卡了半天。不过比赛一结束,把除了最后一个题外的题都ac了。

Beau_Will的博客 1220

牛客周赛 Round 79

那么好,确实通过观察,我们其实只需要判断第一个字符就可以得出答案,且无论如何都有满足条件的质数。个,最小值贪心的去取的话会发现肯定是隔一个染色两个这种,也就耗费三个小球操作一次,但是需要注意如果最后还剩下两个白色小球的话也可以染色,所以最小值其实就是。首先稍微观察一下这棵树能发现每个鸡爪(蓝色部分)都是都是一条简单路径,而且每层的鸡爪数量从上往下每层是上一层的。其次,红、蓝、紫、绿圈的每个部分也都是一条简单路径,并且从上往下也是每层是上一层的。的倍数的放一堆,不是倍数的放一堆,然后再考虑。

H1727548的博客 1338

牛客周赛(Round 105)

这题就解决了10000000079982443530x3f3f3f3f。

一本苦涩的书 1781
上一篇: 牛客周赛63
下一篇: 牛客周赛65
AstronomyFirst
博客等级 码龄4年 195粉丝 17原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值