A:搜索好难啊根本不会啊。

  B:暴力枚举给哪段前缀乘,维护一些前后缀最大最小值之类的东西就很好算了。

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
int read()
{
int x=,f=;char c=getchar();
while (c<''||c>'') {if (c=='-') f=-;c=getchar();}
while (c>=''&&c<='') x=(x<<)+(x<<)+(c^),c=getchar();
return x*f;
}
#define N 1000010
#define ll long long
int n,w,v,a[N];
ll ans=-,sum[N],pre[N],suf[N];
int main()
{
freopen("game.in","r",stdin);
freopen("game.out","w",stdout);
n=read(),w=-read(),v=-read();
for (int i=;i<=n;i++) a[i]=read();
for (int i=;i<=n;i++) sum[i]=sum[i-]+a[i];
for (int i=;i<=n+;i++) pre[i-]=suf[i]=(sum[n]-sum[i-])*v+sum[i-];
for (int i=;i<=n;i++) pre[i]=max(pre[i],pre[i-]);
for (int i=n;i;i--) suf[i]=min(suf[i],suf[i+]);
for (int i=;i<=n;i++)
ans=max(ans,min(sum[i]*w+suf[i+]-sum[i],(sum[n]-sum[i])*v+(pre[i]-(sum[n]-sum[i])*v)*w));
cout<<ans;
return ;
}

  C:吐槽一下这场的心路历程。开场看A,看了一会性质发现转化成了一个2-SAT,这玩意怎么还能计数啊?盯了一个小时一点都不会,暴力都没写就跑了。心态从这就开始崩了。然后半个小时搞掉B。C开始胡乱分析一下觉得某结论很显然,然后写了一个小时差不多搞定了,结果因为各种写挂,大样例跑的比答案大。然而并没有冷静下来去验证结论,并且由于数据范围才50觉得自己肯定假掉了,于是开始退火。退了半天总是比答案小,到处找锅没有任何收获,最后弃疗了连交都没交了。之后调了两个小时才发现做mst时边权开的是int于是炸成负数了。

  这个题胡乱分析一下性质跑mst就好了。

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<ctime>
using namespace std;
int read()
{
int x=,f=;char c=getchar();
while (c<''||c>'') {if (c=='-') f=-;c=getchar();}
while (c>=''&&c<='') x=(x<<)+(x<<)+(c^),c=getchar();
return x*f;
}
#define N 55
#define T1 1e5
#define T2 1e-8
#define delta 0.98
int n,a[N][N],b[N][N],id[N],id2[N],dfn[N],fa[N],c;
long long t[N],u[N],f[N],tmp[N],dis[N][N],ans,tot=;
bool cmp(const int&a,const int&b)
{
return f[a]>f[b];
}
struct data
{
int x,y;long long z;
bool operator <(const data&a) const
{
return z<a.z;
}
}edge[N*N];
int find(int x){return fa[x]==x?x:fa[x]=find(fa[x]);}
void SWAP(int x,int y)
{
swap(id[x],id[y]);
dfn[id[x]]=x,dfn[id[y]]=y;
}
long long getans()
{
ans=;
for (int i=;i<=n;i++) fa[i]=i;
for (int i=;i<=n;i++)
for (int j=;j<=n;j++)
if (a[i][j]) fa[find(i)]=find(j);
for (int i=;i<=n;i++)
{
for (int j=;j<=n;j++)
if (a[i][j])
if (dfn[j]<dfn[i]) ans+=u[j]*f[i]*(u[i]-t[i]);
else if (dfn[j]>dfn[i]) ans+=t[j]*f[i]*(u[i]-t[i]);
ans+=f[i]*((u[i]-)+t[i])*(u[i]-t[i])>>;
}
for (int i=;i<=n;i++)
for (int j=;j<=n;j++)
dis[i][j]=;
for (int i=;i<=n;i++)
for (int j=;j<=n;j++)
if (dfn[i]<dfn[j])
{
int p=find(i),q=find(j);
if (p!=q) dis[p][q]=min(dis[p][q],(t[i]+t[j])*c+t[j]*f[i]*(u[i]-t[i])+u[i]*f[j]*(u[j]-t[j]));
}
int cnt=;memset(id2,,sizeof(id2));
for (int i=;i<=n;i++) if (find(i)==i) id2[++cnt]=i;
int num=;
for (int i=;i<=cnt;i++)
for (int j=;j<=cnt;j++)
num++,edge[num].x=id2[i],edge[num].y=id2[j],edge[num].z=dis[id2[i]][id2[j]];
sort(edge+,edge+num+);
for (int i=;i<=n;i++) fa[i]=i;
for (int i=;i<=num;i++)
if (find(edge[i].x)!=find(edge[i].y)) ans+=edge[i].z,fa[find(edge[i].x)]=edge[i].y;
return ans;
}
void solve()
{
double T=T1;
long long lastans=tot;
while (T>T2)
{
int x=rand()%(n-)+,y=rand()%(n-x)+x+;
SWAP(x,y);
ans=getans();
if (ans<lastans||exp((lastans-ans)/T)>1.0*rand()/RAND_MAX) tot=min(tot,ans);
else SWAP(x,y),ans=lastans;
T*=delta;lastans=ans;
}
}
int main()
{
freopen("reconstruction.in","r",stdin);
freopen("reconstruction.out","w",stdout);
n=read();srand(time());
for (int i=;i<=n;i++) t[i]=read();
for (int i=;i<=n;i++) u[i]=read();
for (int i=;i<=n;i++) f[i]=read();
if (n==) {cout<<(f[]*((u[]-)+t[])*(u[]-t[])>>);return ;}
for (int i=;i<=n;i++)
{
for (int j=;j<=n;j++)
{
char c=getchar();
while (c!='Y'&&c!='N') c=getchar();
if (c=='Y') a[i][j]=;
}
}
c=read();
for (int i=;i<=n;i++) id[i]=i;
sort(id+,id+n+,cmp);
for (int i=;i<=n;i++) dfn[id[i]]=i;
tot=getans();
//solve();
cout<<tot;
return ;
}

  result:- rank-

