首页 > 其他分享 >2024.09.07米哈游

2024.09.07米哈游

时间:2024-09-09 22:48:40浏览次数:9  
标签:连通 vector 07 int res 2024.09 英桀 米哈 米小游

1.

给定两个正整数n,m,米小游想要求出n-m中的所有整数的哪个数字中4的数量加上 6 的数量最多。
如果有多个这样的数字,请输出最大的。例如某一个数字是 44624,则它有3个4,1个6,所以4和6的数量之和为 4。

打卡题
int main(int argc, char *argv[]) {
    int n,m;
    cin>>n>>m;
    int res = 0;
    int ans = n;
    for(int i=n;i<=m;i++){
        int cur = i;
        int cnt = 0;
        while(cur){
            int num = cur%10;
            if(num==4||num==6) cnt++;
            cur/=10;
        }
        if(cnt>=res){
            res = cnt;
            ans = i;
        }
    }
    cout<<ans<<endl;
    return 0;
}

2. 英桀挑战

米小游正在挑战往事乐土,往事乐土中有n个关卡,m位英桀,挑战完每个关卡后可以在三位不同英桀给出的奖励中选择一个,每个奖励的能力值为,来源为第位英桀。
若米小游至少获得了三个来源为同一位英桀的奖励,她可以获得来自这位英桀的额外奖励,能力值为。米小游想知道,她挑战完这n个关卡最多可以获得多少能力值?

回溯递归
int main(int argc, char *argv[]) {
    int n,m;//关卡数量n,英雄数量m
    cin>>n>>m;
    vector<int> c(m+1);//英雄额外奖励
    for(int i=1;i<=m;i++)
        cin>>c[i];
    vector<vector<int>> a(n,vector<int>(3));
    vector<vector<int>> b(n,vector<int>(3));
    for(int i=0;i<n;i++){
        cin>>a[i][0]>>a[i][1]>>a[i][2];
        cin>>b[i][0]>>b[i][1]>>b[i][2];
    }
    int res = 0;
    vector<int> cnt(m+1);//对m个英雄计数
    //也就是说每一个关卡,有三个选择,这里可以直接回溯选择
    function<void(int,int)> f = [&](int idx,int sum)->void{
        if(idx==n){//遍历完门进行结算
            for(int i=1;i<=m;i++){
                if(cnt[i]>=3) sum+=c[i];
            }
            res = max(res,sum);
            return;
        }
        for(int i=0;i<3;i++){//对三个英雄进行选择
            cnt[b[idx][i]]++;
            f(idx+1,sum+a[idx][i]);
            cnt[b[idx][i]]--;
        }
    };
    f(0,0);
    cout<<res<<endl;
    return 0;
}

3. 点燃心海

米小游和流莹到达了一个被红色海洋包裹着的星球,星球上有一些陆地,流萤准备点燃其中一片大海。具体来说,就是在一张二维地图上,分成了n*m 个格子,
每个格子的类型要么是大海,要么是陆地。若相邻(通过格子的边相邻)两个格子的类型相同,则视为同一个连通块。
大海被点燃后会变成陆地,点燃一片大海就是把一个大海连通块变成一个陆地连通块。米小游想知道在流萤最多点燃一片大海后,最大陆地连通块大小的最大值是多少。

递归搜索同时采用并查集思维标区域号,先搜索海洋,再搜索陆地
搜索时候记录对应连通序号的数目,同时搜索陆地时,将序号放入其连通的海洋里,方便直接计算总和

int main(int argc, char *argv[]) {
    int m,n;
    cin>>m>>n;
    vector<vector<char>> grid(m,vector<char>(n));
    for(int i=0;i<m;i++)
        for(int j=0;j<n;j++)
            cin>>grid[i][j];
    vector<vector<int>> flag(m,vector<int>(n,-1));
    unordered_map<int,int> mp;//记录对应连续域格子数目
    unordered_map<int,unordered_set<int>> connect;//记录与对应海域连通的陆地
    //先找海域
    int idx = 0;
    int dir[4][2] = {{1,0},{0,-1},{-1,0},{0,1}};
    function<void(int,int,int)> dfs = [&](int x,int y,int id){
        mp[id]++;//所属区域格子数目增加
        flag[x][y] = id;
        for(int i=0;i<4;i++){
            int nx = x + dir[i][0];
            int ny = y + dir[i][1];
            if(nx<0||ny<0||nx==m||ny==n) continue;
            if(grid[x][y]=='#'&&grid[nx][ny]=='.') connect[flag[nx][ny]].insert(id);
            if(grid[nx][ny]!=grid[x][y]||flag[nx][ny]!=-1) continue;//不相同或者遍历过
            dfs(nx,ny,id);
        }
    };
    for(int i=0;i<m;i++)
        for(int j=0;j<n;j++){
            if(grid[i][j]=='.'&&flag[i][j]==-1)
                dfs(i,j,idx++);
        }
    int oceannum = idx;//海洋数目
    //再找陆地
    for(int i=0;i<m;i++)
        for(int j=0;j<n;j++){
            if(grid[i][j]=='#'&&flag[i][j]==-1)
                dfs(i,j,idx++);
        }
    int res = 0;
    for(int i=0;i<oceannum;i++){//遍历海洋连通块
        int cur = mp[i];
        for(int cnt:connect[i])
            cur+=mp[cnt];
        res = max(res,cur);
    }
    cout<<res<<endl;
    return 0;
}

