蓝桥杯模板题(一)

简介: 蓝桥杯模板题

A::::::::::::::::小明的彩灯:(差分)


【问题描述】

小明拥有 N 个彩灯,第 i 个彩灯的初始亮度为 ai。


小明将进行 Q 次操作,每次操作可选择一段区间,并使区间内彩灯的亮度 +x(x 可能为负数)。


求 Q 次操作后每个彩灯的亮度(若彩灯亮度为负数则输出 0)。


【输入格式】

第一行包含两个正整数 N,Q,分别表示彩灯的数量和操作的次数。


第二行包含 N 个整数,表示彩灯的初始亮度。


接下来 Q 行每行包含一个操作,格式如下:


l r x,表示将区间 l∼r 的彩灯的亮度 +x。

【输出格式】

输出共 1 行,包含 N 个整数,表示每个彩灯的亮度。


【样例输入】

5 3
2 2 2 1 5
1 3 3
4 5 5
1 1 -100

【样例输出】

0 5 5 6 10

【评测数据规模】

对于所有评测数据,1≤N,Q≤5×105,0≤ai≤109,11≤l≤r≤N,−109≤x≤109。

#include <iostream>
using namespace std;
int n,m;
long long a[500005];
long long b[500005];
int main(){
  cin>>n>>m;
  for(int i=1;i<=n;i++){
    cin>>a[i];
    b[i]=a[i]-a[i-1];
  }
  for(int i=1;i<=m;i++){
    int l,r;
    long long x;
    cin>>l>>r>>x;
    b[l]=b[l]+x;
    b[r+1]=b[r+1]-x;
  }
  for(int i=1;i<=n;i++){
    a[i]=b[i]+a[i-1];
  }
  for(int i=1;i<=n;i++){
    if(a[i]<0){
      cout<<0<<' '; 
    }else{
      cout<<a[i]<<' ';
    }
  }
  return 0;
}

B::::::::::::::::解立方根:(二分)


题目描述

给定一个正整数 N,请你求 N 的立方根是多少。


输入描述

第 1 行为一个整数 T,表示测试数据数量。


接下来的 T 行每行包含一个正整数 N。


1≤T≤105,0≤N≤105。


输出描述

输出共 T 行,分别表示每个测试数据的答案(答案保留 3 位小数)。


输入输出样例

示例 1


输入

3
0
1
8

输出

0.000
1.000
2.000

运行限制

最大运行时间:5s

最大运行内存: 128M

#include <iostream>
#include <stdio.h>
#include <cmath>
using namespace std;
int t,n;
double l(int n){
  double l=0,r=1e5;
  double res=0;
  while(r>=l){
    double mid=(l+r)/2.0;
    if(mid*mid*mid-n>1e-12){
      r=mid-0.000001;
    }else if(mid*mid*mid-n<-1e-12){
      l=mid+0.000001;
      res=mid;
    }else{
      return mid;
    }
  }
}
int main(){
  cin>>t;
  for(int i=0;i<t;i++){
    cin>>n;
    printf("%.3lf\n",l(n));
  }
  return 0;
}

C:::::::::::::::::走迷宫(BFS)


题目描述

给定一个 N×M 的网格迷宫 G。G 的每个格子要么是道路,要么是障碍物(道路用 1 表示,障碍物用 0 表示)。


已知迷宫的入口位置为(x1,y1),出口位置为 (x2,y2)。问从入口走到出口,最少要走多少个格子。


输入描述

输入第 1行包含两个正整数 N,M,分别表示迷宫的大小。


接下来输入一个 N×M 的矩阵。若 Gi,j=1 表示其为道路,否则表示其为障碍物。


最后一行输入四个整数x1,y1,x2,y2,表示入口的位置和出口的位置。


1≤N,M≤102,0≤Gi,j≤1,1≤x1,x2≤N,1≤y1,y2≤M。


输出描述

输出仅一行,包含一个整数表示答案。


若无法从入口到出口,则输出 -1−1。


输入输出样例

示例 1


输入

5 5 
1 0 1 1 0
1 1 0 1 1 
0 1 0 1 1
1 1 1 1 1
1 0 0 0 1
1 1 5 5 

输出

8

运行限制

最大运行时间:1s

最大运行内存: 128M

