【LOJ】#2184. 「SDOI2015」星际战争

题解

直接二分然后建图跑网络流看看是否合法即可

就是源点向每个激光武器连一条二分到的时间×激光武器每秒攻击值的边
每个激光武器向能攻击的装甲连一条边
每个装甲向汇点连一条装甲值的边

代码

#include <bits/stdc++.h>
#define fi first
#define se second
#define pii pair<int,int>
#define pdi pair<db,int>
#define mp make_pair
#define pb push_back
#define enter putchar('\n')
#define space putchar(' ')
#define eps 1e-8
#define mo 974711
#define MAXN 30005
//#define ivorysi
using namespace std;
typedef long long int64;
typedef double db;
template<class T>
void read(T &res) {res = 0;char c = getchar();T f = 1;while(c < '0' || c > '9') {if(c == '-') f = -1;c = getchar();}while(c >= '0' && c <= '9') {res = res * 10 + c - '0';c = getchar();}res *= f;
}
template<class T>
void out(T x) {if(x < 0) {x = -x;putchar('-');}if(x >= 10) {out(x / 10);}putchar('0' + x % 10);
}
int N,M;
int A[55],B[55],g[55][55];
struct node {int to,next;db cap;
}E[1000005];
int sumE,head[205],cur[205],S,T,lev[205];
db all = 0;
void add(int u,int v,db c) {E[++sumE].to = v;E[sumE].cap = c;E[sumE].next = head[u];head[u] = sumE;
}
void addtwo(int u,int v,db c) {add(u,v,c);add(v,u,0);
}
void Init() {read(N);read(M);for(int i = 1 ; i <= N ; ++i) {read(A[i]);all += A[i];}for(int i = 1 ; i <= M ; ++i) read(B[i]);for(int i = 1 ; i <= M ; ++i) {for(int j = 1 ; j <= N ; ++j) {read(g[i][j]);}}
}
bool BFS() {static int que[205],ql,qr;sumE = 0;for(int i = S ; i <= T ; ++i) {cur[i] = head[i];lev[i] = -1;}que[ql = qr = 1] = S;lev[S] = 0;while(ql <= qr) {int u = que[ql++];for(int i = head[u] ; i ; i = E[i].next) {int v = E[i].to;if(E[i].cap > 0 && lev[v] == -1) {lev[v] = lev[u] + 1;que[++qr] = v;if(v == T) return true;}}}return false;
}
db dfs(int u,db aug) {if(u == T) return aug;db flow = 0;for(int &i = cur[u] ; i ; i = E[i].next) {if(E[i].cap > 0) {int e = i,v = E[i].to;if(lev[v] > lev[u]) {db t = dfs(v,min(E[e].cap,aug - flow));flow += t;E[e].cap -= t;E[e ^ 1].cap += t;if(flow == aug) break;}}}if(flow != aug) lev[u] = -1;return flow;
}
bool check(db mid) {sumE = 1;memset(head,0,sizeof(head));S = 1,T = 1 + M + N + 1;for(int i = 1 ; i <= M ; ++i) {addtwo(S,S + i,mid * B[i]);}for(int i = 1 ; i <= N ; ++i) {addtwo(1 + M + i,T,A[i]);}for(int i = 1 ; i <= M ; ++i) {for(int j = 1 ; j <= N ; ++j) {if(g[i][j]) addtwo(1 + i,1 + M + j,1000000000);}}db res = 0;while(BFS()) {res += dfs(S,1000000000);}if(res < all) return false;return true;
}
void Solve() {db L = 0,R = 100000 * N;int cnt = 60;while(cnt--) {db mid = (L + R) / 2;if(check(mid)) R = mid;else L = mid;}printf("%.3lf\n",L);
}
int main() {
#ifdef ivorysifreopen("f1.in","r",stdin);
#endifInit();Solve();
}

转载于:https://www.cnblogs.com/ivorysi/p/10143057.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/250000.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

表达式符号

Thymeleaf对于变量的操作主要有$*#三种方式&#xff1a; 变量表达式&#xff1a; ${…}&#xff0c;是获取容器上下文变量的值.选择变量表达式&#xff1a; *{…}&#xff0c;获取指定的对象中的变量值。如果是单独的对象&#xff0c;则等价于${}。消息表达式&#xff1a; #{……

Java学习的快速入门:10行代码学JQuery

生活在快速发展时代的我们&#xff0c;如果不提速可能稍不留神就被时代淘汰了。快节奏的时代成就了快餐&#xff0c;亦成就了速成教育。尤其是身处互联网行业的我们&#xff0c;更新换代的速度更是迅速&#xff0c;快速掌握一门技术已经成为潮流趋势。怎样才能快速入门学习java…

项目管理

项目先后衔接的各个阶段的全体被称为项目管理流程。项目管理流程对于一个项目能否高效的执行起到事半功倍的效果。接下来我会利用36张的ppt&#xff08;当然了这里我只用部分图片展示要不然就太多图片了&#xff09;&#xff0c;介绍项目管理的整体流程。 1.项目管理的五大过程…

docker——三剑客之Docker Machine

Docker Machine是Docker官方三剑客项目之一&#xff0c;负责使用Docker的第一步&#xff0c;在多种平台上快速安装Docker环境。它支持多种平台&#xff0c;让用户在很短时间内搭建一套Docker主机集群。Machine项目是Docker官方的开源项目&#xff0c;负责实现对Docker主机本身进…

egret:什么是脏矩形

脏矩形是2D图形性能优化一个重要的概念。Egret2.5开始脏矩形完全可以由引擎自动计算&#xff0c;即大名鼎鼎的"自动脏矩形"。 简单说脏矩形&#xff0c;就是画面刷新时&#xff0c;产生变化而需要重绘的舞台局部区域。 什么叫脏&#xff0c;即什么情况下会弄脏&#…

