ARC 100
链接
https://arc100.contest.atcoder.jp/
C Linear Approximation
题解
把ai减去i后排序, 我们要的b就是排完序后的中位数
Code
#include<bits/stdc++.h>
using namespace std;
typedef long long ll; ll read(){
ll x=,f=;char c=getchar();
while(c<'' || c>''){if(c=='-')f=-;c=getchar();}
while(c>='' && c<=''){x=x*+c-'';c=getchar();}
return x*f;
} int n;
int a[];
map<int,int> m; int main(){
#ifdef LZT
freopen("in","r",stdin);
#endif
n=read();
for(int i=;i<=n;i++) a[i]=read()-i;
ll ans=;
sort(a+,a+n+);
int mx=a[(n+)/];
for(int i=;i<=n;i++) ans+=abs(a[i]-mx);
printf("%lld\n",ans);
return ;
}
D Equal Cut
题解
如果只切一刀,那么很好确定位置
我们预处理出前i个和后i个切一刀的最佳位置
然后枚举中间的一刀的位置 然后前面后面两刀都处理出来了 算一下取最大值就好
Code
#include<bits/stdc++.h>
using namespace std;
typedef long long ll; ll read(){
ll x=,f=;char c=getchar();
while(c<'' || c>''){if(c=='-')f=-;c=getchar();}
while(c>='' && c<=''){x=x*+c-'';c=getchar();}
return x*f;
} int n;
ll a[];
ll fen1[],fen2[];
pair<ll,ll> s1[],s2[]; int main(){
#ifdef LZT
freopen("in","r",stdin);
#endif
n=read();
for(int i=;i<=n;i++) a[i]=read();
ll pos=,sum=a[],sum2=a[];
for(int i=;i<=n-;i++){
sum2+=a[i];
while(pos<i){
ll nwsum=sum+a[pos+];
//cout<<sum2<<' '<<sum<<' '<<nwsum<<endl;
if(abs(sum2-sum-sum)>abs(sum2-nwsum-nwsum)){
pos++;
sum=nwsum;
}
else break;
}
//cout<<pos<<endl;
if(pos==i) sum-=a[pos],pos--;
fen1[i]=pos;
s1[i].first=sum;
s1[i].second=sum2-sum;
//cout<<i<<' '<<sum<<' '<<sum2-sum<<endl;
}
pos=n,sum=a[n],sum2=a[n];
for(int i=n-;i>;i--){
sum2+=a[i];
while(pos>i){
ll nwsum=sum+a[pos-];
if(abs(sum2-sum-sum)>abs(sum2-nwsum-nwsum)){
pos--;
sum=nwsum;
}
else break;
}
if(pos==i) sum-=a[pos],pos++;
fen2[i]=pos;
s2[i].first=sum;
s2[i].second=sum2-sum;
//cout<<i<<' '<<sum<<' '<<sum2-sum<<endl;
}
ll ans=1e18;
for(int i=;i<=n-;i++){
ll S1=s1[i].first,S2=s1[i].second,S3=s2[i+].first,S4=s2[i+].second;
ans=min(ans,max(max(max(S1,S2),S3),S4)-min(min(min(S1,S2),S3),S4));
}
printf("%lld\n",ans);
return ;
} /*
5
3 2 4 1 2
*/
E Or Plus Max
题解
我们要求max Ai+Aj s.t. i or j <=x
可以转化成max Ai+Aj s.t. i or j =x 然后求一个前缀max
转化成max Ai+Aj s.t. i or j ∈ x 然后求一个前缀max
转化成(max Ai s.t. i ∈ x )+ (second_max Ai s.t. i ∈ x)
所以我们需要维护pair<int,int> b[x]表示所有i∈x的最大值和第二大值
所有i∈x => 快速Zeta变换
然后就做完了
Code
#include<bits/stdc++.h>
using namespace std;
typedef long long ll; ll read(){
ll x=,f=;char c=getchar();
while(c<'' || c>''){if(c=='-')f=-;c=getchar();}
while(c>='' && c<=''){x=x*+c-'';c=getchar();}
return x*f;
} int n;
int a[];
pair<int,int> b[]; void upd(int x,int y){
int num1=b[x].first,num2=b[x].second,num3=b[y].first,num4=b[y].second;
b[x].first=max(num1,num3);
if(num1>num3) b[x].second=max(num2,num3);
else b[x].second=max(num1,num4);
} int main(){
#ifdef LZT
freopen("in","r",stdin);
#endif
n=read();
for(int i=;i<(<<n);i++)
a[i]=read();
for(int i=;i<(<<n);i++)
b[i].first=a[i],b[i].second=-1e9;
for(int k=;k<n;k++){
//cout<<k<<endl;
for(int i=;i<(<<n);i++){
if((i&(<<k))!=) continue;
upd(i|(<<k),i);
//cout<<(i|(1<<k))<<' '<<i<<endl;
}
}/*
for(int i=0;i+1<(1<<n);i++){
upd(i+1,i);
}*/
int lastans=;
for(int i=;i<(<<n);i++){
lastans=max(lastans,b[i].first+b[i].second);
printf("%d\n",lastans);
}
return ;
} /*
2
1 2 3 1
*/
F Colorful Sequences
ARC 100的更多相关文章
- 【AtCoder】 ARC 100
link C-Linear Approximation 给出\(N\)个数\(A_1,A_2,...,A_N\) ,求一个数\(d\),最小化\(\sum_{i=1}^N|A_i-(d+i)|\) 把 ...
- ARC 100 C - Linear Approximation题解---三分法
题目链接: https://arc100.contest.atcoder.jp/tasks/arc100_a 分析: 比赛时做这题想到一个瞎搞的方法就是在平均数上下波动一下取最小值,然后大佬yjw学长 ...
- canvas对象arc函数的使用-遁地龙卷风
(-1)写在前面 我用的是chrome49 <canvas id="lol" height="300"></canvas> (1)详细介 ...
- HTML5 Canvas arc()函数//////////////////////(转)
HTML5 Canvas arc()函数 实例 创建一个圆形: var c=document.getElementById("myCanvas"); var ctx=c.get ...
- HTML5 Canvas arc()函数
实例 创建一个圆形: var c=document.getElementById("myCanvas"); var ctx=c.getContext("2d") ...
- 超多经典 canvas 实例,动态离子背景、移动炫彩小球、贪吃蛇、坦克大战、是男人就下100层、心形文字等等等
超多经典 canvas 实例 普及:<canvas> 元素用于在网页上绘制图形.这是一个图形容器,您可以控制其每一像素,必须使用脚本来绘制图形. 注意:IE 8 以及更早的版本不支持 &l ...
- arc路径-磊哥
不然直接设置80 90要转换成弧度比如Math.PI代表180度你就要 80*Math.PI/180190*Math.PI/180<!DOCTYPE html><html>&l ...
- 对canvas arc()中counterclockwise参数的一些误解
一直没有很细心地去研究CanvasRenderingContext2D对象的arc方法,对它的认识比较模糊,导致犯了一些错误,特发此文,以纠正之前的错误理解. arc()方法定义如下: arc() 方 ...
- HTML5 arc的例子
demo.html <!DOCTYPE html> <html lang="zh"> <head> <meta charset=" ...
随机推荐
- No Memory Alignment with GCC
attribute method: #include <stdio.h> struct packed { char a; int b; } __attribute__((packed)); ...
- PandoraBox 支持3G无线上网卡(电信卡3G卡)(三)
笔者采用的是华为EC122无线上网卡 一:编辑/etc/modules.d/60-usb-serial usbserial vendor=0x12d1 product=0x1505 二:编辑/et ...
- socketIO原理图
- linux shell 突破
targetDate=$(cat maxdayid); targartMonth=${targetDate::}; targartYear=${targetDate::}; echo $targart ...
- mysql 数据库连接
1.需要mysql驱动包:mysql-connector-java-5.1.7-bin.jar 2. package com.jmu.ccjoin.web.controller; import jav ...
- poj 2185 Milking Grid(next数组求最小循环节)
题意:求最小的循环矩形 思路:分别求出行.列的最小循环节,乘积即可. #include<iostream> #include<stdio.h> #include<stri ...
- BZOJ_1295_[SCOI2009]最长距离_dij
BZOJ_1295_[SCOI2009]最长距离_dij Description windy有一块矩形土地,被分为 N*M 块 1*1 的小格子. 有的格子含有障碍物. 如果从格子A可以走到格子B,那 ...
- 微信小程序服务类目大坑:特殊行业服务类目所需资质材料
作为一个技术开发人员,遇到特殊行业服务类目所需资质材料,只能叫苦连天了,妈的,这个不是技术可以解决的问题,如果技术可以解决的问题都不是问题. 百牛信息技术bainiu.ltd整理发布于博客园 特殊行业 ...
- JS实现系统时间(自动)
转自:https://blog.csdn.net/qq_35607510/article/details/54600563
- 通过配置Mysql参数提高写入速度(整理)
1) innodb_buffer_pool_size 如果用Innodb,那么这是一个重要变量.相对于MyISAM来说,Innodb对于buffer size更敏感.MySIAM可能对于大数据量使用默 ...