newbie难度——暴力枚举

news2024/12/22 16:35:25

newbie难度——暴力枚举

740 - 1743A

给出的样例能够理解,如果有n个数字不能选,要排四个数字,这四个数字只有两个不同,并且这两个相同的会各自出现两次,有6种排列方式,那如果给出小于样例n的数字,就还需要计算选出哪两个数字

这个不用预处理出排列组合数,直接根据定义计算就够了,因为只选出两个数进行组合

不要忘记去掉多余的输入

#include<bits/stdc++.h>

using namespace std;


signed main()
{
  int t;
  cin>>t;
  while(t--)
  {
    int n;
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        int x;
        cin>>x;
    }
    n=10-n;
    // cout<<n<<endl;
    int ans=0;
    ans=n*(n-1)/2;
    cout<<ans*6<<endl;
  }
  return 0;
}
720 - 1750B

几个零和几个一产生最大的价值

暴力统计就行了吧这题

别想简单了,是看哪一种组合大吗?

如果有连续零串,或者连续1串,大于组合串的时候是什么时候

现在怎么找到连续的零串或者连续的1串呢

直接循环遍历,用两个变量分别记录

两个 2 ∗ 1 0 5 2*10^5 2105不会爆时间复杂度吗

那要怎么优化

#include<bits/stdc++.h>

using namespace std;

signed main()
{
  int t;
  cin>>t;
  while(t--)
  {
    int n;
    cin>>n;
    string s;
    cin>>s;
    int ans=0;
    for(int i=0;i<n;i++)
      if(s[i]=='1') ans++;

    if(ans==n) cout<<ans*ans<<endl;
    else if(ans==0) cout<<n*n<<endl;
    else cout<<ans*(n-ans)<<endl;
  }
  return 0;
}

那要如何找到最长连续子串?

image-20240927103329306

诶呀我去,简直不要太聪明了,这样的做法,如果相同就让lg一直增加,遇到不同就回归1

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

signed main()
{
  int t;
  cin>>t;
  while(t--)
  {
    int n;
    cin>>n;
    string s;
    cin>>s;
    int ans=0;
    for(int i=0;i<n;i++)
      if(s[i]=='1') ans++;

    ans=ans*(n-ans);
    
    int lg=1;
    int maxn=0;
    for(int i=1;i<n;i++)
    {
      if(s[i]==s[i-1])
      {
        lg++;
      }
      else
      {
        maxn=max(maxn,lg*lg);
        lg=1;
      }
    }
    maxn=max(maxn,lg*lg);
    ans=max(ans,maxn);
    cout<<ans<<endl;
  }
  return 0;
}

上面的代码没有过后台样例5

没开longlong,笑飞了


事实证明是爆了,你第一打的时候计算时间复杂度的时候就已经说明了呢

950 - 1676D

题目要求找到使 “主教攻击的所有单元格之和为最大”,由于对角线攻击的性质,需要找到对角线能产生价值最大的位置,n和m最大仅为200,用递归去找所有对角线上的所有数应该不会爆栈

image-20240927110346497

为什么得不到正确的答案,感觉自己想的没有错啊

#include<bits/stdc++.h>

using namespace std;
int n,m;
const int N=210;
int g[N][N];
int ul,ur,dl,dr;

int findul(int x,int deep)
{
  if(deep<1||deep>n||x<1||x>m) return 0;
  if(deep==1||deep==n||x==1||x==m)
  {
    return g[deep][x];
  }
  ul+=findul(x-1,deep-1);
}

int findur(int x,int deep)
{
  if(deep<1||deep>n||x<1||x>m) return 0;
  if(deep==1||deep==n||x==1||x==m)
  {
    return g[deep][x];
  }
  
  ur+=findur(x+1,deep-1);
}

int finddr(int x,int deep)
{
  if(deep<1||deep>n||x<1||x>m) return 0;
  if(deep==1||deep==n||x==1||x==m)
  {
    return g[deep][x];
  }
  
  dr+=finddr(x+1,deep+1);
}

int finddl(int x,int deep)
{
  if(deep<1||deep>n||x<1||x>m) return 0;
  if(deep==1||deep==n||x==1||x==m)
  {
    return g[deep][x];
  }
  
  
  dl+=finddl(x-1,deep+1);
}

signed main()
{
  int t;
  cin>>t;
  
  while(t--)
  {
    int ans=0;
    cin>>n>>m;
    
    for(int i=1;i<=n;i++)
    {
      for(int j=1;j<=m;j++)
        cin>>g[i][j];
    }
    
    for(int i=1;i<=n;i++)
    {
      for(int j=1;j<=m;j++)
      {
        ul+=findul(j-1,i-1),dl+=finddl(j-1,i+1),ur+=findur(j+1,i-1),dr+=finddr(j+1,i+1);
        ans=max(ans,ul+ur+dl+dr-3*g[i][j]);
        cout<<ul+ur+dl+dr-3*g[i][j]<<' ';
      }
      cout<<endl;
      ul=0,ur=0,dl=0,dr=0;
    }
    cout<<ans<<endl;
  }
  return 0;
}

