AtCoder Beginner Contest 350

A - Past ABCs

简单的枚举判断即可

#include "bits/stdc++.h"
using namespace std;#define int long long 
#define endl '\n'
#define IOS ios::sync_with_stdio(0),cin.tie(0);
#define all(x) x.begin(),x.end()
#define pi pair<int,int> 
#define vi vector<int>
#define si set<int> 
#define mi map<int,int>
#define mc map<char,int>
#define YES cout<<"Yes"<<endl;
#define NO  cout<<"No"<<endl;
template<class T>bool chmin(T &a, const T &b) { if (b<a) { a=b; return true; } return false; }
template<class T>bool chmax(T &a, const T &b) { if (a<b) { a=b; return true; } return false; }
void solve()
{string s;cin>>s;int sum=0;for (int i=3;i<6;i++){sum=sum*10+(s[i]-'0');}string s1=s.substr(0,3);if(s1=="ABC" && sum>=1 && sum<=349 && sum!=316){YES}else {NO}}
signed main()
{IOSint t;t=1;//cin>>t;while(t--){solve();}
}

B - Dentist Aoki

如果一个洞奇数次进,则总数加一偶数次进总数减一。

#include "bits/stdc++.h"
using namespace std;#define int long long 
#define endl '\n'
#define IOS ios::sync_with_stdio(0),cin.tie(0);
#define all(x) x.begin(),x.end()
#define pi pair<int,int> 
#define vi vector<int>
#define si set<int> 
#define mi map<int,int>
#define mc map<char,int>
#define YES cout<<"Yes"<<endl;
#define NO  cout<<"No"<<endl;
template<class T>bool chmin(T &a, const T &b) { if (b<a) { a=b; return true; } return false; }
template<class T>bool chmax(T &a, const T &b) { if (a<b) { a=b; return true; } return false; }
void solve()
{int n,q;cin>>n>>q;int sum=n;vector<int> a(n+1,1);for (int i=1;i<=q;i++){int x;cin>>x;if(a[x]==1){a[x]=0;sum--;}else {a[x]=1;sum++;}}cout<<sum;
}
signed main()
{IOSint t;t=1;//cin>>t;while(t--){solve();}
}

C - Sort 

先用一个数组记录第几个输入的数字,然后一个数组记录这个数字的位置,

然后再按照排列从小到大的顺序遍历,如果这个数不在相对应的位置上就和其需要到的位置上的数交换 。时间复杂度(n).

#include "bits/stdc++.h"
using namespace std;#define int long long 
#define endl '\n'
#define IOS ios::sync_with_stdio(0),cin.tie(0);
#define all(x) x.begin(),x.end()
#define pi pair<int,int> 
#define vi vector<int>
#define si set<int> 
#define mi map<int,int>
#define mc map<char,int>
#define YES cout<<"Yes"<<endl;
#define NO  cout<<"No"<<endl;
template<class T>bool chmin(T &a, const T &b) { if (b<a) { a=b; return true; } return false; }
template<class T>bool chmax(T &a, const T &b) { if (a<b) { a=b; return true; } return false; }
void solve()
{int n;cin>>n;vi a(n+1);vi b(n+1);for (int i=1;i<=n;i++){cin>>a[i];b[a[i]]=i;}int cnt=0;vector<pi> v;for (int i=1;i<=n;i++){if(b[i]!=i){int j=b[i];swap(a[i],a[j]);swap(b[a[i]],b[a[j]]);v.push_back({i,j});}}cout<<(int)v.size()<<endl;for (int i=0;i<(int)v.size();i++){auto [x,y]=v[i];cout<<x<<" "<<y<<endl;}}
signed main()
{IOSint t;t=1;//cin>>t;while(t--){solve();}
}

D - New Friends

这题考察联通块的知识,每个联通块内都可以有(cnt)*(cnt-1)/2条边。

这题可以用两种做法:

1.图论

因为存在一个点被联通块内多个点连接的情况,所以每次先加上边,最后除以2.

