【arc101】比赛记录
这场还好切出了D,rt应该能涨,然而这场的题有点毒瘤,700分的D没多少人切,更别说EF了。(暴打出题人)既然这样,干脆就水一篇博客,做个简单的比赛记录。
C - Candles
这题是一道一眼题,花了大约30s看懂题意,然后就想到做法开始敲。
首先先把蜡烛的坐标从小到大排序,我们要点亮的蜡烛一定在一个区间里,因此若我们要点亮区间$ [i,i+k) $的蜡烛我们可以这么走:先走到蜡烛$ i $和$ i-k+1 $中较近的一根,然后再走向另一根,并把途径的蜡烛全部点亮。这样的花费是$ \min(|x_i|,|x_{i+k-1}|)+x_{i+k-1}-x_i $。于是扫一遍顺便维护最小值答案即可。
然而我因为括号有点多,敲错了一个傻逼错误,调了快10min才调出来。。QAQ
代码:(时间复杂度$ O(n \log(n)) $)
![](/assets/blank.gif)
![](/assets/blank.gif)
#include<cstdio> #include<cmath> #include<cstdlib> #include<cstring> #include<ctime> #include<algorithm> #include<queue> #include<vector> #include<map> #define ll long long #define ull unsigned long long #define max(a,b) (a>b?a:b) #define min(a,b) (a<b?a:b) #define lowbit(x) (x& -x) #define mod 1000000007 #define inf 0x3f3f3f3f #define eps 1e-18 #define maxn 1000010 inline ll read(){ll tmp=0; char c=getchar(),f=1; for(;c<'0'||'9'<c;c=getchar())if(c=='-')f=-1; for(;'0'<=c&&c<='9';c=getchar())tmp=(tmp<<3)+(tmp<<1)+c-'0'; return tmp*f;} inline ll power(ll a,ll b){ll ans=1; for(;b;b>>=1){if(b&1)ans=ans*a%mod; a=a*a%mod;} return ans;} inline ll gcd(ll a,ll b){return b?gcd(b,a%b):a;} inline void swap(int &a,int &b){int tmp=a; a=b; b=tmp;} using namespace std; int a[maxn]; int n,k; int main() {n=read(); k=read();for(int i=1;i<=n;i++)a[i]=read();sort(a+1,a+n+1); // for(int i=1;i<=n;i++)printf("%d %d\n",i,a[i]);int ans=inf;for(int i=k;i<=n;i++)ans=min(ans,min(abs(a[i]),abs(a[i-k+1]))+a[i]-a[i-k+1]);printf("%d\n",ans);return 0; }
arc101C
D - Median of Medians
感觉我思想江化了,总是在想怎么快速求出以某个数为中位数的区间个数,推了一堆式子也没搞出来。最后看到hjw巨佬一句“二分答案”,方如醍醐灌顶地想出了解法。(orzhjw!!!)
首先我们先二分最后序列的中位数。设$ tot $为中位数$>= mid $的区间个数,若中位数序列的中位数$>= mid $,则有$ tot>=\lfloor \frac{n(n+1)}{4} \rfloor $。
那么如何求$ tot $?
我们另外构造一个序列$ b $,当$ a_i>=mid $时$ b_i=1 $,否则 $ b_i=-1 $。那么若区间$ [l,r] $的中位数$ >= mid $,则有$ \sum_{i=l}^{r} b_i>mid $,于是我们求出序列$ b $的前缀和序列$ sum $,那么问题就变成了求满足$ l<r $且$ sum[r]-sum[l]>=0 $的数对$ (l,r) $数量$ (0<=l,r<=n) $,这个问题可以用与求逆序对数量相似的方法解决。蒟蒻我就直接上树状数组了。
代码:(时间复杂度$ O(n \log^2(n) $)
![](/assets/blank.gif)
![](/assets/blank.gif)
#include<cstdio> #include<cmath> #include<cstdlib> #include<cstring> #include<ctime> #include<algorithm> #include<queue> #include<vector> #include<map> #define ll long long #define ull unsigned long long #define max(a,b) (a>b?a:b) #define min(a,b) (a<b?a:b) #define lowbit(x) (x& -x) #define mod 1000000007 #define inf 0x3f3f3f3f #define eps 1e-18 #define maxn 100010 inline ll read(){ll tmp=0; char c=getchar(),f=1; for(;c<'0'||'9'<c;c=getchar())if(c=='-')f=-1; for(;'0'<=c&&c<='9';c=getchar())tmp=(tmp<<3)+(tmp<<1)+c-'0'; return tmp*f;} inline ll power(ll a,ll b){ll ans=1; for(;b;b>>=1){if(b&1)ans=ans*a%mod; a=a*a%mod;} return ans;} inline ll gcd(ll a,ll b){return b?gcd(b,a%b):a;} inline void swap(int &a,int &b){int tmp=a; a=b; b=tmp;} using namespace std; int bit[2*maxn]; int a[maxn]; int n; void add(int x,int k){for(;x<=2*n;x+=lowbit(x))bit[x]+=k;} int getsum(int x){int sum=0; for(;x;x-=lowbit(x))sum+=bit[x]; return sum;} int check(int mid) {for(int i=1;i<=2*n;i++)bit[i]=0;ll tot=0,sum=0;add(n,1);for(int i=1;i<=n;i++){sum+=(a[i]>=mid?1:-1);tot+=getsum(sum+n);add(sum+n,1);} // printf("%d %lld\n",mid,tot);return tot>=1ll*n*(n+1)/4; } int main() {n=read();int mx=-inf,mn=inf;for(int i=1;i<=n;i++){a[i]=read();mx=max(mx,a[i]); mn=min(mn,a[i]);}int l=mn,r=mx;while(l<r){int mid=(l+r+1)>>1;if(check(mid))l=mid;else r=mid-1;}printf("%d\n",l); }
arc101D
E - Ribbons on Tree
以后填吧。。。
F - Robots and Exits
同上。。。
转载于:https://www.cnblogs.com/quzhizhou/p/9535597.html
【arc101】比赛记录相关推荐
- 编程比赛记录 练习题答案
作者:迷途小书童爱读书 目录: 编程比赛记录 C++语法 标准输入库 vector list 内存拷贝 代码检查 map dev C++ 算法 背包算法 输入输出练习 计算a+b 计算N行A+B 编程 ...
- IROS 2019 比赛记录
IROS 2019 比赛记录--题目更新了 2019-12-5 IROS比赛内容更新(2019-10-17) 目前准备进展 仍需准备的工作及问题 IROS 比赛准备(2019-09-27) 任务二:把 ...
- lol 服务器维护 看不了比赛记录,LOL无法连接到比赛记录【解决方法】
LOL无法连接到比赛记录原因 玩英雄联盟提示无法连接到比赛记录怎么办?其实出现这种问题大多则是因为系统服务器比赛记录出现故障所导致的问题,有时并非是玩家自身的问题,但不排除某些玩家因自身网络问题而导致 ...
- 用python爬取NBA球队的所有比赛记录
文章目录 本文摘要 1. 首先分析URL 2. 获取所有NBA球队的Team_id和中文名 3. 爬取所有NBA球队2018-2019赛季的详细比赛记录 4. 后记 本文摘要 目标任务:爬取 stat ...
- 【CF 比赛记录】Roye_ack的艰难上分日常(35)
目录 #792 Div1+Div2 AC A1. Digit Minimization #Edu 129 Div2 !A2. Game with Cards #795 Div2 AC A3. Be ...
- 【数学建模】建模比赛记录总结篇
该比赛已于4.18日9点结束,本篇博客是我参赛结束或的记录,代码均为原创,请勿抄袭!!! 如有疑问,请私信作者或在评论区. 文章目录 前言 一.摘要 二.问题 三.聚类遗传模型 1.模型流程分析 2. ...
- 比赛记录:ICME-2022 安全AI挑战者计划第九期:小样本商标检测挑战赛
ICME-2022 安全AI挑战者计划第九期:小样本商标检测挑战赛 前言 一.比赛介绍 赛题背景 数据集 测试结果提交 二.服务器比赛环境准备 三.寻找Baseline 四.改进Baseline 五. ...
- Kaggle比赛记录和总结
Kaggle比赛 这个比赛我觉得是半年来收获最大的 过程 开始做这个比赛的时候,还有两个月的时间,花了一些时间看相关论文,当时看的是PVNet和CDPN,最后决定用CDPN试一下 CDPN CDPN的 ...
- Kaggle比赛记录(四)Instant Gratification
这应该是找到工作前的最后一个kaggle比赛经历了,最终排名是45/1839,在前3%范围内.其实kaggle的比赛只要认真去做了,基本上拿个前10%不是什么难事. 选择了Instant ...
最新文章
- android 在使用ViewAnimationUtils.createCircularReveal()无法兼容低版本的情况下,另行实现圆形scale动画...
- python批量解压文件_python 批量解压压缩文件的实例代码
- 文献记录(part89)--I-k-means-+:An iterative clustering algorithm based on an enhanced k -means
- jquery checkbox 实现单选
- Linux下top命令详解
- google 图表(chart)
- Quartz与Spring集成 Job如何自动注入Spring容器托管的对象
- SQL Server 2012新建本地服务器组注册服务器
- 北航计算机机试13真分数约分
- 不将visio的白色背景复制到ppt上
- w7电脑蓝屏怎么解决_win7家用版_电脑老是蓝屏怎么办? - Win7之家
- 044-JAVA输入/输出流-File类的应用
- 指纹识别综述(1): 导论
- 地推项目大全_地推吧:app线上推广渠道大全(软件app上新地推)
- 人脸定点:关键点检测方法汇总
- 9.27 股票盈利计划 只做超短线 利益最大化
- 安装Docker,在本机上跑一个‘2048’小游戏(脉冲云在线体验)
- 2022出海中东:沙特阿拉伯电商市场现状及发展前景
- jdbc 胖连接_JDBC完美连接方法
- JavaWeb——BootStrap_7/14
热门文章
- 最完整的Win7快捷键
- 使用JFreeChart在网页上绘制平滑曲线
- git bash here创建项目无法选择m_git 版本控制初学者指南
- 在java中私有方法能被重载吗_我可以在Java中重载私有方法吗?
- dwt去噪 matlab,用matlab进行小波去噪的程序
- 计算机二级ms office过关,计算机二级office-计算机二级MS OFFICE过关攻略!附赠练习软件...
- php soap 用户名密码,PHP SOAP客户端帮助!
- Django中models利用ORM对Mysql 进行查表的语句(多个语句)
- (二) shiro入门 :输出 hello world
- WEB入门之十九 UI