感觉是递归没有设计好,用递归还得判断递归起始点的边界情况,有点子麻烦

还是不太清楚什么题目适合递归

#include<bits/stdc++.h>

using namespace std;
const int N=210;
int g[N][N];

signed main()
{
  int t;
  cin>>t;
  while(t--)
  {
    int n,m;
    cin>>n>>m;
    for(int i=0;i<n;i++)
    {
      for(int j=0;j<m;j++)
      {
        cin>>g[i][j];
      }
    }
    
    int res=0;
   	for(int i=0;i<n;i++)
    {
      for(int j=0;j<m;j++)
      {
        int now=0;
        int u=i,v=j;
        
        while(u>=0&&u<n&&v>=0&&v<m)
        {
          now+=g[u][v];
          u--;
          v--;
        }
        u=i,v=j;
        while(u>=0&&u<n&&v>=0&&v<m)
        {
          now+=g[u][v];
          u++;
          v--;
        }
        u=i,v=j;
        while(u>=0&&u<n&&v>=0&&v<m)
        {
          now+=g[u][v];
          u++;
          v++;
        }
        u=i,v=j;
        while(u>=0&&u<n&&v>=0&&v<m)
        {
          now+=g[u][v];
          u--;
          v++;
        }
        // cout<<now-3*g[i][j]<<' ';
        res=max(res,now-3*g[i][j]);
      }
    //   cout<<endl;
      
    }
    cout<<res<<endl;
    
    
  }
  return 0;
}
980 - 1562B

感觉就是让我们找质数的意思

找到删除哪个数字后,判断他是不是质数,不是质数直接输出位数和数字即可

枚举删除的位置,删除的位数等等 \\

看了题解觉得十分有道理,并决定着手实现一遍

#include<bits/stdc++.h>

using namespace std;
const int N=100;
int prime[N];

signed main()
{
  int t;
  cin>>t;
  prime[1]=1;
  for(int i=2;i<=100;i++)
  {
    for(int j=2;j*j<=i;j++)
    {
      if(i%j==0) 
      {
        prime[i]=1;
      }
    }
  }
  
  while(t--)
  {
    int n;
    cin>>n;
    string shu;
    cin>>shu;
    
    int flag=0;
    for(int i=0;i<n;i++)
    {
      if(shu[i]=='1'||shu[i]=='4'||shu[i]=='6'||shu[i]=='8'||shu[i]=='9')
      {
        puts("1");
        cout<<shu[i]<<endl;
        flag=1;
        break;
      }
    }
    if(flag) continue;
    for(int i=0;i<n;i++)
    {
      for(int j=i+1;j<n;j++)
      {
        if(prime[(shu[i]-'0')*10+shu[j]-'0'])
        {
          puts("2");
          cout<<shu[i]<<shu[j]<<endl;
          flag=1;
          break;
        }
      }
      if(flag) break;
    }
    
  }
  return 0;
}
1040 - 1598B

判断收否可以把学生分成两个小组即可

首先肯定得在满足人数大于一半的星期中排除

在这些列中枚举,如果能做到各自代表不同的数

#include<bits/stdc++.h>

using namespace std;

void solve()
{
  int n;
    cin>>n;
    
    vector<vector<int> > g(n+1,vector<int>(6,0));
    vector<int> sum(6,0);
    for(int i=1;i<=n;i++)
    {
      for(int j=1;j<=5;j++)
      {
        cin>>g[i][j];
        if(g[i][j]==1) sum[j]++;
      }
    }//
    int avg=n/2;
    vector<int> col;
    
    for(int j=1;j<=5;j++)
    {
      if(sum[j]>=avg) col.push_back(j);
    //   cout<<sum[j]<<endl;
    }
    
    for(int i=0;i<col.size();i++)
    {
      
      for(int j=i+1;j<col.size();j++)
      {
        vector<int> st(n+1,0);
        int u=col[i],v=col[j];
        int same=0;
        for(int k=1;k<=n;k++)
        {
          if(g[k][u]!=g[k][v])
          {
            st[u]+=g[k][u];
            st[v]+=g[k][v];
          }
          else
          {
            same++;
          }
        }
        if(st[u]>=avg&&st[v]+same>=avg||st[v]>=avg&&st[u]+same>=avg)
        {
          puts("YES");
          return;
        }
        // cout<<u<<' '<<v<<' '<<st[u]<<' '<<st[v]<<' '<<same<<endl;
      }
    }
  puts("NO");
  return ;
}

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

