1、题目名称:投篮
小明投篮,罚球线投球可得一分,在三分线内投篮得分可以得到 2 分,在三分线以外的地方投篮得分可以得到 3 分,连续投 进得分累计,一旦有一个球没投进则得分清零,重新计算。现给出所有得分记录(清零不计入得分),请你计算一下小明 最多连续投进多少个球?
这个题明显是考最长连续上升子序列,dp状态转移方程即可
dp[i]表示从下标为0到下标为i的最长连续上升子序列
状态转移方程:dp[i]=dp[i-1]+1
只要后面的数比前面的数大就更新加1
最后输出dp数组中最大的数为答案
#include<iostream>
using namespace std;
int a[10005],dp[10005];
int n,maxx;
int main(){
cin>>n;
for(int i=0;i<n;i++){
cin>>a[i];
dp[i]=1;//初始都为1,因为每个数自己都是唯一的上升子序列
}
for(int i=1;i<n;i++){if(a[i]>a[i-1]){//状态转移条件dp[i]=dp[i-1]+1;//状态转移方程}
}
for(int i=0;i<n;i++){maxx=max(maxx,dp[i]);
}
cout<<maxx<<endl;
return 0;
}
2、题目名称:买苹果
小易去附近的商店买苹果,奸诈的商贩使用了捆绑交易,只提供 6 个每袋和 8 个每袋的包装 ( 包装不可拆分 ) 。 可是小易现在 只想购买恰好n 个苹果,小易想购买尽量少的袋数方便携带。如果不能购买恰好 n 个苹果,小易将不会购买。
输入描述:输入1个整数n,表示小易想购买n(1<=n<=100)个苹果
输出描述:输出一个整数表示最少需要购买的袋数,如果不能恰好购买n个苹果则输出-1
输入例子:20
输出例子:3
这个题给我的印象是之前做过的类似的题货币系统和换零钱,这两个题是计算总的方法数,用的是dp动态规划,此题是输出最小的袋数,dp博主没立马想到咋做,但是dfs有思路,就用的dfs做的,望各位读者理解。
#include<iostream>
using namespace std;
int n,minx=0x3f3f3f;
int a[]={6,8};//要么6个一袋要么8个一袋
int flag;//监视哨,作用就是看看是否能凑齐n个苹果
void dfs(int temp,int dep){//tmp表示此时苹果数,dep表示购买的袋数
if(dep>minx){//如果dep超过了最小袋数,就没必要向下继续搜索了return;
}
if(temp==n&&dep<minx){//条件成立时,更新最小值,顺便告诉监视哨flag找到能凑齐n个的袋数minx=dep;flag=1;return;
}
for(int i=0;i<2;i++){//常规搜索if(temp+a[i]<=n){dfs(temp+a[i],dep+1);}}
}
int main(){
cin>>n;
dfs(0,0);
if(flag==1){//flag==1说明找到了能凑齐n个苹果的方法数cout<<minx<<endl;
}else{cout<<-1<<endl;
}
return 0;
}
3、题目名称:打家劫舍
一个小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通 的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额的非负整数 数组,计算不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。
输入例子:1 2 3 1
输出例子:4
这个题看着第一眼就是贪心,博主把贪心的思想应用在了dfs上了,主要加上了 两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警这个条件,注意好本身和旁边的房子是否被标记过就行,代码上附有注释
#include<iostream>
using namespace std;
int n,maxx;
int a[1005];//原数组
int vis[1005];//标记数组
void dfs(int dep,int sum){//dep表示当前搜索的个数,sum表示所能带走的价值
if(dep>=n){//如果dep搜索超出了n个了,就没必要继续搜索了
return;
}
if(sum>maxx&&dep<n){//更新条件成立
maxx=sum;
}
for(int i=dep;i<n;i++){对当前位置为起点向后搜索
if(vis[i]==0&&vis[i-1]==0&&vis[i+1]==0){//如果当前位置及前一个位置及后一个位置没有被标记过
vis[i]=1;//只需标记当前位置就行
dfs(dep+1,sum+a[i]);//继续向下搜索
vis[i]=0;//回溯解除标记
}
}
}
int main(){
cin>>n;
for(int i=0;i<n;i++){
cin>>a[i];
}
if(n==1){//需要分情况讨论,只过了90%样例可能没有考虑这一点
cout<<a[0]<<endl;
}else{
dfs(0,0);
cout<<maxx<<endl;
}
return 0;
}
4、题目名称:天然气订单
天然气运输成本昂贵,危险性高,为了节省运输成本,提倡绿色环保,需要尽可能的优化订单配送,比如相同地区的天然 气订单可以一次性配送。 现需要向多个地区运输天然气。但是同一个地区可能有多个订单需求。当前仅只知道某些成对的 订单是同一个地区的,同一个地区的天然气需要尽可能一次性配送从而降低运输成本,所以需要尽可能的将同一个地区的 订单放在一起。订单的编号是1 到 n 。
这道题没啥可说的,思路很清晰,按照自己的思路向下顺着写就行,看代码吧。
#include <iostream>
#include <vector>
#include <queue>
#include <algorithm>
using namespace std;
int n, m, cnt = 0;
vector<int> G[10010];
bool vis[10010] = {false};
void bfs(int u, vector<int>& v) {
queue<int> q;
q.push(u);
v.push_back(u);
vis[u] = true;
while (!q.empty()) {
int x = q.front();
q.pop();
for (int i = 0; i < G[x].size(); ++i) {
int y = G[x][i];
if (!vis[y]) {
q.push(y);
vis[y] = true;
v.push_back(y);
}
}
}
}
int main() {
cin >> n >> m;
for (int i = 0; i < m; i++) {
int u, v;
cin >> u >> v;
G[u].push_back(v);
G[v].push_back(u);
}
vector<vector<int>> ans;
for (int i = 1; i <= n; ++i) {
if (!vis[i]) {
vector<int> v;
bfs(i, v);
ans.push_back(v);
++cnt;
}
}
cout << cnt << endl;
sort(ans.begin(), ans.end(), [](vector<int> a, vector<int> b) {
return a[0] < b[0];
});
for (auto& v : ans) {
sort(v.begin(), v.end());
for (int i = 0; i < v.size(); ++i) {
cout << v[i];
if (i < v.size() - 1) {
cout << " ";
}
}
cout << endl;
}
return 0;
}

博主本人大一在读,水平有限,文章可能有错误、描述错误的地方,博主的解法不一定为最优解法,望各位大佬指出,共同学习进步。

CSDN线上竞赛第52期题解相关推荐

  1. CSDN竞赛—第六期题解与感想

    CSDN编程竞赛报名地址:https://edu.csdn.net/contest/detail/16 CSDN竞赛-第六期题解与感想 前言/背景 参赛经历 解题思路 经验心得 资料分享 第六期题解 ...

  2. CSDN竞赛—第五期题解与感想

    CSDN竞赛-第五期题解与感想 一.题解 1. 寻因找祖 解题思路 AC代码 题外话 2. 通货膨胀-x国货币 解题思路 AC代码 3. 莫名其妙的键盘 解题思路 参考代码 4. 三而竭 解题思路 A ...

  3. CSDN竞赛第32期题解

    CSDN竞赛第32期题解 1.题目名称:传奇霸业 传奇霸业,是兄弟就来干. 小春(HP == a)遇到了一只黄金哥布林(HP == x). 小春每次能对哥布林造成b点伤害,哥布 林每次能对小春造成y点 ...

  4. 基于JAVA线上竞赛训练系统录屏计算机毕业设计源码+系统+mysql数据库+lw文档+部署

    基于JAVA线上竞赛训练系统录屏计算机毕业设计源码+系统+mysql数据库+lw文档+部署 基于JAVA线上竞赛训练系统录屏计算机毕业设计源码+系统+mysql数据库+lw文档+部署 本源码技术栈: ...

  5. 第十六届全国大学生智能车竞赛广东赛区线上竞赛方案

    简 介: 针对2021年广东省新冠疫情防控要求,针对广东省参加2021年智能车竞赛的高校采用线上比赛的方式.本文给出了线上比赛的实施方案. 关键词: 智能车竞赛,2021年竞赛,广东省线上比赛 §01 ...

  6. 第十五届全国大学生智能车竞赛线上竞赛方案(草案)

    ■ 背景介绍 全国大学生智能汽车竞赛旨在加强大学生实践.创新能力和团队精神的培养,从2005年受教育部高等教育司委托( 公函[2005]201号文.教高司[2005]13号 )教育部高等学校自动化大类 ...

  7. HMS Core线上Codelabs挑战赛第二期开始

    亲爱的开发者们,准备好了吗? HMS Core线上Codelabs挑战赛第二期赛题来喽! 在第一期:图像畅想的赛题竞逐中,我们收获了一些令人惊喜的作品. 在接下来的赛题中,期待开发者们带来更多精彩创作 ...

  8. 升职加薪的大门已向你敞开 CSDN线上云招聘来了!

    终于等到你![遇见OFFER]CSDN线上云招聘正式开启,直通卡.高薪职位均已备好,你会成我们的下一个同事吗?

  9. 【遇见OFFER】CSDN线上云招聘,你会成我们的下一个同事吗?

    [遇见OFFER]CSDN线上云招聘正式开启,直通卡.高薪职位均已备好,你会成我们的下一个同事吗?

最新文章

  1. C#请求Post接口
  2. Bootstrap整合ASP.NET MVC验证、jquery.validate.unobtrusive
  3. 第九章 思科竞争谋略
  4. java中的静态初始化是什么意思,Java中static静态变量的初始化完全解析
  5. python人工智能——机器学习——数据的降维
  6. linux fork函数的精辟解说
  7. 设置response.setContentType(“application/json;charset=utf-8“)后还是中文乱码
  8. php 去掉script,php怎么去除js
  9. 痴人、信徒、先驱:深度学习三巨头等口述神经网络复兴史
  10. 挑选了适合测试边界的汉字及截图
  11. Deepin Linux下编译并运行Proxmark3
  12. 自学编程,他从阿里校招生到高级技术专家
  13. python代码有for循环时没有报错但是不能运行
  14. 2021年安全员-B证(广西省-2021版)考试技巧及安全员-B证(广西省-2021版)
  15. 《微信小程序开发实战》学习笔记chapter1微信小程序人门
  16. 使用PS切图时,调整标尺单位
  17. uni-app【多媒体API】
  18. java 百万数据查询_java一次性查询几十万,几百万数据解决办法
  19. java park_park和unpark
  20. 人生其实就好象一罐煤气

热门文章

  1. 使用selenium进行模拟登录
  2. linux自带截图工具使用
  3. Bellman——Ford算法
  4. 自制可运行pe的iso
  5. Unity3D-Tilemap初体验(Unity自带Tilemap使用体验)
  6. 初中学历可以做原画师吗?原画师需要绘画基础吗
  7. sql查询语句分支语句
  8. 祝福大家新年快乐,身体健康,工作顺利,万事如意!
  9. 企业级网络性能优化 课内7 多臂单臂路由
  10. 液晶显示器不宜使用屏幕保护程序