标签:连通,vector,07,int,res,2024.09,英桀,米哈,米小游
From: https://www.cnblogs.com/929code/p/18405527

相关文章

  • Java入门:07.Java中的面向对象03
    11this关键字this关键字有两个作用第一个作用,用来调用重载的构造方法publicclassTest3{publicstaticvoidmain(String[]args){newUser();newUser("ls");newUser("ls","女");}}​classUser{Stringname;St......
  • 2024.08.17米哈游(有难度)
    1.米小游的原石计划为了抽到心爱的五星角色,米小游需要至少n颗原石。目前米小游手里没有任何的原石,距离卡池结束还有m天。原石有两种获取方式,一种是充小月卡,另一种是直接买。1.充一次月卡需要30块钱,可以增加30天的祝福次数,每天只能领一次祝福(90原石),购买当天可额外领取......
  • 07 Windows批处理之文件操作
    如果你问一个对批处理不太熟悉的程序员它的主要用途,他们的回答可能会提到移动文件。批处理可以做更多的事情,但毫无疑问,它的主要用途之一是文件移动。在本文中,我们将探索不同的命令和可用的技术。您还将了解如何创建空文件,以及合并、移动、重命名和删除文件的方法。我将介绍文件掩码......
  • 07 Windows批处理之文件操作
    如果你问一个对批处理不太熟悉的程序员它的主要用途,他们的回答可能会提到移动文件。批处理可以做更多的事情,但毫无疑问,它的主要用途之一是文件移动。在本文中,我们将探索不同的命令和可用的技术。您还将了解如何创建空文件,以及合并、移动、重命名和删除文件的方法。我将介绍文件掩......
  • 中移ML307A(4G Cat1,C-SDK,OpenCPU)模组学习开发-使用i2c采集sht30温湿度数据
    <p><iframename="ifd"src="https://mnifdv.cn/resource/cnblogs/ML307A_OPEN"frameborder="0"scrolling="auto"width="100%"height="1500"></iframe></p>  测试1,把文件拷贝到自己工程的 ......
  • springboot新闻管理系统-计算机毕业设计源码94807
    目  录摘 要1绪论1.1研究背景1.2国内外研究现状1.3论文结构与章节安排2 新闻管理系统设计系统分析2.1可行性分析2.1.1技术可行性分析2.1.2 经济可行性分析2.1.3法律可行性分析2.2系统功能分析2.2.1功能性分析2.2.2非功能性分析2.3 系......
  • P2471 [SCOI2007] 降雨量 题解
    题目传送门分析分讨题。首先发现是RMQ问题(区间最值),可以用线段树或ST表来维护(代码为线段树,因为我忘记ST表怎么写了)。然后发现有些年份不明确导致区间判断似乎不好搞。但事实上只要判断下标差是否等于年份差即可得出该区间有无不明确年份。其次考虑“必真”,“必假”,“......
  • 中移ML307R(4G Cat1,C-SDK,OpenCPU)模组学习开发-使用i2c采集sht30温湿度数据
    <p><iframename="ifd"src="https://mnifdv.cn/resource/cnblogs/ML307R_OPEN"frameborder="0"scrolling="auto"width="100%"height="1500"></iframe></p>  测试1,把文件拷贝到自己工程的 ......
  • 【2024-09-07】连岳摘抄
    23:59白露团甘子,清晨散马蹄。圃开连石树,船渡入江溪。凭几看鱼乐,回鞭急鸟栖。渐知秋实美,幽径恐多蹊。                                              ——《白露》唐·杜甫你......
  • 基于ONSEMI电源管理芯片NCP1607之AC300V高输入电压36W调色温智能电源
    NCP1607PFC在LED智能电源PFC处理部分性价比高,输入电压范围宽到AC90-300V,母线电压420V导致高压低电流整机光效高,成熟芯片可靠新高,没有任何纹波与频闪,智能护眼。►场景应用图►产品实体图►展示板照片►方案方块图►核心技术优势1.输入AC300V/50HZ电源无损坏无发......