软件项目管理(一)

首先软件项目管理&#xff0c;什么是项目&#xff1f;什么是软件项目&#xff1f; 项目是唯一的&#xff0c;临时的&#xff0c;即在一定的时间内完成。 具体定义&#xff1a;项目是为了创造一个唯一的产品或提供一个唯一的服务而进行的临时性的努力。 项目的特征&#xff1a; …

strace参数

strace参数 strace参数 -c 统计每一系统调用的所执行的时间,次数和出错的次数等. -d 输出strace关于标准错误的调试信息. -f 跟踪由fork调用所产生的子进程. -ff 如果提供-o filename,则所有进程的跟踪结果输出到相应的filename.pid中,pid是各进程的进程号. -F 尝试跟踪vfork调…

软件项目管理(二)

根据上次的路线图 从项目初始开始&#xff1a;包括项目确立和生存期 项目确立分成 项目立项、项目招投标、项目授权 项目立项&#xff1a;确定项目的目标、时间、资源、资金&#xff0c;关键在于得到项目发起人的认可 一个软件项目的立项开始于软件项目的启动&#xff0c;只…

centos6.5和centos7.5统一字符集为zh_CN.UTF-8解决系统和MySQL数据库乱码问题

linux的服务器需要做的操作 centos6.5下&#xff1a; 修改默认字符集为 zh_CN.UTF-8&#xff0c;如果没有中文语言包可能需要安装中文语言包支持 [rootmeinv01 ~]# yum groupinstall chinese-support [rootmeinv01 ~]# cat /etc/sysconfig/i18n #<修改此配置文件为如下 L…

软件项目管理(三)

上次讲完了项目初始部分&#xff0c;包括立项、招投标、授权 在进入第二部分&#xff0c;项目计划 前我们要先了解软件的需求以及任务的分解 软件需求管理 软件需求定义&#xff1a;用户对软件功能和性能的要求 软件需求管理过程&#xff1a;需求获取、需求分析、需求规格…

Winform-图片上传

1.界面上拖个.pictureBox(pictureBox1) //上传点击按钮 private void button1_Click(object sender, EventArgs e) { OpenFileDialog fileDialog new OpenFileDialog(); DialogResult result fileDialog.ShowDialog(); if (result DialogResult.OK) { this.pictureBox1.Imag…

moment.js 快捷查询

格式化日期 当前时间&#xff1a;moment().format(YYYY-MM-DD HH:mm:ss); //2014-09-24 23:36:09 今天是星期几&#xff1a;moment().format(d); //3 转换当前时间的Unix时间戳&#xff1a;moment().format(X); 相对时间 20120901相对当前日期是2年前moment("20120901&quo…

My97 DatePicker获取自定义日期的前一天

1.控件&#xff0c;获取第一个input中的时间&#xff0c;再将这个时间的前一天赋值给第二个input <input type"text" class"form-control input-sm" id"recordTime" style"width:145px" οnclick"WdatePicker({onpicked:chang…

Underscore.js 源码学习笔记(下)

上接 Underscore.js 源码学习笔记&#xff08;上&#xff09; 756 行开始 函数部分。 var executeBound function(sourceFunc, boundFunc, context, callingContext, args) {if (!(callingContext instanceof boundFunc)) return sourceFunc.apply(context, args);var self …

软件项目管理(四)

上一篇介绍了软件项目的需求分析和任务分解&#xff0c;即软件项目的范围计划&#xff0c;那么对于一个软件项目来说&#xff0c;我们还需要知道它需要多少时间多少成本&#xff0c;如何得到这些数据就是这次要解决的问题&#xff0c;即项目的成本计划 在项目未完成之前谁也不…

js中的时间与毫秒数互相转换

【1】js毫秒时间转换成日期时间var oldTime (new Date("2012/12/25 20:11:11")).getTime(); //得到毫秒数 //不是上面格式的时间需要转换//starttime 2012-12-25 20:17:24;starttime starttime.replace(new RegExp("-","gm"),"/");…

Spring Cloud Sleuth 中id的使用

Spring Cloud Sleuth采用的是Google的开源项目Dapper的专业术语。 Span&#xff1a;基本工作单元&#xff0c;发送一个远程调度任务 就会产生一个Span&#xff0c;Span是一个64位ID唯一标识的&#xff0c;Trace是用另一个64位ID唯一标识的&#xff0c;Span还有其他数据信息&…

软件项目管理(五)

在get到成本计划后&#xff0c;我们便要着手开始对项目的进度进行计划&#xff0c;即这次的核心计划之一进度计划。 进度计划的重要性&#xff1a;按时完成项目是项目经理最大的挑战之一&#xff0c;时间是项目规划中灵活性最小的因素&#xff0c;进度问题是项目冲突的主要原因…

BZOJ2301: [HAOI2011]Problem b(莫比乌斯反演)

Description 对于给出的n个询问&#xff0c;每次求有多少个数对(x,y)&#xff0c;满足a≤x≤b&#xff0c;c≤y≤d&#xff0c;且gcd(x,y) k&#xff0c;gcd(x,y)函数为x和y的最大公约数。Input 第一行一个整数n&#xff0c;接下来n行每行五个整数&#xff0c;分别表示a、b、c…

Js正则表达式数字或者带小数点的数字

function chk() {var patrn /^\d(\.\d)?$/;var result true;$("input[typetext]").each(function () {if (!patrn.exec(this.value)) {alert("请输入正确的数字&#xff01;");result false;}})return result;}转载于:https://www.cnblogs.com/smzd/p/…