P3324 [SDOI2015]星际战争】的更多相关文章

题目:洛谷P3324 [SDOI2015]星际战争 思路: 类似<导弹防御塔>,因为题目保证有解,花费时间小于最终答案时一定无法消灭所有敌人,只要花费时间大于等于最终答案都可以消灭所有敌人,答案满足单调性,考虑二分答案. 二分答案后,转化为判定性问题.当总时间固定,每件武器的总伤害量就确定了. 于是可以按网络流建模:把武器和敌人分成两部分,从源点s向武器连边,容量为该武器可以输出的总伤害量(当前二分到的时间time*该武器的dps):每件武器向可以它攻击到的敌人连边,容量为inf:每个敌人向汇…
传送门:https://www.luogu.org/problemnew/show/P3324 首先瞅一眼数据范围,发现m, n都很小,所以就可以初步断定这是一道网络流的题. 因为题中说每一个武器只能攻击特定的机器人,所以可以想象成这把武器有一条指向该机器人的边,那流量是多少呢?这是不确定的,因为武器攻击机器人的策略是不知道的.不过有一点可以确定,就是在时间t内,这把武器造成的伤害一定是b[i] * t,如果把武器i和源点连一条边,那么这条边的容量就是b[i] * t. 在考虑每一个机器人的装甲…
字符串终于告一段落了! 题目链接: (bzoj) https://www.lydsy.com/JudgeOnline/problem.php?id=3993 (luogu) https://www.luogu.org/problemnew/show/P3324 网络流从最水的开始做... 题解: 二分答案ans, 然后可以得到每个攻击者在ans时间内最多产生的总伤害,从起点往攻击者连边容量为此值,从每个攻击者往能攻击的防御者连边容量为\(+\inf\), 从每个防御者往终点连边边权为其装甲值,求…
题目链接: https://www.luogu.org/problemnew/show/P3324 分析: 因为本题的时间点较多,不能枚举,但发现有单调性,于是二分答案,二分使用的时间TTT 每个攻击装置造成的伤害总量已知,为T∗BiT*B_iT∗Bi​,现在有了伤害总量.生命总量,如何判断在TTT时间内,机器人是否被全部打死? 源点S向所有攻击装置连边,流量为T∗BiT*B_iT∗Bi​ 攻击装置向能攻击到的机器人连边,流量为INF 所有机器人向汇点T连边,流量为AiA_iAi​ 验证TTT时…
正解:网络流+二分 解题报告: 传送门$QwQ$ 其实我第一反应是费用流来着,,,但是仔细想了下发现我不会实现各个武器之间独立同时?而且攻击是连续的答案可能是小数嘛$QwQ$. 所以显然不是递推就二分呗$QwQ$.然后依然是因为小数的约束,所以最后选择的二分$QwQ$ $umm$然后就傻逼题了呗? $check$的话直接武器建一排点机器人建一排点,$S$和武器$i$连$B_{i}\cdot time$,机器人$j$和$T$连$A_{i}$,然后武器和能攻击的机器人之间连$inf$,欧克做完辣!…
二分+最大流 首先考虑二分答案 然后可以发现对于已知时间,判断是否可以将所有机器人摧毁可以用网络流 建立源点和汇点,源点向每一个激光武器连一条容量为$time*b[i]$的边,表示该激光武器在$time$时间下最多能产生的伤害为$time*b[i]$ 每一个机器人向汇点连一条容量为$a[i]$的边,表示每一个机器人最多能承受的伤害 中间每一个激光武器向其能攻击的机器人连一条容量为$inf$的边 然后跑最大流,若可以跑出$\sum a[i]$,那么该时间可以将所有与机器人摧毁,更新二分边界 1 #…
3993: [SDOI2015]星际战争 题意:略 R1D2T1考了裸二分答案+二分图最大匹配... #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <cmath> using namespace std; typedef long long ll; const int N=105, M=1e5+5, INF=1e9+5;…
BZOJ_3993_[SDOI2015]星际战争_二分+网络流 Description 3333年,在银河系的某星球上,X军团和Y军团正在激烈地作战.在战斗的某一阶段,Y军团一共派遣了N个巨型机器人进攻X军团的阵地,其中第i个巨型机器人的装甲值为Ai.当一个巨型机器人的装甲值减少到0或者以下时,这个巨型机器人就被摧毁了.X军团有M个激光武器,其中第i个激光武器每秒可以削减一个巨型机器人Bi的装甲值.激光武器的攻击是连续的.这种激光武器非常奇怪,一个激光武器只能攻击一些特定的敌人.Y军团看到自己的…
http://www.lydsy.com/JudgeOnline/problem.php?id=3993 二分答案 源点向武器连 mid*攻击力的边 机器人向汇点连 防御力 的边 武器i能攻击机器人j,i向j连 >=j防御力的边 判断最大流是否=防御力 将时间.防御力 * 10000,避免浮点数运算 #include<queue> #include<cstdio> #include<cstring> #include<iostream> using n…
3993: [SDOI2015]星际战争 Time Limit: 10 Sec  Memory Limit: 128 MBSec  Special JudgeSubmit: 1244  Solved: 560[Submit][Status][Discuss] Description 3333年,在银河系的某星球上,X军团和Y军团正在激烈地作战.在战斗的某一阶段,Y军团一共派遣了N个巨型机器人进攻X军团的阵地,其中第i个巨型机器人的装甲值为Ai.当一个巨型机器人的装甲值减少到0或者以下时,这个巨型…
[BZOJ3993][SDOI2015]星际战争 Description 3333年,在银河系的某星球上,X军团和Y军团正在激烈地作战.在战斗的某一阶段,Y军团一共派遣了N个巨型机器人进攻X军团的阵地,其中第i个巨型机器人的装甲值为Ai.当一个巨型机器人的装甲值减少到0或者以下时,这个巨型机器人就被摧毁了.X军团有M个激光武器,其中第i个激光武器每秒可以削减一个巨型机器人Bi的装甲值.激光武器的攻击是连续的.这种激光武器非常奇怪,一个激光武器只能攻击一些特定的敌人.Y军团看到自己的巨型机器人被X…
3993: [SDOI2015]星际战争 题目:传送门 题解: 洛谷AC了,但是因为bzoj的spj有问题所以暂时没A 一道老题目了,二分时间然后网络流判断. 每次st-->武器连时间*攻击力 武器-->机器人 流量无限 机器人-->ed 流量为血量值 精度有点gou... 代码: #include<cstdio> #include<cstring> #include<cstdlib> #include<cmath> #include<…
题目描述 3333年,在银河系的某星球上,X军团和Y军团正在激烈地作战. 在战斗的某一阶段,Y军团一共派遣了N个巨型机器人进攻X军团的阵地,其中第i个巨型机器人的装甲值为Ai.当一个巨型机器人的装甲值减少到0或者以下时,这个巨型机器人就被摧毁了. X军团有M个激光武器,其中第i个激光武器每秒可以削减一个巨型机器人Bi的装甲值.激光武器的攻击是连续的. 这种激光武器非常奇怪,一个激光武器只能攻击一些特定的敌人.Y军团看到自己的巨型机器人被X军团一个一个消灭,他们急需下达更多的指令. 为了这个目标,…
题意 \(m\)个人\(n\)个物品,第\(i\)个物品生命值为\(A_i\),第\(i\)个人每秒可以减少一个物品\(B_i\)的生命值,给出一个\(m \times n\)的矩阵,如果\(i\)行\(j\)列为\(1\),则表示第\(i\)个人可以攻击第\(j\)个物品,否则不能攻击,问至少需要多少秒,能干掉所有物品.一个物品被干掉当且仅当生命值小于等于\(0\).(\(n, m \le 50, 1 \le A_i \le 10^5, 1 \le B_i \le 10^3\) ) 分析 我们…
#include<cstdio> #include<iostream> #include<cstdlib> #include<cstring> #define N 1008 #define M 1000009 #define eps 0.00001 using namespace std; ,tot,head[N],next[M],u[M],d[N],q[N]; double v[M],sum; void jia1(int a1,int a2,double…
二分答案...然后最大流验证是否可行... 没了,好水啊QAQ /************************************************************** Problem: 3993 User: rausen Language: C++ Result: Accepted Time:40 ms Memory:1156 kb ****************************************************************/ #inc…
Description 3333年,在银河系的某星球上,X军团和Y军团正在激烈 地作战.在战斗的某一阶段,Y军团一共派遣了N个巨型机器人进攻X军团的阵地,其中第i个巨型机器人的装甲值为Ai.当一个巨型机器人的装甲值减少到0或 者以下时,这个巨型机器人就被摧毁了.X军团有M个激光武器,其中第i个激光武器每秒可以削减一个巨型机器人Bi的装甲值.激光武器的攻击是连续的.这种 激光武器非常奇怪,一个激光武器只能攻击一些特定的敌人.Y军团看到自己的巨型机器人被X军团一个一个消灭,他们急需下达更多的指令.为…
水题啦 网络流+二分 误差才10^-3,乱搞直接开longlong暴力每个都乘1000,输出时除一下就好了 # include <bits/stdc++.h> # define IL inline # define RG register # define Fill(a, b) memset(a, b, sizeof(a)) # define Copy(a, b) memcpy(a, b, sizeof(a)) using namespace std; typedef long long ll…
链接 BZOJ 3993 题解 这道题挺棵的-- 二分答案t,然后源点向武器连t * b[i], 武器向能攻击的敌人连1, 敌人向汇点连a[i],如果最大流等于所有敌人的a[i]之和则可行. #include <cstdio> #include <cmath> #include <cstring> #include <algorithm> #include <queue> using namespace std; typedef long lon…
Brief Description 3333年,在银河系的某星球上,X军团和Y军团正在激烈地作战.在战斗的某一阶段,Y军团一共派遣了N个巨型机器人进攻X军团的阵地,其中第i个巨型机器人的装甲值为Ai.当一个巨型机器人的装甲值减少到0或者以下时,这个巨型机器人就被摧毁了.X军团有M个激光武器,其中第i个激光武器每秒可以削减一个巨型机器人Bi的装甲值.激光武器的攻击是连续的.这种激光武器非常奇怪,一个激光武器只能攻击一些特定的敌人.Y军团看到自己的巨型机器人被X军团一个一个消灭,他们急需下达更多的指…
二分Time,S->炮[i]:Time*b[i] 炮[i]->机器人[i]:INF 机器人[i]->T:a[i]. 判断是否满流. #include<cstdio> #include<cstring> #include<cmath> #include<queue> using namespace std; #define N 51 #define EPS 0.000001 #define INF 2147483647.0 typedef d…
题目 3333年,在银河系的某星球上,X军团和Y军团正在激烈地作战.在战斗的某一阶段,Y军团一共派遣了N个巨型机器人进攻X军团的阵地,其中第i个巨型机器人的装甲值为Ai.当一个巨型机器人的装甲值减少到0或者以下时,这个巨型机器人就被摧毁了.X军团有M个激光武器,其中第i个激光武器每秒可以削减一个巨型机器人Bi的装甲值.激光武器的攻击是连续的.这种激光武器非常奇怪,一个激光武器只能攻击一些特定的敌人.Y军团看到自己的巨型机器人被X军团一个一个消灭,他们急需下达更多的指令.为了这个目标,Y军团需要知…
题目描述 3333年,在银河系的某星球上,X军团和Y军团正在激烈地作战. 在战斗的某一阶段,Y军团一共派遣了N个巨型机器人进攻X军团的阵地,其中第i个巨型机器人的装甲值为Ai.当一个巨型机器人的装甲值减少到0或者以下时,这个巨型机器人就被摧毁了. X军团有M个激光武器,其中第i个激光武器每秒可以削减一个巨型机器人Bi的装甲值.激光武器的攻击是连续的. 这种激光武器非常奇怪,一个激光武器只能攻击一些特定的敌人.Y军团看到自己的巨型机器人被X军团一个一个消灭,他们急需下达更多的指令. 为了这个目标,…
\(\color{red}{Link}\) \(\text{Solution:}\) 观察到,如果一个时间\(T\)可以完成任务,则\(T+1\)这个时间也可以完成任务. 于是我们可以二分. 为了避免浮点数,我们可以让时间和血量都乘以\(1000.\)注意攻击力不需要增大,因为时间已经扩大了. 考虑如何网络流建模: 首先,我们把问题转化为\(T\)时间能不能解决.于是,我们可以从源点向激光器连一条容量为攻击力乘以时间的边,每个激光器再向机器人连一条容量无限的边,每一个机器人再向汇点连一条容量为血…
[BZOJ3993]星际战争(网络流,二分答案) 题面 Description 3333年,在银河系的某星球上,X军团和Y军团正在激烈地作战.在战斗的某一阶段,Y军团一共派遣了N个巨型机器人进攻X军团的阵地,其中第i个巨型机器人的装甲值为Ai.当一个巨型机器人的装甲值减少到0或者以下时,这个巨型机器人就被摧毁了.X军团有M个激光武器,其中第i个激光武器每秒可以削减一个巨型机器人Bi的装甲值.激光武器的攻击是连续的.这种激光武器非常奇怪,一个激光武器只能攻击一些特定的敌人.Y军团看到自己的巨型机器…
题解 直接二分然后建图跑网络流看看是否合法即可 就是源点向每个激光武器连一条二分到的时间×激光武器每秒攻击值的边 每个激光武器向能攻击的装甲连一条边 每个装甲向汇点连一条装甲值的边 代码 #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…
题面 传送门 思路 首先,有一个非常明显的模型: 将激光武器放到一边,机器人放到另一边,从每一个激光武器向它可以攻击的机器人连边,形成一个二分图 建立附加源点$ss$和附加汇点$tt$,$ss$连所有激光武器,$tt$连所有机器人,跑网络流算法 但是,问题在于这道题"武器的攻击是连续的",也就是解是实数解 这使得我一开始想的费用流算法失效了 时间为实数,就说明我们不能把时间当成费用来看,那么该怎么办呢? 我们考虑把实数时间从费用的位置转到流量的位置去 但是流量在一开始就是确定的,最大流…
http://www.lydsy.com/JudgeOnline/problem.php?id=3993 调了好长时间啊 这道题设时间为time,那么对于m个武器从S向这m个点连容量为time*Bi的边,代表能造成的总伤害. 对于每个武器向每个能打到的机器人连容量为无穷的边. 对每个机器人向T连自己的装甲量Ai为容量的边. 又因为每个机器人的装甲必须被打完,所以设机器人到T的边的下界为Ai(上下界相等). 从T向S连容量无穷大的边,构成无源汇上下界网络流,所以构造附加网络然后二分时间time就可…
首先我们可以二分答案. 假设当前二分出来的答案是 $Ans$ ,那么我们考虑用网络流检验: 设武器为 $X$,第 $i$ 个武器的攻击力为 $B_i$: 设机器人为 $Y$,第 $i$ 个机器人的装甲为 $A_i$: 设 $Map[i][j]$ 表示第 $i$ 个机器人是否能攻击第 $j$ 号机器人. 设源为 $S$,汇为 $T$,现在考虑连边: $S\rightarrow X_i$,容量为 $Ans * B_i$: $Y_i\rightarrow T$,容量为 $A_i$: $\forall…
Time Limit: 1000 ms   Memory Limit: 128 MB Description  3333年,在银河系的某星球上,X军团和Y军团正在激烈地作战.在战斗的某一阶段,Y军团一共派遣了N个巨型机器人进攻X军团的阵地,其中第i个巨型机器人的装甲值为Ai.当一个巨型机器人的装甲值减少到0或者以下时,这个巨型机器人就被摧毁了.X军团有M个激光武器,其中第i个激光武器每秒可以削减一个巨型机器人Bi的装甲值.激光武器的攻击是连续的.这种激光武器非常奇怪,一个激光武器只能攻击一些特定…