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

news/2024/9/29 21:04:30

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

赛后反思

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

A题

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

#include <bits/stdc++.h>
#define int long longusing 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 longusing 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.14159265358979324using 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 longusing 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 longusing 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;
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

Large_bins_attack

导言 在libc版本越来越高的情况下,许多旧的攻击方式已然失效,而large_bin_attack始终屹立不倒,是许多攻击方式的先决条件,这也是我们要学习它的原因 large_bin 概念 large_bin是一种堆分配的管理方式,是双向链表,用于管理大于某个特定大小阈值的内存块。一般而言,进入la…

直播的剪辑工作流/工具分享

基本流程获取素材 粗剪 导出音频识别成字幕文件 应用字幕并校准字幕 配bgm并进行精剪工具分享 一 获取直播素材高时效性-即录即拿:VLC media player、录屏软件(如Screen Record Pro等) 中时效性但解放双手-需要等待其录制/编码完成:biliup:如果想保持想保存为mp4,需要安装f…

AT_arc184_d [ARC184D] Erase Balls 2D

AT_arc184_d [ARC184D] Erase Balls 2D 首先,假定我们选定的行为 \(i_1,i_2,\cdots,i_k\),并有 \(i_1<i_2<\cdots<i_k\),则 \(p_{i_1}>p_{i_2}>\cdots>p_{i_k}\)。其中 \(p_x\) 表示 \((x,p_x)\) 的位置上有点。 最终状态形如下图。显然,这种状态与操作顺…

「Wdoi-(-1)」恋弹者们的黑集市

「Wdoi-(-1)」恋弹者们的黑集市 魔理沙有两种方法移动这个骰子:将骰子向下一列翻转,或者向下一行翻转。值得注意的是,翻转骰子后,骰子每面上的数字就会随着翻滚而改变。现在魔理沙需要将骰子滚动至第 \(n\) 行第 \(m\) 列。 魔理沙的分数被定义为,所有时刻,骰子与棋盘上的…

腾讯企业邮箱(企业微信邮箱)迁移到microsoft 365(office 365)

1.迁移前准备(腾讯企业邮箱)1.如果你是企业管理员,首先看一下企业邮箱后台,是否已关闭 登陆安全2.登录要迁移的个人邮箱后台,关闭安全登录、开启IMAP服务和相关选项,以及为邮箱设置一个密码 2.开始迁移1.登录microsoft 365管理后台(https://admin.exchange.microsoft.com…

micropython +ESP32+ sht30 温湿度模块

SHT30 1)查找SHT30芯片资料 https://www.szlcsc.com 2)根据芯片资料,查得地址为 0x44 或 0x45 选 Measurement Commands for Single Shot Data Acquisition Mode, 命令为 0x2c10 3)连线SHT30 ESP32 D1(SCL) 4D2(SDA) 5 G …

系统固态扩容-全小白操作示意 不需要BIOS

机械革命有两个插槽,我有一个500G(系统盘)一个1T的固态,由于1.5T的固态都快用完了,所以买了一个2T的固态,将1T的内容迁移到2T中,将500G的迁移到1T中。 为了防止内容丢失先将500G系统盘做了备份,用的傲梅轻松备份。 1T->2T 然后就是将2T的固态用绿联的固态盒子先当做移…

2024-2025-1 20241318 《计算机基础与程序设计》第一周学习总结

这个作业属于哪个课程 <班级的链接>(如2024-2025-1-计算机基础与程序设计)这个作业要求在哪里 <作业要求的链接>(如2024-2025-1计算机基础与程序设计第一周作业)这个作业的目标 阅读浏览教材《计算机科学概论》并提出自己的问题,基于AI进行学习作业正文 ... 本博…