bzoj3993: [SDOI2015]星際戰爭(二分+最大流)
題目傳送門
。
解法:
題目要求最短時間,那麼二分答案咯。
然後用最大流來判斷就好。
st向每臺鐳射連時間*Bi表示他的傷害。
然後其實我們並不需要知道他怎麼安排攻擊。
這個交給最大流來做。
我們需要求的是鐳射按照最優的分配能不能總傷害達到消滅全部裝甲所需要的傷害。
那麼每臺裝甲向ed連Ai表示消滅這個裝甲只需要Ai點傷害。
注意精度
程式碼實現:
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<iostream>
#include<algorithm>
#include<cmath>
#include<queue>
using namespace std;
struct node {
int x,y,next,other;double c;
}a[11000];int len,last[110];
void ins(int x,int y,double c) {
int k1,k2;
len++;k1=len;a[len].x=x;a[len].y=y;a[len].c=c;a[len].next=last[x];last[x]=len;
len++;k2=len;a[len].x=y;a[len].y=x;a[len].c=0;a[len].next=last[y];last[y]=len;
a[k1].other=k2;a[k2].other=k1;
}
int st,ed,head,tail,list[110],h[110];
bool bt_h() {
head=1;tail=2;list[1]=st;memset(h,0,sizeof(h));h[st]=1;
while(head!=tail) {
int x=list[head];
for(int k=last[x];k;k=a[k].next) {
int y=a[k].y;
if(h[y]==0&&a[k].c>0) {h[y]=h[x]+1;list[tail++]=y;}
}head++;
}if(h[ed]==0)return false;return true;
}
double find_flow(int x,double f) {
if(x==ed)return f;
double s=0,t;
for(int k=last[x];k;k=a[k].next) {
int y=a[k].y;
if(h[y]==h[x]+1&&a[k].c>0&&s<f) {
t=find_flow(y,min(a[k].c,f-s));s+=t;a[k].c-=t;a[a[k].other].c+=t;
}
}if(s==0)h[x]=0;return s;
}
const double esp=1e-8;
int A[110],B[110],map[61][61];
int main() {
int n,m;scanf("%d%d",&m,&n);double sum=0;
for(int i=1;i<=m;i++){scanf("%d",&A[i]);sum+=double(A[i]);}
for(int i=1;i<=n;i++)scanf("%d",&B[i]);
for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)scanf("%d",&map[i][j]);
double l=0.0,r=10000.0,ans,mid;st=n+m+1;ed=st+1;
while(l<=r) {
mid=(l+r)/2.0;len=0;memset(last,0,sizeof(last));
for(int i=1;i<=n;i++)ins(st,i,double(B[i]*mid));
for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)if(map[i][j]==1)ins(i,j+n,999999999);
for(int i=1;i<=m;i++)ins(i+n,ed,double(A[i]));
double s=0;while(bt_h()==true)s+=find_flow(st,999999999);
if(fabs(s-sum)<esp){ans=mid;r=mid-0.00000001;}else l=mid+0.00000001;
}printf("%.6lf\n",ans);
return 0;
}
相關文章
- 人工智慧-星際爭霸2教程人工智慧星際爭霸2
- 星際戰甲 - 指揮官
- 赤潮宇宙戰爭預警!《星際52區》4月24日全平臺公測
- 《星際爭霸II》AI機器人挑戰頂級職業選手,你Pick誰?AI機器人
- 星際爭霸2的死亡,與暴雪止不住的崩塌星際爭霸2
- 2018 AIIDE星際爭霸AI全球挑戰賽結果出爐!中科院季軍,三星拔得頭籌AIIDE
- (最大流,二分圖的多重匹配) Magic Potion
- 「擊敗星際爭霸II職業玩家」的 AlphaStar是在作弊?AST
- BZOJ1927: [Sdoi2010]星際競速(最小費用最大流 最小路徑覆蓋)
- BZOJ-1305 dance跳舞 建圖+最大流+二分判定
- 美軍為打贏戰爭撰寫程式碼,AI演算法成未來戰爭的最強“戰腦”AI演算法
- 從《星際爭霸》的倒下看傳統RTS遊戲沒落的原因遊戲
- 星際穿越+降臨+明日邊緣?星際拓荒重新定義星際探索題材遊戲遊戲
- 歷經10年起伏,《星際爭霸2》怎樣找回最佳狀態?星際爭霸2
- 系列最暢銷 《全面戰爭:三國》首周銷量破百萬
- Filecoin在未來是沒有競爭者的獨角獸丨星際資料
- 戰爭迷霧
- 跨服爽戰火力全開!《吞星》資料片“仙域爭霸”上線
- DeepMind AlphaStar星際爭霸2首秀:Demo很強大,現場比賽竟然輸了AST星際爭霸2
- DeepMind星際爭霸2 AI首秀即將上演,旭東老仙奶一口?星際爭霸2AI
- 全球人才競爭:吸引國際學生的國家戰略比較
- 《星際戰甲》國服上線!回顧它浴火重生的歷程
- 打好人工智慧戰爭未來智慧化戰爭之作戰構想人工智慧
- SpaceX星際移民計劃:馬斯克心中的星際飛船明年完工馬斯克
- (二分圖+最大流)洛谷P2774方格取數問題
- 10:1,AlphaStar橫空出世,碾壓星際爭霸2人類職業玩家 TLO 和 MaNaAST星際爭霸2
- 史上最完整的《指環王》魔戒戰爭大事記(編年體長文)
- 戰爭與回憶
- 自走棋爭奪戰
- 任天堂戰爭系列雜談下:戰爭的繼承者們繼承
- 行業人士談悄然成功的《星際戰甲》所帶來的啟示行業
- win10系統玩星際戰甲卡頓掉幀如何解決Win10
- 彭博社爆料索尼欲收購《星際戰甲》母公司樂遊科技
- 蝸牛星際改造計劃
- 史上最勵志的遊戲公司,在戰爭中誕生的3A大作遊戲
- 《星際之門》系列之二:星門到底啥玩意兒?
- 《星際戰甲》國服獲得版號 創夢天地負責運營工作
- 案例推薦《微博:隨時隨地迎戰大流量》