#include "bits/stdc++.h"
using namespace std;#define int long long 
#define endl '\n'
#define IOS ios::sync_with_stdio(0),cin.tie(0);
#define all(x) x.begin(),x.end()
#define pi pair<int,int> 
#define vi vector<int>
#define si set<int> 
#define mi map<int,int>
#define mc map<char,int>
#define YES cout<<"Yes"<<endl;
#define NO  cout<<"No"<<endl;
template<class T>bool chmin(T &a, const T &b) { if (b<a) { a=b; return true; } return false; }
template<class T>bool chmax(T &a, const T &b) { if (a<b) { a=b; return true; } return false; }
int vis[200010];
void solve()
{int n,m;cin>>n>>m;vector<vector<int>> v(n+1);for (int i=1;i<=m;i++){int x,y;cin>>x>>y;v[x].push_back(y);v[y].push_back(x);}int ans=0;for (int i=1;i<=n;i++){if(vis[i]){continue;}queue<int> q;q.push(i);vis[i]=1;int cnt1=1,cnt2=0;while(q.size()){int u=q.front();q.pop();for (auto x : v[u]){cnt2++;if(vis[x]==0){vis[x]=1;cnt1++;q.push(x);}}}ans+=cnt1*(cnt1-1)-cnt2;}ans/=2;cout<<ans;
}
signed main()
{IOSint t;t=1;//cin>>t;while(t--){solve();}
}

2.并查集

#include "bits/stdc++.h"
using namespace std;#define int long long 
#define endl '\n'
#define IOS ios::sync_with_stdio(0),cin.tie(0);
#define all(x) x.begin(),x.end()
#define pi pair<int,int> 
#define vi vector<int>
#define si set<int> 
#define mi map<int,int>
#define mc map<char,int>
#define YES cout<<"Yes"<<endl;
#define NO  cout<<"No"<<endl;
template<class T>bool chmin(T &a, const T &b) { if (b<a) { a=b; return true; } return false; }
template<class T>bool chmax(T &a, const T &b) { if (a<b) { a=b; return true; } return false; }
int p[200010],cnt[200010];
int find(int x)
{if(p[x]!=x) p[x]=find(p[x]);return p[x];
}
void solve()
{int n,m;cin>>n>>m;iota(p+1,p+n+1,1);for (int i=1;i<=m;i++){int x,y;cin>>x>>y;p[find(x)]=find(y);}int ans=-m;for (int i=1;i<=n;i++){cnt[find(i)]++;}for (int i=1;i<=n;i++){ans+=cnt[i]*(cnt[i]-1)/2;}cout<<ans;}
signed main()
{IOSint t;t=1;//cin>>t;while(t--){solve();}
}

E - Toward 0

mp[n]是n的期望花费。

cost1=mp[n/a]+x。  

cost2=\sum1~6 mp[n/i] / 6 + y  当i=1时 两边有相同的式子,把它移到左边。

cost2=\sum_{2}^{6}i mp[n/i]/5+\frac{6}{5}*y 

