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

计蒜客 2020 蓝桥杯大学 B 组省赛模拟赛(一) 题目集传送门 A. 结果填空:有趣的数字 蓝桥杯标准的送温暖题,枚举每个数判断是否含有数字5并进行判素数后计数即可。 const int MAXN = 100000; bool check(int n) { while(n) { if(n % 10 == 5) return true; n /= 10; } return false; } ... 阅读详情

字符串

滑动窗口,写判定当前子串是否包含所有的字母

#include <bits/stdc++.h>
using namespace std;
int num[26] = {0};
bool bingo() {
    for(int i = 0; i < 26; i++) {
        if(num[i] == 0)
            return false;
    }
    return true;
}
int main() {
    memset(num, 0, sizeof(num));
    string s;
    cin >> s;
    int start = 0, res = INT_MAX;
    for(int i = 0; i < s.size(); i++) {
        num[s[i] - 'a'] += 1;
        if(bingo()) {
            res = min(res, i - start + 1);
            while(start < i) {
                num[s[start] - 'a'] -= 1;
                start += 1;
                if(!bingo())
                    break;
                res = min(res, i - start + 1);
            }
        }
    }
    cout << res << endl;
    return 0;
}

加减

对数组数据按照从小打大排序,前缀和记录相邻数据之间的差值,经过k次操作如果需要相同数据出现的次数最多,那么肯定是变化为数组中已经存在的数字,以当前数组位置作为左端点,二分求解右端点的位置。

#include<bits/stdc++.h>
using namespace std;
const int maxn=1e5+10;
long long f[maxn];
long long delta[maxn];
long long k;
bool judge(int l,int r) {
    int mid = (l + r)>>1;
    //处于[l, mid]区间的所有数变成mid需要的操作数
    long long left = f[mid] * (mid - l + 1) - (delta[mid] - delta[l-1]);
    //处于[mid + 1, r]区间的所有数变成mid需要的操作数
    long long right =  (delta[r] - delta[mid]) - (r - mid) * f[mid];
    long long ans = left + right;
    return ans <= k ? true : false;
}
int main() {
    int n;
    cin >> n >> k;
    for(int i = 1; i <= n; i++)
        cin >> f[i];
    sort(f + 1, f + n + 1);
    for(int i = 1; i <= n; i++)
        delta[i] = delta[i - 1] + f[i];
    int res = 0;
    for(int i = 1; i <= n; i++) {
        int l = i, r = n;
        while(l < r) {
            int mid = (l + r + 1)>>1;
            if(judge(i, mid))
                l = mid;
            else
                r = mid - 1;
        }
        res = max(res, r - i + 1);
    }
    cout << res << endl;
    return 0;
}

牛牛的木板

第一遍写的思路是:统计连续的1和0的个数,1的个数为正数记录,0的个数为负数记录,之后遍历连续数组每个位置,以当前位置为起点,寻找最后的端点。但是总是超时,于是考虑能否二分,但是二分其实判定的函数时间复杂度也是O(n).之后再想,其实不需要做一个连续化,直接在原本数组上进行滑动窗口操作,即可判定。

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param n int 
     * @param m int 
     * @param a intvector 
     * @return int
     */
    int solve(int n, int m, vector<int>& a) {
        // write code here
        int res = 0, sum = 0, start = 0, end = 0;
        while(end < a.size()) {
            while(end < a.size()) {
                if(a[end] == 1)
                    sum = sum + 1;
                else {
                    if(m > 0) {
                        m -= 1;
                        sum = sum + 1;
                    } else
                        break;
                }
                end = end + 1;
            }
            res = max(res, sum);
            while(start < a.size() && m <= 0) {
                if(a[start] == 1) {
                    sum -= 1;
                } else {
                    m += 1;
                    sum -= 1;
                }
                start += 1;
            }
        }
        return res;
    }
};

丢手绢

滑动窗口,由于顺逆时针,所以数组元素要存储两遍,进行前后拼接形成循环

