牛客-模拟、枚举、贪心 2022.11.15

win10 运行lisflood_8踩过的坑 1、安装cuda及VS2019 https://www.bilibili.com/read/cv7335974/ 2、netcdf.h头文件找不到问题 https://www.cnblogs.com/lyggqm/p/12926974.html https://blog.csdn.net/u011954296/article/details/54617048 3、编码问题 https://blog.csdn.net/qq_33485434/article/details/81196843 4、 阅读详情

月月查华华的手机

按照字母A-Z的顺序,分别按照下标的从小到大记录每个字母的位置。之后对于每个名字的查询,从名字的第一个字母出现的第一个位置开始,二分查找之后每个字母的位置是否大于当前的位置,如果大于,更新当前位置,直至名字数组结束,说明存在子序列,否则不存在。

对于第一个字母是否存在的情况在遍历之前进行特判。

#include <bits/stdc++.h>
using namespace std;
int main() {
    string A;
    cin >> A;
    vector<vector<int>> p;
    for(int i = 0; i < 26; i++) {
        vector<int> tmp;
        p.emplace_back(tmp);
    }
    for(int i = 0; i < A.size(); i++)
        p[A[i] - 'a'].emplace_back(i);
    int n;
    cin >> n;
    for(int i = 0; i < n; i++) {
        string B;
        cin >> B;
        if(p[B[0] - 'a'].size() == 0) {
            cout << "No\n";
            continue;
        }
        int start = p[B[0] - 'a'][0];
        bool flag = true;
        for(int j = 1; j < B.size(); j++) {
            int idx = upper_bound(p[B[j] - 'a'].begin(), p[B[j] - 'a'].end(), start) - p[B[j] - 'a'].begin();
            if(idx == p[B[j] - 'a'].size()) {
                flag = false;
                break;
            }
            start = p[B[j] - 'a'][idx];
        }
        if(flag)
            cout << "Yes\n";
        else
            cout << "No\n";
    }
    return 0;
}

ranko的手表

遍历所有的时间,记录所有符合的开始时间和结束时间,遍历符合条件的开始时间数组和符合条件的结束时间数组,两者时间不能相等,记录最大差值和最小差值即可。

#include <bits/stdc++.h>
using namespace std;
int main() {
    string s1, s2;
    cin >> s1 >> s2;
    vector<int> res1;
    for(int i = 0; i <= 1439; i++) {
        int tenhour = (i / 60) / 10, gehour = (i / 60) % 10;
        int tenmin = (i % 60) / 10, gemin = (i % 60) % 10;
        if(s1[0] != '?' && tenhour != (s1[0] - '0'))
            continue;
        if(s1[1] != '?' && gehour != (s1[1] - '0'))
            continue;
        if(s1[3] != '?' && tenmin != (s1[3] - '0'))
            continue;
        if(s1[4] != '?' && gemin != (s1[4] - '0'))
            continue;
        res1.emplace_back(i);
    }
    vector<int> res2;
    for(int i = 0; i <= 1439; i++) {
        int tenhour = (i / 60) / 10, gehour = (i / 60) % 10;
        int tenmin = (i % 60) / 10, gemin = (i % 60) % 10;
        if(s2[0] != '?' && tenhour != (s2[0] - '0'))
            continue;
        if(s2[1] != '?' && gehour != (s2[1] - '0'))
            continue;
        if(s2[3] != '?' && tenmin != (s2[3] - '0'))
            continue;
        if(s2[4] != '?' && gemin != (s2[4] - '0'))
            continue;
        res2.emplace_back(i);
    }
    int min1 = INT_MAX, max1 = INT_MIN;
    for(int i = 0; i < res1.size(); i++) {
        for(int j = 0; j < res2.size(); j++) {
            if(res1[i] >= res2[j])
                continue;
            min1 = min(min1, res2[j] - res1[i]);
            max1 = max(max1, res2[j] - res1[i]);
        }
    }
    cout << min1 << " " << max1 << endl;
    return 0;
}

牛妹和01串

模拟遍历01串即可。

#include <bits/stdc++.h>
using namespace std;
int main() {
    string s;
    cin >> s;
    int res = 0, start = 0;
    while(start < s.size()) {
        bool flag = false;
        for(int j = start + 1; j < s.size(); j++) {
            if(s[j] == s[start])
                continue;
            else {
                flag = true;
                start = j;
                break;
            }
        }
        if(flag) {
            res += 1;
            start += 1;
        } else
            break;
    }
    cout << res << endl;
    return 0;
}