#define int long long 
#define endl '\n'
#define IOS ios::sync_with_stdio(0),cin.tie(0);
#define all(x) x.begin(),x.end()
#define pi pair<int,int> 
#define vi vector<int>
#define si set<int> 
#define mi map<int,int>
#define mc map<char,int>
#define YES cout<<"Yes"<<endl;
#define NO  cout<<"No"<<endl;
template<class T>bool chmin(T &a, const T &b) { if (b<a) { a=b; return true; } return false; }
template<class T>bool chmax(T &a, const T &b) { if (a<b) { a=b; return true; } return false; }void solve()
{int n,a,x,y;cin>>n>>a>>x>>y;map<int,double> mp;auto dfs=[&](auto dfs,int u)-> double{if(u==0){return 0;}if(mp.find(u)!=mp.end()){return mp[u];}double cost1=dfs(dfs,u/a)+x;double cost2=0;for (int i=2;i<=6;i++){cost2+=dfs(dfs,u/i);}cost2=cost2/5+1.0*y*6/5;return mp[u]=min(cost1,cost2);};dfs(dfs,n);cout<<fixed<<setprecision(10)<<mp[n];	}
signed main()
{IOSint t;t=1;//cin>>t;while(t--){solve();}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/637811.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【QT进阶】Qt http编程之用户登录注册功能实现

往期回顾 【QT进阶】Qt http编程之http与https简单介绍-CSDN博客 【QT进阶】Qt http编程之后端API测试工具postman使用介绍-CSDN博客 【QT进阶】Qt http编程之http相关类的简单介绍-CSDN博客 【QT进阶】Qt http编程之用户登录注册功能实现 一、最终效果展示 重点在逻辑实现&a…

Linux基础和常见命令速览

来源&#xff1a;Linux 基础知识总结 | JavaGuide 一、Linux文件系统 1. 文件系统 Linux 系统中的一个重要的概念&#xff1a;一切都是文件。 在 Linux 操作系统中&#xff0c;一切被操作系统管理的资源&#xff0c;如网络接口卡、磁盘驱动器、打印机、输入输出设备、普通文件…

三、Flask模型基础

ORM 创建模型 # exts.py&#xff1a;插件管理 # 扩展的第三方插件 # 1.导入第三方插件 from flask_sqlalchemy import SQLAlchemy # ORM插件 from flask_migrate import Migrate # 2. 初始化 db SQLAlchemy() # ORM migrate Migrate() # 数据迁移 # 3. 和app对象绑定 def…

【JVM常见问题总结】

文章目录 jvm介绍jvm内存模型jvm内存分配参数jvm堆中存储对象&#xff1a;对象在堆中创建分配内存过程 jvm 堆垃圾收集器垃圾回收算法标记阶段引用计数算法可达性分析算法 清除阶段标记清除算法复制算法标记压缩算法 实际jvm参数实战jvm调优jvm常用命令常用工具 jvm介绍 Java虚…

WebSocket 快速入门 - springboo聊天功能

目录 一、概述 1、HTTP&#xff08;超文本传输协议&#xff09; 2、轮询和长轮询 3、WebSocket 二、WebSocket快速使用 1、基于Java注解实现WebSocket服务器端 2、JS前端测试 三、WebSocket进阶使用 1、如何获取当前用户信息 2、 后端聊天功能实现 一、概述 HTTP…

C语言语法进阶

条件运算符 条件运算符是 C 语言中唯一的一种三目运算符。三目运算符代表有三个操作数&#xff1b;双目 运算符代表有两个操作数&#xff0c;如逻辑与运算符就是双目运算符&#xff1b;单目运算符代表有一个操作数&#xff0c; 如逻辑非运算符就是单目运算符。运算符也称操作符…

react之组件与JSX

第一章 - 描述用户界面 概述&#xff1a;React是一个用于构建用户界面&#xff08;UI&#xff09;的JavaScript库&#xff0c;用户界面由按钮&#xff0c;文本和图像等小单元内容构建而成。React帮助你把它们组合成可重用&#xff0c;可嵌套的组件。从web端网站到移动端应用&a…

基于Linux共享内存的数据分发DDS——C语言实现

基于共享内存的数据分发DDS——C语言实现 一、软件功能介绍 在linux环境下用C语言开发的基于共享内存的数据分发DDS软件。采用了共享内存、多线程、读写锁以及互斥锁实现。 软件支持功能如下&#xff1a; 内部采用共享内存进行数据传输&#xff0c;支持多进程、多线程的数据…

【信号处理】基于CNN的心电(ECG)信号分类典型方法实现(tensorflow)

关于 本实验使用1维卷积神经网络实现心电信号的5分类。由于数据类别不均衡&#xff0c;这里使用典型的上采样方法&#xff0c;实现数据类别的均衡化处理。 工具 方法实现 数据加载 Read the CSV file datasets: NORMAL_LABEL0 , ABNORMAL_LABEL1,2,3,4,5 ptbdb_abnormalpd.…

Python | Leetcode Python题解之第42题接雨水

题目&#xff1a; 题解&#xff1a; class Solution:def trap(self, height: List[int]) -> int:if not height:return 0n len(height)leftMax [height[0]] [0] * (n - 1)for i in range(1, n):leftMax[i] max(leftMax[i - 1], height[i])rightMax [0] * (n - 1) [he…

ROS机器人入门第七课:参数服务器

文章目录 ROS机器人入门第七课&#xff1a;参数服务器一、参数服务器介绍二、参数操作1.参数服务器新增(修改)参数2.参数服务器获取参数3.参数服务器删除参数 ROS机器人入门第七课&#xff1a;参数服务器 一、参数服务器介绍 参数服务器在ROS中主要用于实现不同节点之间的数据…

ubuntu安装QEMU

qemu虚拟机的使用&#xff08;一&#xff09;——ubuntu20.4安装QEMU_ubuntu安装qemu-CSDN博客 遇到的问题&#xff1a; (1)本来使用git clone https://github.com/qemu/qemu.git fatal: 无法访问 https://github.com/qemu/qemu.git/&#xff1a;GnuTLS recv error (-110): …