#include <iostream>
#include <queue>
using namespace std;
int n,m;
int ans;
int a[105][105];
int b[4][2]={{-1,0},{0,-1},{1,0},{0,1}};
bool flage;
int x1,y1,x2,y2;
struct zuo{
  int x,y;
  int r;
  zuo(int xx,int yy,int rr){
    x=xx;
    y=yy;
    r=rr;
  }
};
queue<zuo> q;
bool c[105][105];
bool check(int x,int y){
  return x>0&&x<=n&&y>0&&y<=m;
}
int main(){
  cin>>n>>m;
  for(int i=1;i<=n;i++){
    for(int j=1;j<=m;j++){
      cin>>a[i][j];
    }
  }
  cin>>x1>>y1>>x2>>y2;
  q.push(zuo(x1,y1,0));
  c[x1][y1]=1;
  while(!q.empty()){
    int x=q.front().x;
    int y=q.front().y;
    int r=q.front().r;
    q.pop();
    if(x==x2&&y==y2){
      ans=r;
      flage=true;
      break;
    }
    for(int i=0;i<4;i++){
      int tx=x+b[i][0];
      int ty=y+b[i][1];
      if(check(tx,ty)&&a[tx][ty]==1&&!c[tx][ty]){
        c[tx][ty]=1;
        int rr=r+1;
        q.push(zuo(tx,ty,rr));
      }
    }
  }
  if(flage){
    cout<<ans;
  }else{
    cout<<-1;
  }
  return 0;
} 

 D:::::::::::::::::小明的背包(01背包问题)


题目描述

小明有一个容量为 V 的背包。


这天他去商场购物,商场一共有 NN 件物品,第 ii 件物品的体积为 wi,价值为 vi。


小明想知道在购买的物品总体积不超过 VV 的情况下所能获得的最大价值为多少,请你帮他算算。


输入描述

输入第 1 行包含两个正整数 N,V,表示商场物品的数量和小明的背包容量。


第 2∼N+1 行每行包含 2 个正整数 w,v,表示物品的体积和价值。


1≤N≤102,1≤V≤103,1≤wi,vi≤103。


输出描述

输出一行整数表示小明所能获得的最大价值。


输入输出样例

示例 1


输入

5 20
1 6
2 5
3 8
5 15
3 3 

输出

37

运行限制

最大运行时间:1s

最大运行内存: 128M

#include <iostream>
#include <cmath>
using namespace std;
int n;
int wi[105];
int vi[105];
int dp[105][10005]; 
int v;
int main(){
  cin>>n>>v;
  for(int i=1;i<=n;i++){
    cin>>wi[i]>>vi[i];
  }
  for(int i=1;i<=n;i++){
    for(int j=1;j<=v;j++){
      dp[i][j]=dp[i-1][j];
      if(j>=wi[i]){
        dp[i][j]=max(dp[i-1][j],dp[i-1][j-wi[i]]+vi[i]);
      }
    }
  }
  cout<<dp[n][v];
  return 0;
} 


相关文章
|
人工智能 BI
|
机器学习/深度学习 人工智能 移动开发
|
存储 机器学习/深度学习 算法
【第十四届蓝桥杯考前速成】必考知识点及代码模板总结,看完至少多拿50分
四、简单图论 1、单源最短路径 2、多源最短路 3、最小生成树 五、动态规划 1、0-1背包 2、完全背包 3、多重背包 4、线性DP 总结
132 0
|
存储 机器学习/深度学习 人工智能
【第十四届蓝桥杯考前速成】必考知识点及代码模板总结,看完至少多拿50分
文章目录 写在前面 一、年份日期问题 1、闰年判定 2、月份天数 二、简单算法 1、前缀和 2、差分 3、二分 4、并查集 二、简单数论 1、质数判定 2、筛质数 3、进制转换 (1)其他进制转十进制 (2)十进制转其他进制 4、保留小数 5、最大公约数 6、最小公倍数 7、快速幂 三、常用STL 1、string 2、vector 3、queue/priority_queue 4、stack 5、set/multiset 6、map/multimap 7、unordered_set/unordered_map 8、pair<int,int> 9、algorithm
379 0
蓝桥杯之单片机学习(二十)——自创模板(最少省三,实现初始化、数码管显示、HC138独立按键(或矩阵键盘))
蓝桥杯之单片机学习(二十)——自创模板(最少省三,实现初始化、数码管显示、HC138独立按键(或矩阵键盘))
184 0
蓝桥杯之单片机学习(二十)——自创模板(最少省三,实现初始化、数码管显示、HC138独立按键(或矩阵键盘))
|
算法 编译器 C++
C++模板 —— 万字带你了解C++模板(蓝桥杯算法比赛必备知识STL基础)(2)
C++模板 —— 万字带你了解C++模板(蓝桥杯算法比赛必备知识STL基础)(2)
204 0
C++模板 —— 万字带你了解C++模板(蓝桥杯算法比赛必备知识STL基础)(2)
|
算法 搜索推荐 C++
C++模板 —— 万字带你了解C++模板(蓝桥杯算法比赛必备知识STL基础)(1)
C++模板 —— 万字带你了解C++模板(蓝桥杯算法比赛必备知识STL基础)(1)
260 0
C++模板 —— 万字带你了解C++模板(蓝桥杯算法比赛必备知识STL基础)(1)
蓝桥杯之单片机学习(三十)——模板罗列、技巧总结与心得
蓝桥杯之单片机学习(三十)——模板罗列、技巧总结与心得
172 0