#include <bits/stdc++.h>
using namespace std;
int main() {
    int n;
    cin >> n;
    vector<int> p;
    int sum = 0;
    for(int i = 0; i < n; i++) {
        int a;
        cin >> a;
        p.emplace_back(a);
        sum = sum + a;
    }
    int res = INT_MIN;
    for(int i = 0; i < n; i++)
        p.emplace_back(p[i]);
    int start = 0, end = 0, sum1 = 0;
    while(end < p.size()) {
        while(end < p.size()) {
            sum1 = sum1 + p[end];
            res = max(res, min(sum - sum1, sum1));
            end += 1;
            if(sum1 * 2 >= sum)
                break;
        }
        res = max(res, min(sum - sum1, sum1));
        while(start < p.size() && sum1 * 2 >= sum) {
            sum1 -= p[start];
            start += 1;
        }
    }
    cout << res << endl;
    return 0;
}

Dify 从入门到熟悉100 天的学习大纲 理解 Dify 的核心概念,熟悉操作界面,并能创建简单的 AI 应用。祝你在这 100 天的旅程中学有所成,成为一名优秀的 AI 应用开发者!掌握生产环境部署、监控、调优,并关注 Dify 生态和前沿动态。探索多模态、Agent、API 集成、性能优化等高级主题。掌握工作流编排、高级提示词技巧、知识库优化等核心功能。 阅读详情

相关推荐

基于ROS下的安卓手机图像和IMU跑ORB-SLAM3

接之前文章继续,手上没有现成的单目+IMU硬件,但是安卓手机几乎人人都有。因此,本文讲下如何用手机跑ORB-SLAM3的Mono和Mono_Inertial。 1. 手机与PC通信 基于ROS下的信息发布和订阅,手机和PC在一个局域网下进行信息(image和IMU)传输。 手机APK参考了github上的2个开源Android_Camera-IMU和android_ros_sensors,基于ros_java生成安卓APP,下载安装任一个APP到安卓手机,界面分别是这样: 手机和PC连一个无

h_372101的博客 1万+

牛客-模拟、枚举与贪心 2022.11.16

分成三类,稳定值增加,不变,减少。考虑从后往前遍历减少的情况,可以发现最后一个要符号条件,需要当前值大于消耗值,而恢复值是不需要看的,因为消耗完就结束了,所以恢复值不是那么重要。看到异或操作其实第一反应就是将数据改写成二进制形式,之后再观察样例的输出结果,可以发现如果当前二进制位零的个数超过了数据个数的一半,就讲结果这一位二进制写为零,否则写为一(因为需要多组可行解的情况下,数值尽可能小)(零的个数正好为一半时可以为零,也可以为一,但是为了数值尽可能小,所以选择为零)但是直接遍历只能过60%,还需要优化。

Ls_attack的博客 469

Bioinformatics2021 | FraGAT+:基于分子原始片段的多尺度图注意力机制的分子性质预测模型

Bioinformatics2021 | FraGAT:基于分子原始片段的多尺度图注意力机制的分子性质预测模型

justBeHerHero 1999

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

从样例可以发现,首先可以假设所有的奶牛都为最高值,然后对于每一对给出的奶牛的区间,在这区间之间编号的奶牛需要高度减去一(区间为左开右开)。经过一番操作之后,即可得到所有奶牛可能的最高值。(当然可能重复出现的区间,对于重复出现的区间不需要进行重复操作即可)从高位到低位依次枚举,优先考虑从0变为1,就是说尽可能的让这个数小一点。可以考虑最开始每一位为 0/1,然后到最后是否可以变回 1。贪心排序花和道路所需时间即可。

Ls_attack的博客 286

VSCode + ESP-IDF 项目搭建及配置

VSCode 搭建 ESP-IDF 开发环境

weixin_51358957的博客 2万+

绕过Google Play:获取Expo Go安卓APK的实用指南

