链接

https://arc100.contest.atcoder.jp/

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 ;
}

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
*/

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
*/

Colorful Sequences

ARC 100的更多相关文章

  1. 【AtCoder】 ARC 100

    link C-Linear Approximation 给出\(N\)个数\(A_1,A_2,...,A_N\) ,求一个数\(d\),最小化\(\sum_{i=1}^N|A_i-(d+i)|\) 把 ...

  2. ARC 100 C - Linear Approximation题解---三分法

    题目链接: https://arc100.contest.atcoder.jp/tasks/arc100_a 分析: 比赛时做这题想到一个瞎搞的方法就是在平均数上下波动一下取最小值,然后大佬yjw学长 ...

  3. canvas对象arc函数的使用-遁地龙卷风

    (-1)写在前面 我用的是chrome49 <canvas id="lol" height="300"></canvas> (1)详细介 ...

  4. HTML5 Canvas arc()函数//////////////////////(转)

    HTML5 Canvas arc()函数   实例 创建一个圆形: var c=document.getElementById("myCanvas"); var ctx=c.get ...

  5. HTML5 Canvas arc()函数

    实例 创建一个圆形: var c=document.getElementById("myCanvas"); var ctx=c.getContext("2d") ...

  6. 超多经典 canvas 实例,动态离子背景、移动炫彩小球、贪吃蛇、坦克大战、是男人就下100层、心形文字等等等

    超多经典 canvas 实例 普及:<canvas> 元素用于在网页上绘制图形.这是一个图形容器,您可以控制其每一像素,必须使用脚本来绘制图形. 注意:IE 8 以及更早的版本不支持 &l ...

  7. arc路径-磊哥

    不然直接设置80 90要转换成弧度比如Math.PI代表180度你就要 80*Math.PI/180190*Math.PI/180<!DOCTYPE html><html>&l ...

  8. 对canvas arc()中counterclockwise参数的一些误解

    一直没有很细心地去研究CanvasRenderingContext2D对象的arc方法,对它的认识比较模糊,导致犯了一些错误,特发此文,以纠正之前的错误理解. arc()方法定义如下: arc() 方 ...

  9. HTML5 arc的例子

    demo.html <!DOCTYPE html> <html lang="zh"> <head> <meta charset=" ...

随机推荐

  1. 64位CentOs7源码安装mysql-5.6.35过程分享

    首先安装依赖包,避免在安装过程中出现问题 [root@bogon liuzhen]# yum -y install gcc gcc-c++[root@bogon liuzhen]# yum -y in ...

  2. spark0.9.1集群模式执行graphx測试程序(LiveJournalPageRank,新增Connected Components)

    spark最新版公布了.之前的版本号就已经集成了graphx,这个版本号还改了一些bug. 我做了简单測试,只是网上关于集群模式执行spark资料太少了,仅仅有关于EC2(见參考资料1)的.可是还非常 ...

  3. ubuntu12.04配置NFS服务详解

    1:安装nfs sudo apt-get install nfs-kernel-server 2:配置服务 sudo vim /etc/exports 在末尾添加 /home/jyg *(rw,syn ...

  4. LoadRunner性能测试样例分析

    LR性能测试结果样例分析 测试结果分析 LoadRunner性能测试结果分析是个复杂的过程,通常可以从结果摘要.并发数.平均事务响应时间.每秒点击数.业务成功率.系统资源.网页细分图.Web服务器资源 ...

  5. ubuntu安装wine+plsql

    1.在ubuntu下装了win7的虚拟机,在使用plsql进行开发的时候发现很慢很卡,经常半天反应不过来.机器是不差的,1w5的thinkstation,实在受不了这种 速度,想着在ubuntu下搞一 ...

  6. Python web —— Selenium 库

    Selenium:硒,一种化学元素. Selenium 是 Python 下第三方浏览器自动化工具. 1. Firefox/Chrome from selenium import webdriver ...

  7. IOS AutoLayout 代码实现约束—VFL

    在autolayout下,尽管使用IB来拖放控件,但仍然避免不了用代码来创建控件,这是约束需要代码来实现. IOS 提供了两种添加约束的方法 第一种: +(instancetype)constrain ...

  8. jQuery测试结果

    您的回答: 1.下面哪种说法是正确的? 您的回答:jQuery 是 JavaScript 库 2.jQuery 使用 CSS 选择器来选取元素? 您的回答:正确 3.jQuery 的简写是? 您的回答 ...

  9. CoreOS,CoreOS,一款 Linux 容器发行版

    CoreOS,一款最新的 Linux 发行版本,支持自动升级内核软件,提供各集群间配置的完全控制. 关于使用哪个版本的 Linux 服务器系统的争论,常常是以这样的话题开始的: 你是喜欢基于 Red ...

  10. .NETFramework:HttpRuntime

    ylbtech-.NETFramework:HttpRuntime 1.返回顶部 1. #region 程序集 System.Web, Version=4.0.0.0, Culture=neutral ...