我的后台测试样例2错

看了官方题解,我觉得我们在处理相同和不同有一样的思路

知道了,因为我的st

#include<bits/stdc++.h>

using namespace std;

void solve()
{
  int n;
  cin>>n;
  vector<vector<int> > g(n+1,vector<int>(n+1,0));
  for(int i=1;i<=n;i++)
  {
    for(int j=1;j<=5;j++)
    {
      cin>>g[i][j];
    }
  }

  
  for(int i=1;i<=5;i++)
  {
    for(int j=i+1;j<=5;j++)
    {
      vector<int> st(6,0);//一定是6,如果是n<6就死翘翘
      int same=0;
      for(int k=1;k<=n;k++)
      {
        if(g[k][i]==1) st[i]++;
        if(g[k][j]==1) st[j]++;
        if(g[k][i]==0&&g[k][j]==0)
        {
          same++;
        }
      }
      if(st[i]>=n/2&&st[j]>=n/2&&same==0)
      {
        puts("YES");
        return ;
      }
    }
  }
  puts("NO");
  return ;
}

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

电子电路智能设计课程内容是什么?

电子电路智能设计课程通常包括一系列内容&#xff0c;旨在教授学生如何使用现代电子设计自动化&#xff08;EDA&#xff09;工具和技术来设计和分析电子电路。 1. 电子设计自动化&#xff08;EDA&#xff09;概述&#xff1a; - EDA的历史和发展 - EDA在电子设计中的作用 - …

excel统计分析(2):描述统计工具

1.什么是【描述统计】工具 Excel中的描述性统计是指用于汇总和分析数据以更好地了解其特征的工具&#xff0c;方便快速了解数据集的中心趋势、离散程度和形状。 2.excel中添加【数据分析】功能 点击【文件>选项>加载项】&#xff0c;【管理>Excel加载项>转到】&…

SAP B1 认证考试习题 - 解析版(二)

前一篇&#xff1a;《SAP B1 认证考试习题 - 解析版&#xff08;一&#xff09;》 题目纯享版合集&#xff1a;《SAP B1 认证考试习题 - 纯享版》 三、采购流程 30. 下列哪个凭证在采购流程中是必须要完成的 A. 采购订单 B. 收货采购订单 C. 应付发票 D. 退货 E. 应付贷…

Vue项目快速整合WangEditor富文本编辑器

Vue项目快速整合WangEditor富文本编辑器 一、安装依赖 npm i wangeditor --save //富文本编辑器 npm install highlight.js -S //代码高亮 npm install dompurify vue-dompurify-html // 防xss 库二、app.vue代码案例 已对接图片、视频接口 &#xff0c;具体看如下代码…

【Spring Cloud】Spring Cloud 概述

Spring Cloud 概述 1. 认识微服务1.1 单体架构1.2 集群和分布式架构集群和分布式 1.3 微服务架构分布式架构&微服务架构 1.4 微服务带来的挑战优势挑战 2. 微服务解决⽅案- Spring Cloud2.1 什么是Spring Cloud2.2 Spring Cloud版本Spring Cloud和SpringBoot的关系 2.3 Spr…

Linux部署RabbitMQ

目录 一、环境 二、开始安装 1、安装Erlang 2、安装RabbitMQ 3、修改配置文件 先复制覆盖配置文件&#xff0c;根据自己的版本进行路径更改 打开配置文件&#xff0c;53行 去掉注释%%和逗号 4、安装插件并启动服务 web管理界面工具 重新启动 RabbitMQ 服务 查看节点…

java日志门面之JCL和SLF4J

文章目录 前言一、JCL1、JCL简介2、快速入门3、 JCL原理 二、SLF4J1、SLF4J简介2、快速入门2.1、输出动态信息2.2、异常信息的处理 3、绑定日志的实现3.1、slf4j实现slf4j-simple和logback3.2、slf4j绑定适配器实现log4j3.2、Slf4j注解 4、桥接旧的日志框架4.1、log4j日志重构为…

什么是原生IP?

代理IP的各个类型称呼有很多&#xff0c;且它们在网络使用和隐私保护方面扮演着不同的角色。今天将探讨什么是原生IP以及原生IP和住宅IP之间的区别&#xff0c;帮助大家更好地理解这两者的概念和实际应用&#xff0c;并选择适合自己的IP类型。 一、什么是原生IP&#xff1f; 原…

流程、程序和政策之间的差异

流程、程序和政策是公司遵循的指导方针&#xff0c;以确保公司以有效和安全的方式运营。 每个企业都需要它们&#xff0c;但有时可能会让人搞不清一个从哪里开始&#xff0c;另一个从哪里结束。 企业经常混淆它们的用法&#xff0c;或者在真正含义上指错一个。 从高层次来看…