本文为国内安卓开发者提供了绕过Google Play商店获取Expo Go APK的实用指南。针对无法访问Google Play的痛点,详细介绍了通过官方GitHub Releases、可信第三方网站(如APKMirror)及APK下载器等多种安全获取途径,并重点讲解了APK安装、安全验证(核对签名)及常见连接问题的排查方法,帮助开发者顺利开启React Native开发之旅。

weixin_29006701的博客 577

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

之后对于每个名字的查询,从名字的第一个字母出现的第一个位置开始,二分查找之后每个字母的位置是否大于当前的位置,如果大于,更新当前位置,直至名字数组结束,说明存在子序列,否则不存在。如果二者最高位相同,则比较下一位,直到出现不同的二进制位置,那么从这一位置开始往后到二进制的最低位,存在全为一的最大值,之前的高位置都相同,异或结果为0。对于药剂的数值,按照从大到小排序,对于奶牛的区间,按照区间最小值从大到小排序,之后遍历奶牛,对于每头奶牛,遍历药剂看是否存在符合条件的药剂,记录结果即可。模拟遍历01串即可。

Ls_attack的博客 392

2026年软考信息安全工程师备考指南

信息安全工程师是信息产业部和人事部举办的软考中新增开的一门考试。软考全称全国计算机技术与软件专业技术资格(水平)考试,这门新开的信息安全工程师分属该考试“信息系统”专业,位处中级资格,是信息产业部和人事部在最新的“国人厅发[2007]139号文件中新增的专业。2016年下半年,第一次开考信息安全工程师(中级)考试。 考试科目: 1.信息安全基础知识,考试时间为150分钟,笔试,选择题; ...

鹿鸣天涯 7396

牛客-模拟、枚举与贪心 2022.11.02

枚举每个点,之后记录以这个点为末尾的所有区间的异或和,然后枚举所有以这个点为起点的区间的值,当存在二者数值相等时,说明异或和为零,此时结果数目+1即可。首先可利用前缀和求取区间的异或和,然后,我就写了一个四重循环然后TLE了。一年前不会写这道题,一年后还是不会,属于是属于是了。

Ls_attack的博客 247

网表导入virtuoso后发现pg pin忘记connect_pg_net/globalNetConnect怎么办?

数模混合项目中经常需要一些需要到virtuoso去连接的线,比如IO上的pg和一些信号线,除了在pr工作中设置skip route之外还需要做好net的赋值,告诉工具虽然我没在物理上有连接,但是实际上应该连什么net,这部分提现在网表里。在Default Net Name中也填写net name,因为这个net需要做global操作,即在顶层定义这个net,所以需要在net name后加个!打开schematic,删除指定cell pin所接net的label。

m0_61544122的博客 969

Windows部署OpenClaw报错不断?这篇环境配置指南帮你解决难题

想在Windows上部署OpenClaw却频频报错?🔧 本文详细梳理了OpenClaw部署必需环境的安装步骤和官方下载地址 📦,提供完整的验证清单和常见问题排查方法,帮你一次性搞定所有环境配置,顺利部署OpenClaw ✅

XiaoqiangClub的博客 6636

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

第一个点无雷,第二个点有雷;这里由于已经假设了第一个点和第二个点的数值(有雷为1,无雷为0),那么可以根据第二列的第二个值推导出第一行第三个点的情况,第四个点同理,......最后还需要进行验证,那么只需要将最后两个值和第二列的最后一个数值进行判定是否相等,如果相等说明这种放置地雷的情况是一种结果,否则不是。查看题解后,思路无误,只是可以在每次移动的时候也进行礼物类型的记录,即构建一个结构体,存储所有的礼物种类和位置,对于结构体按照位置从小到大排序,之后遍历结构体,记录当前的礼物种类类型。

Ls_attack的博客 238

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

牛客-模拟、枚举与贪心 2022.11.11

二维前缀和,如果k*k区域的前缀和为0,说明当前区域一个建筑都没有,不会影响,否则会影响。记录所有有货物xu qi。