兔子的区间密码

异或运算+大数据规模,考虑采用位运算,位运算需要记录64位二进制数。可以观察一下样例的几组数据的规律,如果区间最大值的二进制位数相较于最小值要高出一位以上,即最大值二进制最高位为一,而最小值的该位置为零,最小值在下一位才为一,这种情况是大一位;如果是最小值的该位置后几个位置才存在第一个一,说明更小。则说明存在两个数字,可以使得异或值为所有二进制位值都为一,只从二进制最低位到最大值的二进制最高位。

最大值二进制:1000 最小值二进制:0100 说明存在 1000 ^ 0111  = 1111

最大值二进制:1001 最小值二进制:0010 同理

如果二者最高位相同,则比较下一位,直到出现不同的二进制位置,那么从这一位置开始往后到二进制的最低位,存在全为一的最大值,之前的高位置都相同,异或结果为0。

最大值二进制:110010 最小值二进制:110001 说明存在异或结果为110011

#include <bits/stdc++.h>
using namespace std;
int main() {
    int t;
    cin >> t;
    for(int i = 0; i < t; i++) {
        long long l, r;
        cin >> l >> r;
        if(l == r)
            cout << 0 << endl;
        else if((l + 1) == r)
            cout << (l^r) << endl;
        else {
            vector<int> left(64, 0);
            vector<int> right(64, 0);
            vector<long long> num(64, 0);
            long long sum = 1;
            int lidx = 0, ridx = 0;
            while(r) {
                num[ridx] = sum;
                right[ridx++] = r % 2;
                r /= 2;
                sum *= 2;
            }
            while(l) {
                left[lidx++] = l % 2;
                l /= 2;
            }
            long long res = 0;
            while(ridx >= 0) {
               if(right[ridx] == left[ridx])
                   ridx -= 1;
                else {
                    while(ridx >= 0) {
                        res = res + num[ridx];
                        ridx -= 1;
                    }
                    break;
                }
            }
            cout << res << endl;
        }
    }
    return 0;
}

 [USACO 2007 Nov G]Sunscreen

每头奶牛都有一个区间范围,有一些数量的药剂,这些药剂使用后可以使奶牛的数值保持在一个值,问最多可以有多少头奶牛的数值保持在自身规定的区间范围

对于药剂的数值,按照从大到小排序,对于奶牛的区间,按照区间最小值从大到小排序,之后遍历奶牛,对于每头奶牛,遍历药剂看是否存在符合条件的药剂,记录结果即可。

#include <bits/stdc++.h>
using namespace std;
struct node {
    int min;
    int max;
};
struct ss{
    int spf;
    int cov;
};
bool cmp1(struct node& a, struct node& b) {
    return a.min > b.min;
}
bool cmp2(struct ss& a, struct ss& b) {
    return a.spf > b.spf;
}
int main() {
    int c, l;
    cin >> c >> l;
    vector<node> p;
    for(int i = 0; i < c; i++) {
        struct node tmp;
        cin >> tmp.min >> tmp.max;
        p.emplace_back(tmp);
    }
    sort(p.begin(), p.end(), cmp1);
    vector<ss> z;
    for(int i = 0; i < l; i++) {
        struct ss tmp;
        cin >> tmp.spf >> tmp.cov;
        z.emplace_back(tmp);
    }
    sort(z.begin(), z.end(), cmp2);
    int res = 0;
    for(int i = 0; i < c; i++) {
        for(int j = 0; j < l; j++) {
            if(z[j].spf >= p[i].min && z[j].spf <= p[i].max && z[j].cov >= 1) {
                res += 1, z[j].cov -= 1;
                break;
            }
        }
    }
    cout << res << endl;
    return 0;
}

Fanuc机器人的坐标变换矩阵的研究2 一、Funuc用户坐标系的介绍 二、用户坐标系与世界坐标系的坐标转换 三、 以用户坐标系1为基础旋转变换后的用户坐标系 四、关于点的WPR的含义 4.1:点在用户坐标系和世界坐标系下的坐标关系 4.2 通过转换矩阵返回去推导WPR 阅读详情

相关推荐

37张图详解MAC地址、以太网、二层转发、VLAN

