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

备战蓝桥杯国赛第一天-atcoder-beginner-contest404

B.

因为只有四种情况,旋转90/180/270度后替换,直接替换,暴力即可

C.

循环图的定义是每个点出度为2,而且只有一个环的,所以先判断出度,再判断是否成环

#include <bits/stdc++.h>
using namespace std;
int n,m,x,y,cnt;
int degree[200010];
vector<vector<int>> a;
bool vis[200010];
bool flag;void dfs(int x){cnt++;vis[x]=1;for(int u:a[x]){if(!vis[u]){dfs(u);}}
}int main()
{cin>>n>>m;a.resize(n + 1);for(int i=0;i<m;i++){cin>>x>>y;a[x].push_back(y);a[y].push_back(x);degree[x]++;degree[y]++;} for(int i=1;i<=n;i++){if(degree[i]!=2){cout<<"No"<<endl;return 0;}}dfs(1);if(cnt==n) cout<<"Yes"<<endl;else cout<<"No"<<endl; return 0;
}

D.

暴力做法,对于每一个动物园有三种状态,看0/1/2次,所以用dfs枚举三种状态,复杂度是3的n次方,n<=10,所以问题不大

#include <bits/stdc++.h>
using namespace std;
int n,m,x,y;
long long mins;
int a[15],degree[15],aa[110];
vector<vector<int>> b;void dfs(int x){if(x==n+1){for(int i=1;i<=m;i++) aa[i]=0;//重置计数数组 for(int i=1;i<=n;i++){for(int j=0;j<degree[i];j++){for(int u:b[i]) aa[u]++;}}
//		for(int i=1;i<=n;i++) cout<<degree[i]<<" ";cout<<endl;
//        if(degree[3]==2&&degree[4]==2){
//        	for(int i=1;i<=n;i++) cout<<degree[i]<<" ";cout<<endl;
//        	for(int i=1;i<=m;i++) cout<<aa[i]<<" ";cout<<endl;
//		}for(int i=1;i<=m;i++){if(aa[i]<2) return;}
//		if(degree[3]==2&&degree[4]==2){
//        	for(int i=1;i<=n;i++) cout<<degree[i]<<" ";cout<<endl;
//        	for(int i=1;i<=m;i++) cout<<aa[i]<<" ";cout<<endl;
//		} long long sum=0;for(int i=1;i<=n;i++){sum+=a[i]*degree[i];}
//		cout<<sum<<endl;
//		for(int i=1;i<=n;i++) cout<<degree[i]<<" ";cout<<endl;mins=min(mins,sum);return;}for(int i=0;i<3;i++){degree[x]=i;dfs(x+1);degree[x]=0;}
}int main()
{cin>>n>>m;b.resize(n+1);mins=1e18;for(int i=1;i<=n;i++) cin>>a[i];for(int i=1;i<=m;i++){cin>>x;for(int j=0;j<x;j++) cin>>y,b[y].push_back(i);}dfs(1);cout<<mins<<endl;return 0;
}

E.

最核心的事情就是让最后一个豆子在回到起点的同时,路过所有有豆子的地方

所以我们就可以按照我们的想法建单向边,对于有豆子的地方可以分配的前c[i]范围内都没豆子的话都建边,如果有豆子的话就找最近的豆子建边,这样可以保证路过所有有豆子的地方,最后跑一个最短路算法dijkstra就可以了,记得最后一个点不一定有豆子,所以直接遍历找最后一个豆子

#include <bits/stdc++.h>
using namespace std;
typedef pair<int,int> PII;
int n,flag,c[2010],a[2010],dist[2010],vis[2010];
vector<vector<int>> adj;void dijkstra(){priority_queue<PII> heap;heap.push({0,0});while(heap.size()){int u=heap.top().first;heap.pop();if(vis[u]) continue;vis[u]=1;for(auto v:adj[u]){if(dist[v]>dist[u]+1){dist[v]=dist[u]+1;heap.push({v,-dist[v]});}}}
}int main()
{cin>>n; adj.resize(n+1);for(int i=1;i<n;i++) cin>>c[i];for(int i=1;i<n;i++) cin>>a[i];for(int i=1;i<n;i++){flag=0;for(int j=1;j<=c[i];j++){if(a[i-j]){flag=1;adj[i-j].push_back(i);break;}}if(!flag){for(int j=1;j<=c[i];j++){adj[i-j].push_back(i);}}}memset(dist,0x3f,sizeof dist);dist[0]=0;dijkstra();int maxs=0;for(int i=1;i<n;i++){if(a[i]) maxs=max(maxs,dist[i]);}cout<<maxs<<endl;return 0;
}

相关文章:

  • C# WPF 布局
  • PandasAI:对话式数据分析新时代
  • [ 设计模式 ] | 单例模式
  • 基于大模型的子宫腺肌病全流程预测与诊疗方案研究报告
  • 利用迁移学习实现食物分类:基于PyTorch与ResNet18的实战案例
  • 【C/C++】函数模板
  • SQL数据库操作大全:从基础到高级查询技巧
  • HTML5好看的水果蔬菜在线商城网站源码系列模板9
  • 【macOS常用快捷键】
  • MySQL C API高效编程:C语言实现数据库操作的深入解析
  • 学习路线(视觉)
  • [Linux]物理地址到虚拟地址的转化
  • stm32之TIM定时中断详解
  • MODIS中国积雪物候数据集(2000-2020年)
  • Nemotron-Research-Tool-N1 如何提升大语言模型工具使用能力?
  • 使用OpenCV 和 Dlib 实现疲劳检测
  • CPT204 Advanced Obejct-Oriented Programming 高级面向对象编程 Pt.10 二叉搜索树
  • 题目 3321: 蓝桥杯2025年第十六届省赛真题-画展布置
  • 如何将腾讯云的测试集成到自己的SpringBoot中
  • 解决pycharm检测不到已经装好的conda的pytorch环境
  • 人民日报评论:莫让“胖东来们”陷入“棒杀”“捧杀”泥潭
  • 蓝佛安:中方将采取更加积极有为的宏观政策,有信心实现今年5%左右增长目标
  • 溢价率19.48%,民企番禺置业3.07亿元竞得广州番禺融媒体中心北侧地块
  • 巴菲特掌舵伯克希尔60年后将卸任CEO,库克:认识他是人生中最珍贵的经历之一
  • 一金两银一铜!中国田径从柯桥望向世界大赛
  • 中国海油总裁:低油价短期影响利润,但也催生资产并购机会