蓝桥杯备战刷题three(自用)

news2024/9/21 11:19:18

  1.合法日期

#include <iostream>
#include <map>
#include <string>
using namespace std;
int main()
{
  map<string,int>mp;
  int days[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
  for(int i=1;i<=12;i++)
  {
    for(int j=1;j<=days[i];j++)
    {
       string s=to_string(i)+to_string(j);
      mp[s]=1;
    }
  }
  string m,d;
  cin>>m>>d;
  m+=d;
  if(mp[m])cout<<"yes"<<endl;
  else cout<<"no"<<endl;
  return 0;
}

 2.删除字符

#include <iostream>
#include <string>
using namespace std;
//使字典序最小,即删掉字典序大的
//可以删除q次
//在删除每一次时,把每一个字母删掉都试一下是不是比之前的小,如果是则贡献答案
int main()
{
  string s;
  cin>>s;
  string s1,s2,s3;
  s2=s3=s;
  int q;
  cin>>q;
  while(q--)
  {
    for(int i=0;i<s.size();i++)
    {
      s3=s;//原来的(保证每次for循环挑选出一位)
      s1=s3.erase(i,1);//从i开始删除1位
      if(s1<s2)//s2表示上一个答案
      {
        s2=s1;
      }
    }
    s=s2;//for循环结束后更新s
  }
  cout<<s<<endl;
  return 0;
}

 3.最小谈判

#include <iostream>
#include <queue>
using namespace std;
const int N=1000+10;
int n;
int ans;
priority_queue<int,vector<int>,greater<int>>q;//小根堆
int main()
{
  cin>>n;
  for(int i=1;i<=n;i++)
  {
    int x;
    cin>>x;
    q.push(x);
  }
  while(q.size()!=1)
  {
    if(q.size()==1)break;
    //每次取出最小的两个
    int t1=q.top();
    q.pop();
    int t2=q.top();
    q.pop();
    ans+=(t1+t2);
    q.push(t1+t2);
  }
  cout<<ans<<endl;
  return 0;
}

 4.排列小球

#include <iostream>
using namespace std;
//有限制地枚举方案,采用dfs可以进行搜索和回溯
int sum;//三个小球的总数量
int a[3];//三个小球各自的数量
int ans;//答案即方案数
void dfs(int sum,int x,int last)
{
  //sum为目前还未放入进行排列的小球的数量,x为目前要放入小球的数量,
  //last为上次放小球的小球颜色
  if(sum==0)
  {
    //若能够全部放完则记录一次答案
    ans++;
    return;
  }
  for(int i=0;i<3;i++)//枚举三种颜色的小球,看那种符合题意
  {
    if(i==last)//颜色相同则跳过
    continue;
    //找到不同颜色的
    for(int j=x+1;j<=a[i];j++)//从x+1开始枚举
    {
      a[i]-=j;
      dfs(sum-j,j,i);
      a[i]+=j;//恢复现场
    }
  }
}
int main()
{
  for(int i=0;i<3;i++)
  {
    cin>>a[i];
    sum+=a[i];
  }
  dfs(sum,0,-1);
  cout<<ans<<endl;
  return 0;
}

 5.灌溉

#include <iostream>
using namespace std;
const int N=110;
int a[N][N];
int b[N][N];
int n,m,t,k,ans;
int dx[]={-1,1,0,0};
int dy[]={0,0,-1,1};
int main()
{
  cin>>n>>m>>t;
  while(t--)
  {
    int x,y;
    cin>>x>>y;
    a[x][y]=1;
    b[x][y]=2;//为出水管
  }
  cin>>k;
  for(int g=1;g<=k;g++)
  {
    for(int i=1;i<=n;i++)
    {
      for(int j=1;j<=m;j++)
      {
        if(a[i][j]==1)
        {
          for(int p=0;p<4;p++)
          {
            int xx=i+dx[p];
            int yy=j+dy[p];
            if(xx<1||xx>n||yy<1||yy>m)continue;
            b[xx][yy]=1;
          }
        }
      }
    }
    for(int i=1;i<=n;i++)
    {
      for(int j=1;j<=m;j++)
      {
        if(b[i][j]==2||b[i][j]==0)continue;
        a[i][j]=b[i][j];
      }
    }
  }
  for(int i=1;i<=n;i++)
    {
      for(int j=1;j<=m;j++)
      {
        if(a[i][j]==1)ans++;
      }
    }
    cout<<ans<<endl;
  return 0;
}

6.受伤的皇后

#include <iostream>
using namespace std;
const int N=15;
int a[N];//a[i]=j表示第i行中放在了第j列
int n;
int ans;
bool isvalid(int row,int i)
{
  //判断已经放好的前row-1行是否可行
  for(int j=1;j<row;j++)
  {
    if(a[j]==i||(row+i==a[j]+j&&row-j<3)||(row-i==j-a[j]&&row-j<3))
    return false;
  }
  return true;
}
//注意:反对角线:x+y==定值;正对角线:x-y==定值
void dfs(int row)//代码前row-1行已经放好,现在要放第row行
{
  if(row==n+1)//前面n行已经放好了
  {
    ans++;
    return;
  }
  for(int i=1;i<=n;i++)//枚举是否可行的列
  {
    if(isvalid(row,i))
    {
      a[row]=i;
      dfs(row+1);
      a[row]=0;
    }
  }
}
int main()
{
  cin>>n;
  dfs(1);//表示前0行已经摆好了就OK
  //注意不能是dfs(0),表示前0-1行已经摆好了,不行!!
  cout<<ans<<endl;
  return 0;
}

7.跳跃

#include <iostream>
using namespace std;
const int N=110;
const int MIN=-1e9;
int f[N][N];
int n,m;
//注意9个方向!(特别是后三个)
int dx[]={-1,-2,-3,0,0,0,-1,-1,-2};
int dy[]={0,0,0,-1,-2,-3,-1,-2,-1};
//动态规划的思想
int main()
{
  cin>>n>>m;
  for(int i=1;i<=n;i++)
  {
    for(int j=1;j<=m;j++)
    {
      cin>>f[i][j];
    }
  }
  for(int i=1;i<=n;i++)
  {
    for(int j=1;j<=m;j++)
    {
      //找到可以从9个方向下来中的最大值
      int temp=MIN;
      for(int k=0;k<9;k++)
      {
        int xx=i+dx[k];
        int yy=j+dy[k];
        if(xx<1||xx>n||yy<1||yy>m)continue;
        temp=max(temp,f[xx][yy]);
      }
      if(temp!=MIN)//找到了才进行更新
      {
        f[i][j]+=temp;
      }
    }
  }
  cout<<f[n][m]<<endl;
  return 0;
}

8.逆序对数

#include <iostream>
using namespace std;
// 求逆序对-->归并排序
int q[]={87,39,35,1,99,10,54,1,46,24,74,62,49,13,2,80,24,58,8,14,83,23,97,85,3,2,86,10,71,15};
int temp[33];
int ans=0;
void merge_sort(int q[],int l,int r)
{
	if (l >= r)return ;
	int mid= (l + r) / 2;
	merge_sort(q, l, mid);
	merge_sort(q, mid + 1, r);
 
	int k = 0, i = l, j = mid + 1;
	while (i <= mid && j <= r)
	{
		if (q[i] <= q[j])temp[k++] = q[i++];//注意等号!!
		else
		{
			temp[k++] = q[j++];
			ans += mid - i + 1;
		}
	}
 
	while (i <= mid)temp[k++] = q[i++];
	while (j <= r)temp[k++] = q[j++];
 
	for (i = l, j = 0; i <= r; i++, j++)q[i] = temp[j];//注意赋值!
 
}
int main()
{
  merge_sort(q,0,29);
  cout<<ans<<endl;
  return 0;
}

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

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

相关文章

在线ai写作,让你随时随地创作优质内容

如今的ai技术已经渗透到我们生活的方方面面。其中&#xff0c;AI写作成为了一个备受关注的领域。如今&#xff0c;我们可以利用在线ai写作在任何时间、任何地点创作出优质的内容。 传统的写作过程需要大量的时间和精力。从构思到写作再到修改&#xff0c;每一个环节都需要我们投…

C# 解决uploadify插件上传时造成session丢失问题

出现的问题&#xff1a; 在应用uploadify插件实现上传图片时&#xff0c;报了HTTP Error&#xff0c;经过在Network查看上传方法报错码是302&#xff0c;那这里就可以知道问题是什么了&#xff0c;HTTP 302是请求被重定向&#xff0c;如果你的uploadify处理上传方法有session验…

ABAP - OOALV 用户交互事件

当用户要根据ALV进行某些功能操作比如打印表单时&#xff0c;OOALV标准按钮无法满足用户需求的时候&#xff0c;就要用到自定义按钮来实现了。思路&#xff1a;在OOALV增加一个自定义按钮&#xff0c;类CL_GUI_ALV_GRID提供了内置事件toolbar来完成&#xff0c;通过自定义按钮的…

Apache Flink连载(三十五):Flink基于Kubernetes部署(5)-Kubernetes 集群搭建-1

🏡 个人主页:IT贫道-CSDN博客 🚩 私聊博主:私聊博主加WX好友,获取更多资料哦~ 🔔 博主个人B栈地址:豹哥教你学编程的个人空间-豹哥教你学编程个人主页-哔哩哔哩视频 目录 ​编辑

HTTPS是什么,详解它的加密过程

目录 1.前言 2.两种加密解密方式 2.1对称加密 2.2非对称加密 3.HTTPS的加密过程 3.1针对明文的对称加密 3.2针对密钥的非对称加密 3.3证书的作用 1.前言 我们知道HTTP协议是超文本传输协议,它被广泛的应用在客户端服务器上,用来传输文字,图片,视频,js,html等.但是这种传…

MyBatis 学习(五)之 高级映射

目录 1 association 和 collection 介绍 2 案例分析 3 一对一关联和一对多关联 4 参考文档 1 association 和 collection 介绍 在之前的 SQL 映射文件中提及了 resultMap 元素的 association 和 collection 标签&#xff0c;这两个标签是用来关联查询的&#xff0c;它们的属…

指针与malloc动态内存申请,堆和栈的差异

定义了两个函数print_stack()和print_malloc()&#xff0c;分别演示了两种不同的内存分配方式&#xff1a;栈内存和堆内存。然后在main()函数中调用这两个函数&#xff0c;并将它们返回的指针打印出来。 由于print_stack()中的数组c是在栈上分配的&#xff0c;当函数返回后&…

LabVIEW非接触式电阻抗层析成像系统

LabVIEW非接触式电阻抗层析成像系统 非接触式电阻抗层析成像&#xff08;NEIT&#xff09;技术以其无辐射、非接触、响应速度快的特点&#xff0c;为实时监测提供了新的解决方案。基于LabVIEW的电阻抗层析成像系统&#xff0c;实现了数据的在线采集及实时成像&#xff0c;提高…

黑马JavaWeb课程中安装vue脚手架出现的问题

1 安装node.js 要想前端工程化&#xff0c;必须安装node.js&#xff0c;前端工程化的环境。 在成功安装node.js后&#xff0c; 修改全局包安装路径为Node.js安装目录&#xff0c; 修改npm镜像源为淘宝镜像源&#xff0c;这里出现第一个问题&#xff0c;视频中给的淘宝镜像为&…

力扣SQL50 无效的推文 查询

Problem: 1683. 无效的推文 思路 &#x1f468;‍&#x1f3eb; 参考 char_length(str)&#xff1a;计算 str 的字符长度length(str)&#xff1a;计算 str 的字节长度 Code select tweet_id from Tweets where char_length(content) > 15;

G8-ACGAN理论

本文为&#x1f517;365天深度学习训练营 中的学习记录博客 原作者&#xff1a;K同学啊|接辅导、项目定制 我的环境&#xff1a; 1.语言&#xff1a;python3.7 2.编译器&#xff1a;pycharm 3.深度学习框架Pytorch 1.8.0cu111 一、对比分析 前面的文章介绍了CGAN&#xf…

面试官上来就让手撕HashMap的7种遍历方式,当场愣住,最后只写出了3种

HashMap的7种遍历方式 四大类遍历方式 其实在JDK1.8之前&#xff0c;遍历的方式远没有现在这样多&#xff0c;为了提高开发效率&#xff0c;JDK1.8开始引入了Stream流、Lambda 表达式等新特性&#xff0c;这让很多数据结构的遍历方式也丰富了起来。目前&#xff0c;常用的遍历方…

Node.js中的缓存策略和缓存技巧

在Node.js中&#xff0c;缓存策略和缓存技巧是提升应用性能和用户体验的关键因素。通过有效地利用缓存&#xff0c;我们可以显著减少系统资源的消耗&#xff0c;加快数据访问速度&#xff0c;从而提升整体的网站性能。本文将针对Node.js中的缓存策略和缓存技巧展开深入探讨&…

Windows下卸载JDK

操作步骤&#xff1a; 直接到windows程序卸载面板进行卸载 然后删除已配置的环境变量

TDengine 研发分享:利用 Windbg 解决内存泄漏问题的实践和经验

内存泄漏是一种常见的问题&#xff0c;它会导致程序的内存占用逐渐增加&#xff0c;最终导致系统资源耗尽或程序崩溃。AddressSanitizer (ASan) 和 Valgrind 是很好的内存检测工具&#xff0c;TDengine 的 CI 过程就使用了 ASan 。不过这次内存泄漏问题发生在 Windows 下&#…

设置matplotlib的style和rcParams

在matplotlib文档中&#xff0c;有3中设置matplot的方法&#xff0c;见文档 https://matplotlib.org/stable/users/explain/customizing.html 目前用得比较多的是设置rcParams&#xff0c;而设置rcParams也有两种方式。下面以 plot的cycler为例进行说明。 cycler就是定义的一些…

13.网络游戏逆向分析与漏洞攻防-网络通信数据包分析工具-如果没有工具就创造工具

内容参考于&#xff1a; 易道云信息技术研究院VIP课 上一个内容 &#xff1a;12.游戏网络通信存在的问题 现在把游戏网络的架构看了一个小小的大概&#xff0c;可以用它的接口发数据接收数据了&#xff0c;如果真正想用它这一套东西&#xff0c;真正核心不在于它的接口而在于…

私域必备宝藏工具:多微信统一管理聚合聊天

对于私域流量运营者来说&#xff0c;如何高效管理多个微信号成为了一道难题。 不过不用担心&#xff0c;通过微信管理系统&#xff0c;可以实现多个微信同时登录&#xff0c;同一个界面内聚合聊天&#xff0c;省去来回切换账号的步骤。而且&#xff0c;还有很多非常实用且便捷…

Chrome插件 | WEB 网页数据采集和爬虫程序

无边无形的互联网遍地是数据&#xff0c;品类丰富、格式繁多&#xff0c;包罗万象。数据采集&#xff0c;或说抓取&#xff0c;就是把分散各处的内容&#xff0c;通过各种方式汇聚一堂&#xff0c;是个有讲究要思考的体力活。君子爱数&#xff0c;取之有道&#xff0c;得注意遵…

种花

分情况&#xff1a; 第一盆k种选择&#xff0c;之后全部k-1种选择 每次相乘结果对1e97取模 #include <iostream> #include <vector> #include <algorithm> using namespace std; #define endl \n const int N 1e9 7;int main() {ios::sync_with_stdio(f…