MAC 地址 每个网卡或三层网口都有一个 MAC 地址, MAC 地址是烧录到硬件上,因此也称为硬件地址。MAC 地址作为数据链路设备的地址标识符,需要保证网络中的每个 MAC 地址都是唯一的,才能正确识别到数据链路上的设备。 MAC 地址由 6 个字节组成。前 3 个字节表示厂商识别码,每个网卡厂商都有特定唯一的识别数字。后 3 个字节由厂商给每个网卡进行分配。厂商可以保证生产出来的网卡不会有相同 MAC 地址的网卡。 现在可以通过软件修改 MAC 地址,虚拟机使用物理机网卡的 MAC 地址,并不能保.

networktp的博客 4745

ranko的手表(枚举)

(1)思路: 枚举所有t1,t2可能的分钟数(转换成分钟好算),再遍历这些枚举的可能结果,不断维护更新最大时间间距和最小时间间距,主要就是这个过程该如何枚举:见代码有注释(时有十位和个位,分有十位和个位) (2)测试数据 18:0? 2?:1? (3)代码: // 贪心可以,但是考虑的情况很多且复杂 // 24 *60 枚举可以过 // 将时分统一转换为分钟,到时候好算 // 枚举t1和t2可能的分钟数,合理的先加入到vector容器中 #include <bits/stdc++.h&.

小郑在路上 1259

STM32H750VBT6在Keil5下载失败?5步搞定Flash Download Failed Cortex-M7错误

本文针对STM32H750VBT6在Keil5中遇到的“Flash Download Failed - Cortex-M7”错误,提供了系统性的五步排查法。从硬件连接到驱动检查,再到核心的Flash算法配置、链接脚本核对,以及芯片保护状态等深度排查,帮助开发者快速定位并解决下载失败问题,尤其适用于处理内部Flash与外部QSPI Flash的混合应用场景。

weixin_29239279的博客 481

牛客算法入门25-ranko的手表

牛客算法入门第二十五题(java实现)

qq_65068830的博客 346

Linux系统centos7安装网卡驱动

有时候我们装完Centos或Ubuntu系统会发现没有网卡信息,说明网卡驱动不配置,所以我们要重新安装。 首先去服务器主板官网下载网卡驱动,注意32位和64位。 先查看网卡型号 lspci | grep -i ethernet 我的网卡型号是 00:1f.6 Ethernet controller: Intel Corporation Device 0d55。 网上一找,压根没找到这型号的网卡,别说驱动了。怀着试一试的心态,就安装i219-v系的网卡驱动,还别说,成功了。 针对i21...

wshc18的博客 2万+

sklearn2pmml xgboost缺失值(missing)处理的坑

sklearn2pmml xgboost缺失值(missing)如何处理 今天同事在部署xgboost pmml模型时遇到了大坑,线上spark预测和本地python预测结果怎么都不对应,记录一下处理过程。 看了下同事的代码,貌似也没有问题 from sklearn2pmml import PMMLPipeline from sklearn2pmml import sklearn2pmml fro...

Skycrab 8969

北京信息科技大学第十三届程序设计竞赛暨ACM选拔赛(重现赛)题解

题目链接: 北京信息科技大学第十三届程序设计竞赛暨ACM选拔赛(重现赛)_ACM/NOI/CSP/CCPC/ICPC算法编程高难度练习赛_牛客竞赛OJ大学ACM校赛新生赛是面向ACM/ICPC/CCPC/区域赛校队选手,巩固经典专题的编程比赛,ACM入门训练,大学ACM校队选拔比赛。https://ac.nowcoder.com/acm/contest/20278#question这套题涉及的算法并不多(除了I题需要采用容斥和莫比乌斯),其余的都是简单的算法,更重考察的就是做题的思维能力. A.lzh的

qq_49593247的博客 989

这20个网络工程项目经验,帮我跳槽加薪不止一次

嘿,大家好,我是圈圈,一个在网络工程圈子里混了十多年的老鸟。从国企的网管起步,到现在给大厂做顾问,我见过太多简历:有的光鲜亮丽,证书一堆,但一聊项目,就露怯;有的简历朴实,但列出的项目经验让人眼前一亮,直接拿offer。为什么?因为招聘官最看重实战。理论谁都会背,项目经验才是你的“硬通货”。尤其在网络工程这行,项目不光证明你的技能,还展示你解决问题的能力。今天,我就分享20个我亲身经历或见过的网络工程项目经验。每个都值得写进简历,不是吹牛,这些项目帮我跳槽加薪不止一次。

网络技术联盟站 432

模拟、枚举、贪心(二)

