当前位置: 首页 > news >正文

2024/4/9

概况

C++常用vector<vector<int> res(m,vector<int>(n,0));来初始化一个m*n且内部初始值为0的二维数组

P8665 [2018 省 A] 航班时间

本题需要读取比较复杂格式的数据以及,含前导0的数据,此时应当使用scanf,以及不能关闭同步流,全部化成秒防止出现复杂的借位问题,%02d表示读两位若前面有0则也读入,输出则是前面补0

#include <bits/stdc++.h>
using namespace std;int get(){int h1,m1,s1,h2,m2,s2,day=0;scanf("%02d:%02d:%02d %02d:%02d:%02d",&h1,&m1,&s1,&h2,&m2,&s2);if(getchar()==' '){//没有读到空格就是换行符scanf("(+%d)",&day);}return 24*3600*day+h2*3600+m2*60+s2-(h1*3600+m1*60+s1);
}int main(){int n;scanf("%d",&n);while(n--){int sec=(get()+get())/2;printf("%02d:%02d:%02d\n",sec/3600,sec%3600/60,sec%60);}return 0;
}
P8681 [2019 省 AB] 完全二叉树的权值

经典BFS题,将当前层内结点权值之和相加,并更新最大权值的层数即可

#include <bits/stdc++.h>
using namespace std;
int n,ans=1;
const int N=1e5+7;
int a[N];void solve(){queue<int> q;int w=a[1],dep=0;q.push(1);while(q.size()){int t=q.size(),tmp=0;//tmp存当前层的权重dep++;//深度加一for(int i=0;i<t;i++){int d=q.front();//取出子节点q.pop();tmp+=a[d];if(2*d<=n) q.push(2*d);if(2*d+1<=n) q.push(2*d+1);}if(tmp>w) w=tmp,ans=dep;//更新}
}int main(){ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);cin>>n;for(int i=1;i<=n;i++) cin>>a[i];solve();cout<<ans;
}
leetcode 746.使用最小花费爬楼梯

本题明确最顶层是由下一层和下二层中花费最小的花费而来,同时站在一号台阶和零号台阶没有花费,所以初始化为0,更据状态转移方程从前往后循环即可

class Solution {
public:int minCostClimbingStairs(vector<int>& cost) {vector<int> dp(1001,0);//表示第i层阶梯的最低花费dp[0]=0;dp[1]=0;//两个台阶不用花费for(int i=2;i<=cost.size();i++){//循环size到最顶层dp[i]=min(dp[i-1]+cost[i-1],dp[i-2]+cost[i-2]);}return dp[cost.size()];}
};
leetcode 62.不同路径
class Solution {
public:int uniquePaths(int m, int n) {vector<vector<int>> dp(m,vector<int>(n,0));dp[0][0]=1;for(int i=0;i<m;i++)for(int j=0;j<n;j++){if(i-1>=0) dp[i][j]+=dp[i-1][j];if(j-1>=0) dp[i][j]+=dp[i][j-1];}return dp[m-1][n-1];}
};

这种写法不太规范,一般都是先初始化dp[i][0]和dp[0][j]为1也就是刚开始右边和下面一条路径都是一种方案,接着遍历1到m和1到n dp[i][j]=dp[i-1][j]+dp[i][j-1]即可

leetcode 63.不同路径II

本题初始化时要特判条件可能起点就有障碍物,因此起点值的初始化要进行特判

其他只需在递推时判断当前点是否是障碍物即可

class Solution {
public:int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {int m=obstacleGrid.size(),n=obstacleGrid[0].size();vector<vector<int>> dp(m,vector<int>(n,0));if(!obstacleGrid[0][0])dp[0][0]=1;else dp[0][0]=0;for(int i=1;i<m;i++) if(!obstacleGrid[i][0]) dp[i][0]=dp[i-1][0];for(int i=1;i<n;i++) if(!obstacleGrid[0][i]) dp[0][i]=dp[0][i-1];//初始化for(int i=1;i<m;i++)for(int j=1;j<n;j++){if(!obstacleGrid[i][j]) dp[i][j]=dp[i-1][j]+dp[i][j-1];}return dp[m-1][n-1];}
};

相关文章:

  • 数据驱动决策的秘密武器:一探FineBI的核心功能
  • spikingjelly学习-训练网络
  • ssm034学生请假系统+jsp
  • 路由器拨号失败解决方法
  • React中的函数组件和类组件的区别
  • golang变量初始化顺序
  • ubuntu20.04 运行 lio-sam 流程记录
  • 使用Java流API构建树形结构数据
  • 5.网络编程-socker(golang版)
  • 适用于车载设备无钥匙进入系统汽车用晶振FA-238A
  • 非关系型数据库Redis部署与常用命令
  • 若依自带vue-cropper上传图片(可旋转、缩放)
  • StarRocks 面试题及参考答案详解(万字详解)
  • windbg托管内存泄漏排查
  • IO-DAY8
  • [nginx文档翻译系列] 控制nginx
  • 【vuex入门系列02】mutation接收单个参数和多个参数
  • 【翻译】babel对TC39装饰器草案的实现
  • Akka系列(七):Actor持久化之Akka persistence
  • create-react-app做的留言板
  • CSS相对定位
  • Hibernate最全面试题
  • java8 Stream Pipelines 浅析
  • Laravel 菜鸟晋级之路
  • Python连接Oracle
  • tab.js分享及浏览器兼容性问题汇总
  • Traffic-Sign Detection and Classification in the Wild 论文笔记
  • v-if和v-for连用出现的问题
  • 近期前端发展计划
  • 如何用vue打造一个移动端音乐播放器
  • 设计模式(12)迭代器模式(讲解+应用)
  • 实现菜单下拉伸展折叠效果demo
  • 试着探索高并发下的系统架构面貌
  • 算法---两个栈实现一个队列
  • 探索 JS 中的模块化
  • 通信类
  • 温故知新之javascript面向对象
  • 消息队列系列二(IOT中消息队列的应用)
  • 译有关态射的一切
  • 阿里云服务器购买完整流程
  • 如何用纯 CSS 创作一个菱形 loader 动画
  • 如何在招聘中考核.NET架构师
  • 支付宝花15年解决的这个问题,顶得上做出十个支付宝 ...
  • #{}和${}的区别?
  • #define用法
  • #NOIP 2014#day.2 T1 无限网络发射器选址
  • (3)(3.2) MAVLink2数据包签名(安全)
  • (windows2012共享文件夹和防火墙设置
  • (附源码)python旅游推荐系统 毕业设计 250623
  • (考研湖科大教书匠计算机网络)第一章概述-第五节1:计算机网络体系结构之分层思想和举例
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理第3章 信息系统治理(一)
  • (转)Android学习笔记 --- android任务栈和启动模式
  • (转载)Linux网络编程入门
  • (总结)Linux下的暴力密码在线破解工具Hydra详解
  • .NET “底层”异步编程模式——异步编程模型(Asynchronous Programming Model,APM)...