Bzoj4873 [SXOI2017]寿司餐厅 - SilverNebula

2017-10-08 12:15  来自: 网络整理

Time 限度局限:20 Sec  Memory Limit: 512 MB
关系到:64处理:45

Description

  Kiana又像到一家恰好是品位高雅的的寿司餐厅吃晚饭。question 成绩,这家餐厅将出价为N种寿司,栩栩如生的一种寿司

艾码和品位高雅的地,i,辨别优生交配的寿司可以运用相同的人的指定遗传密码。对每一种寿司的份数是有限的,基安娜也可以是有限的

去吃寿司,但每一种寿司你只拿任一,每个要采用由A出价寿司餐厅,即Kiana

任一可以拿高音部,一份2种寿司,你也可以把二,一份3种寿司,但不任一可以拿高音部,3种寿司。鉴于餐

机关出价杂多的各样的寿司,但辨别优生交配的寿司暗中的互相感染:鲑鱼寿司和鱿鱼寿司一齐吃。,但水和

果品寿司一齐吃会肚子疼。故此,基安娜限制了任一片面的品位高雅的地,j(i

餐厅出价从我的寿司J拆移,吃特权市买到额定的品位高雅的的寿司。由于它必要任一寿司

些时期,因而咱们以为分两遍取来的寿司暗中互相不能胜任的感染。在任一以吃寿司,任一完毕的合成缓缓地变化或发展将品位高雅的

加在一起,譬如,结果基安娜永远拿高音部,2,一份3种寿司,不计D1,3外,d1,2,d2,3将积聚成的品位高雅的。神奇

的是,品位高雅的的评价基安娜是任一罢免,无论是任一缓缓地变化或发展的品位高雅的的寿司,或杂多的品位高雅的的寿司合成缓缓地变化或发展的结成,在

只会累计基安娜入学品位高雅的。譬如,结果以高音部基安娜,一份2种寿司,另一次,3

一种寿司,绝对的是D1这这品位高雅的的寿司两倍,1+d2,2+d3,3+d1,2+d2,3,当选d2,2将只计算一次。出其不意购置物的是,

这家寿司餐厅的免费基准很辨别寻常。详细来说,结果基安娜有任一绝对的C(C > 0)X寿司指定遗传密码,她必要这些

粟实报酬2元 CX MX ^,当选M是任一常数出价餐厅。现时基安娜惊奇,在这家馆子吃寿司。,你可以买到全美国

一阵狂风(包罗占有使吃惊的单种寿司的品位高雅的度和占有被加在一起的合成品位高雅的度)减去数钱花了的消瘦是多少。鉴于她

几乎不,因而我期望你告知她

Input

高音部行遏制两个积分n,m,这家餐厅的不竭的运用出价了总额和CA。

秒行遏制任一正积分n,K号AK K粟实说。

接下来的n行,我行遏制1个积分阶 ,J迪数,我 J-1吃寿司说

购置物呼应缓缓地变化或发展的品位高雅的,预告的详细理解描述方法。

N<=100,Ai<=1000

Output

输入一排遏制任一正积分,总钱总引人入胜的东西的基安娜能度的最大发展成为说。

Sample Input

3 1
2 3 2
5 -10 15
-10 15
15

Sample Output

12
[阐明] 1例
本范本组,餐厅共出价了3份寿司,他们的名字分莫非A1 = 2,a2=3,a3=2,价钱静止,M = 1计算。确保每个
把寿司可以买到任一新的假设的事情下的名声,基安娜有14个辨别的训练来吃寿司:
任一拒不服从寿司,故此她总引人入胜的东西,钱破费的总金额是0,0减去二;
就拿1个寿司,独自地第任一寿司,她是在{【1寿司,1]},绝对的品位高雅的故此购置物了5,数钱花了
为1-2^2+1*2=6,1减去二;
就拿1个寿司,独自地二寿司,她是在{【2寿司,2]},绝对的品位高雅的故此购置物了10,总缺钱花
数为1-3 ^ 2 1 * 3 = 12,22减去二;
就拿1个寿司,独自地第三的寿司,她是在{【3寿司,3]},绝对的品位高雅的故此购置物了15,数钱花了
为1*2^2+1*2=6,9减去二;
就拿1个寿司,拿高音部,2寿司,她是在{【1寿司,2]},绝对的品位高雅的故此购置物了5+(-10)+(-10)=-1
5,数钱花了为(1-2^2+1*2)+(1-3^2+1*3)=18,33减去二;
就拿1个寿司,以二,3寿司,她是在{【2寿司,3]},绝对的品位高雅的例如购置物 15 15 = 20(10),
数钱花了为(1-2^2+1*2)+(1*3^2+1*3)=18,2减去二;
就拿1个寿司,拿高音部,2,3寿司,她是在{【1寿司,3]},绝对的品位高雅的故此购置物了5+(-10)+15+(-1
0)+15+15=30,数钱花了为(1*2^2+2*2)+(1*3^2+1*3)=20,10减去二。
2寿司,高音部次吃寿司,二次二寿司,她是在{【1寿司,1],[2,2]},从那里买到的
5 总品位高雅的度(- 10)= 5,数钱花了为(1*2^2+1*2)+(1*3^2+1*3)=18,23减去二;
2寿司,高音部次吃寿司,秒次取第3寿司,她是在{【1寿司,1],[3,3]},从那里买到的
绝对的品位高雅的缓缓地变化或发展是5 15 = 20,数钱花了为1*2^2+2*2=8,12减去二;
2寿司,高音部次取第2寿司,秒次取第3寿司,她是在{【2寿司,2],[3,3]},从那里买到的
引人入胜的东西的总缓缓地变化或发展(10) 15 = 5,数钱花了为(1*2^2+1*2)+(1*3^2+1*3)=18,1减去二3;
12寿司,高音部,2寿司,秒次取第3寿司,她是在{【1寿司,2],[3,3]},这是得
5 的感受性(10) (10) 15 = 0,数钱花了为(1*2^2+2*2)+(1*3^2+1*3)=20,20减去二;
12寿司,高音部次吃寿司,二次二,3寿司,她是在{【1寿司,1],[2,3]},这是得
5 的感受性(10) 15 15 = 25,数钱花了为(1-22+2-2)+(1-32+1-3)=20,5减去二;
12寿司,高音部,2寿司,二次二,3寿司,她是在{【1寿司,2],[2,3]},这是
这品位高雅的的5 总(- 10) 15 (10) 15 = 15,数钱花了为(1*2^2+2*2)+(1*3^2+1*3)=20,5减去二;
1出3个寿司,高音部次吃寿司,二次二寿司,第三次取第3寿司,她是在{【1寿司,1]
,[2,2],[3,3]},绝对的品位高雅的故此购置物了5+(-10)+15=10,数钱花了为(1*2^2+2*2)+(1*3^2+1*3)=20,二者都相减
为-10。
因而基安娜会选择9,这时她购置物的总品位高雅的度减去数钱花了的值最很12。