A-Captcha Cracker 简单模拟即可 #include<bits/stdc++.h> using namespace std; int main(){ int t; cin>>t; while(t--){ string s,ans; cin>>s; for(int i=0;i<s.size();i++){ if(s[i]=='z' && s.siz.

zhn的博客 1080

Linux下驱动开发_块设备驱动开发(硬件上采用SD卡+SPI协议)

这一篇文章将采用SD卡作为存储硬件,利用SPI协议与SD卡通信,完成块设备驱动开发测试。 SD卡可以更加形象的表示块设备开发过程,明白硬件如何交互,完成数据读写。

2603

SAP S/4HANA 数据归档的实施方法

实施 SAP S/4HANA 数据归档是一个系统的过程,涉及到策略的定义、技术的执行以及后续的维护和验证。正确的归档策略不仅能优化系统性能,还能帮助企业降低运营成本,确保数据安全,并符合相关法律法规的要求。通过以上案例,我们可以看到不同行业如何依据自己的业务需求和法规要求,利用 SAP S/4HANA 的强大功能来实现数据归档的目标。这些实践证明了数据归档在现代企业信息管理中的重要地位和作用。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 890

笔面试算法--贪心和枚举(疯狂的自我检索者、chika和蜜柑、you和帆船、数位染色(重点)、ranko的手表)

#include<iostream> #include<cstdio> #include<cmath> #include<stdio.h> #include<stdlib.h> #include<vector> #include<iomanip> #include<algorithm> #include<queue> #include<stack> #include<map&g...

0k-ok 516

28-Halcon-- union_object_model_3d函数功能(用于3D模型融合)

Halcon算子union_object_model_3d是专业的3D模型融合工具,主要用于多视图拼接、部件组装和多源数据融合。该算子支持点云、网格和参数化模型输入,提供多种融合算法选择,包括基础点云拼接('points_cloud')、网格融合('mesh')和精确CAD布尔运算('cad')。工业应用涵盖逆向工程扫描拼接、汽车部件虚拟装配等场景,支持性能优化如空间分区和流式处理。算子还解决颜色属性融合、法向量保留等特殊需求,并提供拼接误差分析、拓扑验证等质量评估手段。最佳实践包含动态场景重建工作流和CA

weixin_45590420的博客 1055

牛客周赛 Round 54

的因子没有用,所以我们直接暴力枚举因子,然后建边直接跑。,只是转移的时候要加入条件,只有第。思路:直接将饲料种类存到。个位置的时候我才进行转移。

weixin_73914071的博客 1207

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

2021算法竞赛入门班第一节课枚举贪心习题

文章目录1.明明的随机数2.回文日期3.校门外的树4.[HNOI2003]激光炸弹5.Subsequence6.字符串7.丢手绢Protecting the Flowers毒瘤xor铺地毯铺地毯校门外的树排座椅 1.明明的随机数 链接 题目大意就是:输入n个1到1000之内的数,然后去重排序输出,即可 #include<bits/stdc++.h> using namespace std; set<int> s; //set集合自动排序去重 int n , num; int mai

とうーうぐん 2562

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

牛客2019湘潭大学程序竞赛

官方题解   都是中文题不需要翻译,话说,我居然sb的在a题看错题目错了3发   ABD签到题,D题贪心思维,没啥好说的 CMath Problem   我觉得这题是我卡了最久的题,数学不好推不出来,然后打了个表发现的,官方题解里有证明为什么a=192*q+1,q是自然数。知道这个之后就很好做了,我们就可以求出在r范围内有多少符合的数,和l-1范围内有多少符合的数做差就可以了。像对于x,我...

weixin_30561177的博客 121

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

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

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

WGH100817的博客 447

牛客练习赛20

礼物 背包 1 #include <bits/stdc++.h> 2 using namespace std; 3 int f[1111]; 4 5 int main() { 6 int T; 7 scanf("%d", &T); 8 while(T--) { 9 int N, M, K,...

weixin_30765475的博客 81

CSP2019 游记