Contest 9的更多相关文章

  1. Programming Contest Problem Types

        Programming Contest Problem Types Hal Burch conducted an analysis over spring break of 1999 and ...

  2. hdu 4946 2014 Multi-University Training Contest 8

    Area of Mushroom Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) ...

  3. 2016 Multi-University Training Contest 2 D. Differencia

    Differencia Time Limit: 10000/10000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Tot ...

  4. 2016 Multi-University Training Contest 1 G. Rigid Frameworks

    Rigid Frameworks Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) ...

  5. hdu-5988 Coding Contest(费用流)

    题目链接: Coding Contest Time Limit: 2000/1000 MS (Java/Others)     Memory Limit: 65536/65536 K (Java/Ot ...

  6. ZOJ 3703 Happy Programming Contest

    偏方记录背包里的物品.....每个背包的价值+0.01 Happy Programming Contest Time Limit: 2 Seconds      Memory Limit: 65536 ...

  7. 2012 Multi-University Training Contest 9 / hdu4389

    2012 Multi-University Training Contest 9 / hdu4389 打巨表,实为数位dp 还不太懂 先这样放着.. 对于打表,当然我们不能直接打,这里有技巧.我们可以 ...

  8. 2014 Multi-University Training Contest 9#11

    2014 Multi-University Training Contest 9#11 Killing MonstersTime Limit: 2000/1000 MS (Java/Others)   ...

  9. 2014 Multi-University Training Contest 9#6

    2014 Multi-University Training Contest 9#6 Fast Matrix CalculationTime Limit: 2000/1000 MS (Java/Oth ...

  10. 校际联合Contest

    每次开一个坑都像是重新被碾压的预感 最近的新闻,以前很喜欢乔任梁的<复活>...然后他就死了...感觉我再多愁善感一点的话...就要悲伤逆流成河了吧... Contest 09/24(乐滋 ...

随机推荐

  1. js获取IE版本,while代码很特别

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...

  2. 深入解析QML引擎, 第2部分: 绑定(Bindings)

    原文  QML Engine Internals, Part 2: Bindings 译者注:这个解析QML引擎的文章共4篇,分析非常透彻,在国内几乎没有找到类似的分析,为了便于国内的QT/QML爱好 ...

  3. Struts 2(四):类型转换

    类型转换是Struts 2的一个非常重要的部分,通过类型转换能够将表单参数转换成Java中的各种类型,本文将详细介绍Struts 2的内建类型转换器和自定义类型转换器. 第一节 Struts 2内建类 ...

  4. OpenCL入门:(三:GPU内存结构和性能优化)

    如果我们需要优化kernel程序,我们必须知道一些GPU的底层知识,本文简单介绍一下GPU内存相关和线程调度知识,并且用一个小示例演示如何简单根据内存结构优化. 一.GPU总线寻址和合并内存访问 假设 ...

  5. 451. Swap Nodes in Pairs【LintCode java】

    Description Given a linked list, swap every two adjacent nodes and return its head. Example Given 1- ...

  6. 袋鼠云研发手记 | 开源·数栈-扩展FlinkSQL实现流与维表的join

    作为一家创新驱动的科技公司,袋鼠云每年研发投入达数千万,公司80%员工都是技术人员,袋鼠云产品家族包括企业级一站式数据中台PaaS数栈.交互式数据可视化大屏开发平台Easy[V]等产品也在迅速迭代.在 ...

  7. Gradle快速上手——从Maven到Gradle

    [本文写作于2018年7月5日] 本文适合于有一定Maven应用基础,想快速上手Gradle的读者. 背景 Maven.Gradle都是著名的依赖管理及自动构建工具.提到依赖管理与自动构建,其重要性在 ...

  8. 搭建Git工作环境

    为什么要做版本控制? 在平时的工作中,经常会遇到写文档的事情,而写文档基本都不会一蹴而就,总是会修修改改很多次,而版本控制能够记录每次修改的版本,能够进行回溯.有很多版本控制工具,但是作为一个程序员, ...

  9. 团队介绍&学长采访

    1. 团队介绍 刘畅 博客园ID:森高Slontia 身份:PM 个人介绍: 弹丸粉 || 小说创作爱好者 || 撸猫狂魔 我绝对不知道,我一个写代码的怎么就当PM去了? 张安澜 博客园ID:Mins ...

  10. 第二次程序+PSP0级

    第二周,老师接着上次的程序有对四则运算的程序,做出来一些要求,这次要求可以控制乘除法,有无括号,控制输出方式,控制结果有无负数,有无余数. 我在对原先的程序分析了一下,发现我原先的程序可扩展性特别差, ...