Ls_attack的博客 209

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

笔试模拟 day11

本文记录了作者在牛客网上的三道笔试题的解题思路与代码实现。第一题是关于组合包的最大价值问题,作者提出了暴力枚举和贪心两种解法,并指出贪心解法在某些情况下可能不适用,最终通过暴力枚举实现了代码。第二题是买卖股票的最佳时机问题,作者提供了贪心和动态规划两种思路,并通过动态规划实现了代码。第三题是字符串翻转问题,作者通过逐个单词翻转并重新组合的方式实现了字符串的倒置。每道题的思路和代码都详细展示,并附有作者的个人理解和分析。

hi0_6的博客 1098

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

牛客模拟赛2【普及组】

Day 1 T1 #include<algorithm> #include<iostream> #include<cstdio> #include<cmath> using namespace std; int n,jsd,jsc,jsa; string s; int main() { cin>>n; for(int i=1; i<=n; i++) { cin>>s; for(int i=0; i<=s.

JA_yichao欢迎你 cnblogs账号:https://www.cnblogs.com/mayichao/ 294

牛客周赛 Round 54

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

weixin_73914071的博客 1207

【牛客小白月赛23】 A【二进制枚举+bitset】B【数学】 C【二分】 E G【思维】 H【模拟】 I J

A 思路:一开始,可能有点蒙,居然直接暴力求,其实稍微计算一下,就可以发现暴力时间上是过不去的。后面想到了bitset,但是其count()函数的时间复杂度还是不确定,比赛时没敢写,赛后尝试了一发,过了。呵呵。 Code: #include <bits/stdc++.h> using namespace std; typedef long long ll; typedef pair&...

lzs_lazy 454

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

牛客2019湘潭大学程序竞赛

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

weixin_30561177的博客 121

牛客2020跨年场-个人题解

孤单的人都来刷题了。。 前言: 这场比赛总体来说质量还不错,个人觉得有提升,而不是一味的签到. B :dp签到 C:质因分解签到 E:不难看出,顺着1 -> 2 -> 4 -> 3->6->5…这样的顺序构造可以对于每个y,找到最小的x使得f(x)=yf(x) = yf(x)=y D:给三种颜色,他们的个数为a,b,ca,b,ca,b,c.求他们之间的圆上可重排列 a+b+c≤12a +b+c\leq12a+b+c≤12 解法1: 由于颜色个数很小,可以发现他们的排列个数是很小

qq_35577488的博客 287

(新手自用复盘)牛客寒假训练营—3

作为比赛的签到题,这题非常直接,咱们快速过一下思路。

luvsic520的博客 959

2018杭电暑假多校知识点总结(附大一结语)

     大学的第一个年头就这样过去了,在这一年里,有着迷茫也有着奋斗,可惜没有什么汗水。我有不幸,不幸调剂到了软件工程这个陌生的专业,但我却又是幸运的,因为我遇到了一位优秀的学长,在他的指导下才步入了ACM的大坑,我不后悔,也未曾后悔过,我所敲的每一行代码每一道题都让我的大学生活变得充实而有意义,我不很在意最终的成就,但这个东西确实让我有意义有存在有兴趣的生活着。虽然我,资质愚钝,思维木讷,但我...

PleasantlY1的博客 1878

十月训练记录

十月训练记录,待补题

一起学习 920

牛客周赛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

【题解】牛客IOI周赛27-提高组

前言 在家闲着没事打牛客,发现自己被虐了。。。 好像别人的做法都很妙的样子。。。 A. 括号串 模拟题。 判断所给字符串合法等价于: 括号完全匹配 A 串是 B 串的子序列 题意很扯淡。我最开始看到字符串长度可以比最小的小,可以删除 qwq 。 #include<bits/stdc++.h> #define PII pair<int,int> using namespace std; const int mx=1e6+5; int n,m,s[mx],cnt; char a[mx

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

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值