网站给出的时间不是文章的发布时间,更不是文章的最后修改时间。 下面的时间将 2019 年 11 月 16 日(比赛第一天)作为 Day1;将 2019 年 11 月 15 日(比赛前一天)作为 Day -1。(你也没见过公元 0 年对吧) Day -28(初赛) 考场居然没有给每个考号分配座位(毕竟真正参加的人不多),到了考场现场在每个考室内部把人按照准考证号大小排序。(一开始选了一个基准值还...

破壁人五号的博客 1454

牛客网笔试模板必刷题 - Python算法学习指南

牛客网笔试模板必刷题合集包含147道Python算法题目,覆盖笔试90%+知识点。题目分为基础算法、贪心、数学、搜索、树图、数据结构和动态规划7大类,难度从入门到困难不等。包含快速排序、KMP、Dijkstra等经典算法模板,适合笔试前突击复习。所有题目采用ACM模式,配套详细分类统计和核心考点说明,帮助考生高效掌握高频算法题型。

m0_54524462的博客 416

个人算法题精简导航整理(精炼汇总,含知识点、模板题、题单)

本章节内容主要做一个全局算法题导航指引,含有代码基本模板、相对应习题以及相关知识点,所有题目围绕这个导航索引进行补充扩展,目前博主水平有限也在不断学习更新当前博客内容。博客目录索引(持续更新)自定义的键值对集合Pair:在acwing中需要自定义K x;V y;} }

每个人都是独一无二的,把握好自己的节奏,跟着自己的心走。 2459

近期总结2023.10.16

28.(839D)对于两个数 a,b,选x使得a=abs(a-x),b=abs(b-x),当x的值小于 (a+b)/2 时,它保持原本的单调性,当x的值等于(a+b)/2时,a==b,当x的值大于(a+b)/2时,单调性反一下。31.(820f)(s1s2s3...)%9=(s1+s2+...)%9,可前缀和,将值域处理成余数的暴力枚举来满足式子,例如(a+b)%m==k首次出现的a,b,将可以的处理成余数记录首次出现位置,暴力枚举余数。//按第一位从小到大。32.找到周期性开始点取余周期(811E);

m0_75027890的博客 277

Java解合数减法问题

→ No其他所有 x ≥ 4 且 ≠ 5,7,11 → Yes为什么?对于 x ≥ 12:如果 x 是偶数 → 可以用多个 4 组成(因为 4×k = x,当 x≥4 且偶数时成立)如果 x 是奇数 → 减去 9(奇合数),得到 x-9,它是偶数且 ≥ 3(因为 x≥12 → x-9≥3),但注意:x-9 必须 ≥4 才能被合数组成!当 x=13 → 13-9=4 → OK当 x=15 → 15-9=6 → OK...

q1397180534的博客 497

【每日一题一期】日常算法题题集

每日一题一期题单链接:Click Here 每道题的题解会由博主做完以后总结然后发布的 时间 题号 题解 来源 算法备注 3月25日 NC50439 村人B 牛客练习赛50-C 优先队列 + 排序 3月26日 NC13230 村人B 美团2017年CodeM大赛-初赛A轮 区间DP,区间DP小结 3月27日 NC15553 村人B,满天星 2018年长沙理工大学程序设计...

橘嘉禾 82

京东2017校招编程题复盘:并查集、单调栈与动态规划全解析

并查集是一种高效处理集合合并与连通性查询的数据结构,单调栈则擅长解决区间统计与环形数组类问题,二者都是大厂校招笔试中高频考察的算法模型。理解其底层原理,不仅能应对“集合合并”“环形可见对”等经典题目,更能培养从复杂问题描述中快速识别算法本质的能力。动态规划与枚举搜索同样构成笔试的核心算法体系,掌握状态定义与边界处理尤为关键。通过复盘京东2017校招编程真题,可以清晰看到这些算法在实际题目中的出题方式、常见陷阱与优化思路,为系统备战校招笔试提供可落地的训练路线和应试策略。

weixin_34074740的博客 289

搜狗2016研发工程师编程题:字符串处理与区间DP实战解析

算法面试与笔试中,字符串处理、枚举目标状态和区间动态规划是最常见的基础能力考察点。无论是字符频率统计、交替串最少修改次数,还是双端取数博弈,核心都在于理解问题的目标状态与状态转移逻辑。以搜狗2016研发工程师编程题为例,通过哈希计数、目标模式枚举和差值DP等经典方法,不仅能在限定时间内写出稳定无Bug的代码,还能在实践中掌握边界处理与复杂度优化的工程技巧。这类题目广泛出现在大厂在线测评和研发岗筛选中,适合用来验证基本功、提升笔试稳定性。掌握这些模型后,面对同类算法题时能更快识别考点并选择正确解法。

weixin_30265103的博客 410
上一篇: 牛客-模拟、枚举、贪心 2022.11.14
下一篇: 牛客-模拟、枚举与贪心 2022.11.16
Ls_attack
博客等级 码龄10年 25粉丝 81原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值