首页 > 其他分享 >【牛客训练记录】牛客周赛 Round 62

【牛客训练记录】牛客周赛 Round 62

时间:2024-09-29 21:14:50浏览次数:7  
标签:周赛 return int while long 牛客 62 solve --

https://ac.nowcoder.com/acm/contest/91177#question

赛后反思

一直都不会做期望,对于概率论相关的需要加强

A题

直接模拟字符串字符交换即可

#include <bits/stdc++.h>
#define int long long

using namespace std;

void solve(){
	string s; cin>>s;
	cout<<s[1]<<s[0]<<s[2]<<s[3]<<s[4];	
}

signed main(){
	// int T; cin>>T; while(T--)
	solve();
	return 0;
}

B题

\(x = 0\) 原地不动,直接模拟这个 \(x\) 即可,位于正半轴 \(-a[i]\) 位于负半轴 \(+a[i]\),更新答案即可

#include <bits/stdc++.h>
#define int long long

using namespace std;

void solve(){
	int n,x; cin>>n>>x;
	vector<int> a(n + 1);
	for(int i = 1;i<=n;i++) cin>>a[i];
	int ans = 0;
	for(int i = 1;i<=n;i++){
		if(x==0) continue;
		ans+=a[i];
		if(x>0) x-=a[i];
		else if(x<0) x+=a[i];
	}
	cout<<ans<<endl;
}

signed main(){
	// int T; cin>>T; while(T--)
	solve();
	return 0;
}

C题

我们设 \(dis(x,y)\) 为点 \((x,y)\) 到原点的距离,我们首先需要找到有多少个圆覆盖到了原点,只要 \(dis(x,y) \le r\) 就是覆盖到了原点,最后我们需要移动的圆的个数为 \(max(0,cnt-k)\) 其中 \(cnt\) 代表有多少个圆覆盖到了原点,最后我们移动的代价就要加上这些需要移动的圆,移动的距离为 \(r - dis(x,y)\),我们对代价进行排序,每次贪心选择代价最小的圆进行移动。

#include <bits/stdc++.h>
#define int long long
#define pi 3.14159265358979324

using namespace std;

struct node{
	int x,y,r;
	double dj;
};

double dis(int x,int y){
	return sqrt(x*x+y*y);
}

bool cmp(node x,node y){
	return x.dj < y.dj;
}

vector<node> a;

void solve(){
	int n,k; cin>>n>>k;
	for(int i = 1;i<=n;i++){
		int x,y,r; cin>>x>>y>>r;
		if(dis(x,y)<=r){
			double dj = pi*r*r*(r-dis(x,y));
			a.push_back((node){x,y,r,dj});
		}
	}	
	sort(a.begin(),a.end(),cmp);
	double ans = 0;
	int lim = a.size()-k;
	for(int i = 0;i<lim;i++) ans+=a[i].dj;
	cout<<fixed<<setprecision(8)<<ans<<endl;
}

signed main(){
	// int T; cin>>T; while(T--)
	solve();
	return 0;
}

D题

期望不会

E题 部分分做法

我们对于每次询问直接暴力排序找中位数即可

#include <bits/stdc++.h>
#define int long long

using namespace std;

void solve(){
	int n,q; cin>>n>>q;
	vector<int> a(n + 1);
	for(int i = 1;i<=n;i++) cin>>a[i];
	while(q--){
		int l,r; cin>>l>>r;
		vector<int> b;
		for(int i = l;i<=r;i++){
			b.push_back(a[i]);
		}
		sort(b.begin(),b.end());
		cout<<b[(b.size() + 1)/2-1]<<endl;
	}	
}

signed main(){
	// int T; cin>>T; while(T--)
	solve();
	return 0;
}

F题 部分分做法

同 E 题

G题 部分分做法

直接大力 \(O(n!)\) 枚举所有的排列,再参照 B 题的方式模拟,更新答案和排列即可

#include <bits/stdc++.h>
#define int long long

using namespace std;

const int N = 107;

int n,x; 
vector<int> a(N);
int cho[N];
bool vis[N];
int ans = LONG_LONG_MAX;
int ansp[N];

void pd(){
	int tx = x;
	int tans = 0;
	for(int i = 1;i<=n;i++){
		if(tx==0) continue;
		tans+=a[cho[i]];
		if(tx>0) tx-=a[cho[i]];
		else if(tx<0) tx+=a[cho[i]];
	}
	if(tans < ans){
		ans = tans;
		for(int i = 1;i<=n;i++) ansp[i] = cho[i];
	}
}