HINT

Source

辽宁河北六山西锣鼓节上海平次试场

图论 网流 封子图的最大分量

这成绩太长,出现很不堪入目的指定遗传密码吗?

因而试场的视频博客写了任一势力转变T2,岂敢看

从30分钟完毕,以为T2是水乳交融的,强烈反驳看它。

WTF这不是封子图的最大分量嘛

这标致的构筑:

  1、占有($我,J)$的收益延伸,将它们作为任稍微,结果体重为MP,从源点甚至超越,满意的为MP,结果分量是负的,条件去闭会点,满意的为MP

  2、占有($我,J)$的收益延伸,延伸包罗我J,甚至寿司的满,满意的为inf,霉臭选择呼应的寿司的选择延伸

  3、占有典型的寿司$ W [我],人人稍微,沉T的满,满意的为M×W×W [我] [我]

  4、每1 ~ N粟实,他们属于$ W [我]为节典型,满意的为inf;衔接T,满意的为C [我]

  5、占有($我,J继承权,向$(i+1,j)$和$(i,j-1)$连边,满意的交流,表现选了大区间必定得选被大区间遏制的小区间

因此你可以运转的最小割。

在决定性的的30分钟,Blogger Biao把加速,在15分钟击中了网流量的拆移施工方,运转创纪录的中发明不义行为。。为了Qiuwen,应用决定性的的时期来反省占有些人记录作用,势力的20点的终极定居点量。

走过受考验发明,当在指定遗传密码被发展的状态附和缺乏发现。

蛤蛤蛤蛤蛤

重新开始:指定遗传密码到B站,跑了800+ms,一看居住于都是100,什么?尝试最佳化波,卡70 MS,位置评分2。

  实则,Dinic想跑得快,BFS D [ ]河床打扮霉臭卡就十足了,若非,在memset的占有时期。

  平静任一构筑最佳化(109~113行)

  1/*by SilverN*/  2 #include
  3 #include
  4 #include
  5 #include
  6 #include
  7 #include
  8#define LL long long
  9usingnamespace std;
 10constint INF=0x3f3f3f3f;
 11constint mxn=30505;
 12int read(){
 13int x=0,f=1;char ch=getchar();
 14while(CH<'0' || ch>'9'){if(CH=='-')f=-1;ch=getchar();}
 15while(CH>='0' && ch<='9'){x=x*10+ch-'0';ch=getchar();}
 16return x*f;
 17}
 18struct edge{
 19int u,v,nxt,f;
 20 E【M×N<<6];
 21int 高清[MXN],mct=1;
 22 inline void add_edge(int u,int v,int f){
 23     e[++mct].v=v;e[mct].u=u;e[mct].nxt=hd[u];e[mct].f=f;hd[u]=mct;return;
 24}
 25void insert(int u,int v,int f){
 26//  printf(%d to %d f:%d
",u,v,f); 27     add_edge(u,v,f); add_edge(v,u,0);
 28return;
 29}
 30int S,T;
 31int d[10085];
 32bool BFS(){
 33     memset(d,0,sizeof d);
 34     queue<int>q;
 35     d[S]=1;
 36    q.push(S);
 37while(!()){
 38int u=();();
 39for(int i=hd[u];i;i=e[i].nxt){
 40int v=e[i].v;
 41if(!d[v] && e[i].f){
 42                 d[v]=d[u]+1;
 43                q.push(v);
 44            }
 45        }
 46    }
 47return d[T];
 48}
 49int DFS(int u,int Lim)
 50//  printf(DFS:%d %d
",u,Lim) 51if(u==T)return lim;
 52int f=0,tmp;
 53for(int i=hd[u];i;i=e[i].nxt){
 54int v=e[i].v;
 55if(d[v]==d[u]+1 && e[i].f && (TMPDFS(V,min(Lim,e[i].f)))){
 56             e[i].f-=tmp;
 57             e[i^1].f+=tmp;
 58             lim-=tmp;
 59             f+=tmp;
 60if(!Lim)return f;
 61        }
 62    }
 63     d[u]=0;
 64return f;
 65}
 66int Dinic(){
 67int res=0;
 68while(bfs())研讨DFS(S,INF)
 69return res;
 70}
 71int n,m;
 72int a[105];
 73int mp[105][105];
 74int id[105][105],ict=0;
 75int idw[1005];
 76bool vis[1005];
 77 LL smm=0;
 78void Build(){
 79     S=0;
 80for(int i=1;i<=n;i++){
 81for(int j=i;j<=n;j++){
 82             id[i][j]=++ict;
 83        }
 84    }
 85for(int i=1;i<=n;i++){
 86if(!可见[ [我]
 87             可见[ [我]1;
 88             IDW [ [我]ict;
 89        }
 90    }
 91     T=ict+n+1;
 92//  printf("S:%d T:%d
",S,T); 93     memset(vis,0,sizeof 可见)
 94for(int i=1;i<=n;i++){
 95if(!可见[ [我]
 96             可见[ [我]1;
 97             拔出(IDW [ [我],T,m*a[i]*任一[我]
 98        }
 99    }
100for(int i=1;i<=n;i++){//zhonglei101         拔出(ICTi,IDW [ [我],INF)
102         拔出(ICTi,T,任一[我]
103    }
104for(int i=1;i<=n;i++){
105for(int j=i;j<=n;j++){
106if(mp[i][j]>0){
107                 smm+=mp[i][j];
108                拔出(S,id[i][j],mp[i][j]);
109/*                为(int k=i;k<=j;k++){
110                    拔出(ID [我] [ J ],ict+k,INF)
111                }*/112                 拔出(ID [我] [ J ],ict+i,INF)
113                 拔出(ID [我] [ J ],ict+j,INF)
114            }
115elseif(mp[i][j]<0){
116                 拔出(ID [我] [ J ],T,-mp[i][j]);
117/*                为(int k=i;k<=j;k++){
118                    拔出(ID [我] [ J ],ict+k,INF)
119                }*/120                 拔出(ID [我] [ J ],ict+i,INF)
121                 拔出(ID [我] [ J ],ict+j,INF)
122            }
123if(i!=j){
124                 拔出(ID [我] [ J ],[我的ID1][j],INF)
125                 拔出(ID [我] [ J ],id[i][j-1],INF)
126            }
127        }
128    }
129return ;
130}
131int main(){
132int i,j;
133     n=read();m=read();
134for(int i=1;i<=n;i++)a[i]=read();
135for(i=1;i<=n;i++)
136for(j=i;j<=n;j++)
137             mp[i][j]=read();
138    Build();
139int res=Dinic();
140     smm-=res;
141     printf("%lld
",SMM)
142return0;
143 }



下一篇:没有了

更多>>

相关资讯

  • Bzoj4873 [SXOI2017]寿司餐厅

  • 二月去丽江旅游必备物品

  • 二月去丽江旅游必备物品

  • 二月去丽江旅游必备物品

推荐资讯 更多>>

Copyright © 2016-2017 威尼斯人网址 - 澳门威尼斯人官网 - 威尼斯人网上娱乐 版权所有


扫一扫访问移动端