“数字武当”项目荣获2024年“数据要素×”大赛湖北分赛文化旅游赛道一等奖

9月26日&#xff0c;由国家数据局、湖北省人民政府指导的首届湖北省数据要素创新大会暨2024年“数据要素”大赛湖北分赛颁奖仪式在湖北武汉举行。由大势智慧联合武当山文化旅游发展集团有限公司参报的武当山“数字武当”项目&#xff0c;荣获文化旅游赛道一等奖。 据悉&#x…

《Linux从小白到高手》理论篇(三):vi/vim编辑器和Linux文件处理“三剑客”(sed/grep/awk)

List item 本篇介绍vi/vim编辑器和Linux文件处理“三剑客”&#xff08;sed/grep/awk&#xff09;&#xff0c;这5个工具命令可能是Linux最最常用的&#xff0c;而且功能超级强大。 vi/vim vi和vim的基本介绍 所有的 Linux 系统都会内建 vi 文本编辑器。Vim 具有程序编辑的…

【frp】frp重启、frp启动、frp后台启动、frps dashboard等等

我写的关于frp配置的文章&#xff1a;frp配置 服务端frps 1. 创建服务文件 sudo nano /etc/systemd/system/frps.service2. 添加服务配置 在打开的文件中添加以下内容&#xff1a; [Unit] DescriptionFRPS Server Afternetwork.target[Service] Typesimple ExecStart/root…

LeetCode[简单] 136. 只出现一次的数字

给你一个 非空 整数数组 nums &#xff0c;除了某个元素只出现一次以外&#xff0c;其余每个元素均出现两次。找出那个只出现了一次的元素。 你必须设计并实现线性时间复杂度的算法来解决此问题&#xff0c;且该算法只使用常量额外空间。 思路 当 A 与 B 不同时&#xff0c;按…

代理模式简介:静态代理VS与动态代理

代理模式&#xff1a;静态代理VS动态代理 1、定义2、分类2.1 静态代理2.2 动态代理 3、使用场景4、总结 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 1、定义 代理模式是一种设计模式&#xff0c;通过代理对象控制对目标对象的访问。简而…

Stable Diffusion 使用详解(13)--- 3D纹理增强

目录 背景 Normal Map 描述 原理 使用心得 例子 描述 原图 参数设置 底模 ​编辑 正负相关性提示词 其他参数 controlnet 效果 还能做点啥 调整 效果 背景 实际上&#xff0c;在stable diffusion 中&#xff0c;你获取发现很多controlnet 其实功能有点类似&…

【优化】Vite手动分包

前言 每次打包完成后&#xff0c;默认情况下会将第三方库和自己的代码统统打包到一个JS文件中 打包后的 JS 对应一个指纹&#xff0c;当修改了自己的业务代码并重新打包后&#xff0c;还会将第三方库重新打包&#xff0c;继而生成一个新指纹&#xff0c;浏览器发现指纹变了&am…

从4道入门题目里面看Java和C的差别

目录 1.如何在IDEA进行循环输入 1.1题目概述 1.2循环输入 1.3println和print 2.如何调用数学函数 3.如何生成随机数字 4.字符串比较的方法 4.1错误案例分析 4.3正确比较方法 1.如何在IDEA进行循环输入 1.1题目概述 这个也是牛客上面的一个题目引发的思考&#xff1a;…

MySQl查询分析工具 EXPLAIN ANALYZE

文章目录 EXPLAIN ANALYZE是什么Iterator 输出内容解读EXPLAIN ANALYZE和EXPLAIN FORMATTREE的区别单个 Iterator 内容解读 案例分析案例1 文件排序案例2 简单的JOIN查询 参考资料&#xff1a;https://hackmysql.com/book-2/ EXPLAIN ANALYZE是什么 EXPLAIN ANALYZE是MySQL8.…

Linux进程的学习(持续更新)

冯诺依曼体系结构 概念&#xff1a; 冯・诺依曼体系结构是一种计算机体系结构&#xff0c;由美籍匈牙利科学家约翰・冯・诺依曼提出。它奠定了现代计算机的基本结构。 计算机分为以上五大部件组成&#xff1a; 输入设备&#xff1a;键盘&#xff0c;鼠标&#xff0c;网卡&…

【前端框架对比和选择】React 与 Vue 框架设计思路对比

框架总览 前端框架繁多&#xff0c;在学习的时候也会陷入困惑&#xff0c;我们应该抓住最主流的内容 Vue/React&#xff0c;深入底层&#xff0c;尝试揣摩框架作者的设计思路&#xff0c;开阔前端培训自己的视野&#xff0c;大家也不要把自己限制在框架之中&#xff0c;认为工…