CSDN线上竞赛第52期题解
#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;
}
#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;
}
#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;
}
#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期题解相关推荐
- CSDN竞赛—第六期题解与感想
CSDN编程竞赛报名地址:https://edu.csdn.net/contest/detail/16 CSDN竞赛-第六期题解与感想 前言/背景 参赛经历 解题思路 经验心得 资料分享 第六期题解 ...
- CSDN竞赛—第五期题解与感想
CSDN竞赛-第五期题解与感想 一.题解 1. 寻因找祖 解题思路 AC代码 题外话 2. 通货膨胀-x国货币 解题思路 AC代码 3. 莫名其妙的键盘 解题思路 参考代码 4. 三而竭 解题思路 A ...
- CSDN竞赛第32期题解
CSDN竞赛第32期题解 1.题目名称:传奇霸业 传奇霸业,是兄弟就来干. 小春(HP == a)遇到了一只黄金哥布林(HP == x). 小春每次能对哥布林造成b点伤害,哥布 林每次能对小春造成y点 ...
- 基于JAVA线上竞赛训练系统录屏计算机毕业设计源码+系统+mysql数据库+lw文档+部署
基于JAVA线上竞赛训练系统录屏计算机毕业设计源码+系统+mysql数据库+lw文档+部署 基于JAVA线上竞赛训练系统录屏计算机毕业设计源码+系统+mysql数据库+lw文档+部署 本源码技术栈: ...
- 第十六届全国大学生智能车竞赛广东赛区线上竞赛方案
简 介: 针对2021年广东省新冠疫情防控要求,针对广东省参加2021年智能车竞赛的高校采用线上比赛的方式.本文给出了线上比赛的实施方案. 关键词: 智能车竞赛,2021年竞赛,广东省线上比赛 §01 ...
- 第十五届全国大学生智能车竞赛线上竞赛方案(草案)
■ 背景介绍 全国大学生智能汽车竞赛旨在加强大学生实践.创新能力和团队精神的培养,从2005年受教育部高等教育司委托( 公函[2005]201号文.教高司[2005]13号 )教育部高等学校自动化大类 ...
- HMS Core线上Codelabs挑战赛第二期开始
亲爱的开发者们,准备好了吗? HMS Core线上Codelabs挑战赛第二期赛题来喽! 在第一期:图像畅想的赛题竞逐中,我们收获了一些令人惊喜的作品. 在接下来的赛题中,期待开发者们带来更多精彩创作 ...
- 升职加薪的大门已向你敞开 CSDN线上云招聘来了!
终于等到你![遇见OFFER]CSDN线上云招聘正式开启,直通卡.高薪职位均已备好,你会成我们的下一个同事吗?
- 【遇见OFFER】CSDN线上云招聘,你会成我们的下一个同事吗?
[遇见OFFER]CSDN线上云招聘正式开启,直通卡.高薪职位均已备好,你会成我们的下一个同事吗?
最新文章
- C#请求Post接口
- Bootstrap整合ASP.NET MVC验证、jquery.validate.unobtrusive
- 第九章 思科竞争谋略
- java中的静态初始化是什么意思,Java中static静态变量的初始化完全解析
- python人工智能——机器学习——数据的降维
- linux fork函数的精辟解说
- 设置response.setContentType(“application/json;charset=utf-8“)后还是中文乱码
- php 去掉script,php怎么去除js
- 痴人、信徒、先驱:深度学习三巨头等口述神经网络复兴史
- 挑选了适合测试边界的汉字及截图
- Deepin Linux下编译并运行Proxmark3
- 自学编程,他从阿里校招生到高级技术专家
- python代码有for循环时没有报错但是不能运行
- 2021年安全员-B证(广西省-2021版)考试技巧及安全员-B证(广西省-2021版)
- 《微信小程序开发实战》学习笔记chapter1微信小程序人门
- 使用PS切图时,调整标尺单位
- uni-app【多媒体API】
- java 百万数据查询_java一次性查询几十万,几百万数据解决办法
- java park_park和unpark
- 人生其实就好象一罐煤气