void dfs(int x){
	if(x > n){
		pd();
		return;
	}
	for(int i = 1;i<=n;i++){
		if(vis[i]) continue;
		cho[x] = i;
		vis[i] = 1;
		dfs(x + 1);
		cho[x] = 0;
		vis[i] = 0;
	}
}

void solve(){
	cin>>n>>x;
	for(int i = 1;i<=n;i++) cin>>a[i];
	dfs(1);
	cout<<ans<<endl;
	for(int i = 1;i<=n;i++) cout<<ansp[i]<<" ";
}

signed main(){
	// int T; cin>>T; while(T--)
	solve();
	return 0;
}

标签:周赛,return,int,while,long,牛客,62,solve,--
From: https://www.cnblogs.com/longxingx/p/18440737

相关文章

  • 牛客 9.29 对标 ABC 比赛题面
    ABCDEF(E'shard)输入52214331524G......
  • 淘宝千牛客服机器人实现全自动收发消息
    引言随着电商行业的快速发展,淘宝、天猫等电商平台成为了许多商家的主要销售渠道。为了提高操作效率和降低人工错误率,许多商家开始使用自动化工具来管理和操作他们的电商店铺。千牛自动化就是其中一种常见的自动化工具,它可以帮助商家自动化执行一些常见的操作,如商品管理、订单管理......
  • PHY6252SC/PHY6230SC/PHY6236SC/PHY6235SC 之间的差异
    PHY6235是一款用于低功耗蓝牙和专有2.4G应用的片上系统(SoC)。它具有高性能、低功耗的32位RISC-V微控制器,带有8KB保持静态随机存储器(SRAM)、80KB只读存储器(ROM)以及超低功耗、高性能、多模式无线电。此外,PHY6235可以支持具有安全性和应用功能的低功耗蓝牙。PHY62系列芯片......
  • 牛客练习赛129 A-数数
    复习一下埃氏筛,快速拿出n以内质数。该题要是一个一个去计算“偶数”会超时非常多。题意中”奇数“的本质是质数及质数的n次幂,所以先求出n以内所有质数及其n次幂的个数,就能计算出“偶数”的个数。1#include<bits/stdc++.h>2usingnamespacestd;3vector<bool>isPrime(......
  • 洛谷P1162 填涂颜色题解
    老规矩上题目:题目描述由数字 00 组成的方阵中,有一任意形状的由数字 11 构成的闭合圈。现要求把闭合圈内的所有空间都填写成 22。例如:6×66×6 的方阵(n=6n=6),涂色前和涂色后的方阵如下:如果从某个 00 出发,只向上下左右 44 个方向移动且仅经过其他 00 的情况下,无法......
  • Springboot拉勾教育课程管理系统y862q--(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表用户,讲师,学院,课程分类,课程信息,课程购买,课程发送开题报告内容一、项目背景与意义随着在线教育市场的蓬勃发展,拉勾教育作为专注于IT职业教育的知名品牌,其......
  • ABC262G 题解
    LISwithStack观察到\(n\le50\),考虑区间dp。设\(dp(l,r,x,y)\)表示区间\([l,r]\)中选出的子序列的最小值\(\gex\),最大值\(\ley\)的方案数。根据栈的性质,设元素\(x\)入栈的时间为\(in_x\),出栈时间为\(out_x\),那么所有元素构成的区间\([in_x,out_x]\)两......
  • LOJ 6241. 性能优化 I 题解
    题给代码意为\[\begin{align*}&\sum\limits_{i=1}^n\sum\limits_{j=1}^{\lfloor\fracni\rfloor}\sum\limits_{k=1}^j[\gcd(j,k)=1]\\=&\sum\limits_{i=1}^n\sum\limits_{j=1}^{\lfloor\fracni\rfloor}\varphi(j)\\......
  • Leetcode 622. 设计循环队列
    1.题目基本信息1.1.题目描述设计你的循环队列实现。循环队列是一种线性数据结构,其操作表现基于FIFO(先进先出)原则并且队尾被连接在队首之后以形成一个循环。它也被称为“环形缓冲器”。循环队列的一个好处是我们可以利用这个队列之前用过的空间。在一个普通队列里,一旦一个队列......
  • 2024牛客暑期多校训练营1——A,B
    题解:更新:k=1的时候要乘n代码:#include<bits/stdc++.h>#defineintlonglongusingnamespacestd;constintN=5e3+5;typedeflonglongll;typedefpair<int,int>PII;intT;intn,m,mod;intfac[N][N];intdp[N][N];intper[N];intpower(inta,int......