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 题解 这道题挺棵的-- 二分答案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…
Description 3333年,在银河系的某星球上,X军团和Y军团正在激烈 地作战.在战斗的某一阶段,Y军团一共派遣了N个巨型机器人进攻X军团的阵地,其中第i个巨型机器人的装甲值为Ai.当一个巨型机器人的装甲值减少到0或 者以下时,这个巨型机器人就被摧毁了.X军团有M个激光武器,其中第i个激光武器每秒可以削减一个巨型机器人Bi的装甲值.激光武器的攻击是连续的.这种 激光武器非常奇怪,一个激光武器只能攻击一些特定的敌人.Y军团看到自己的巨型机器人被X军团一个一个消灭,他们急需下达更多的指令.为…
#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…
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或者以下时,这个巨型…
题意 \(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\) ) 分析 我们…
3993: [SDOI2015]星际战争 题目:传送门 题解: 洛谷AC了,但是因为bzoj的spj有问题所以暂时没A 一道老题目了,二分时间然后网络流判断. 每次st-->武器连时间*攻击力 武器-->机器人 流量无限 机器人-->ed 流量为血量值 精度有点gou... 代码: #include<cstdio> #include<cstring> #include<cstdlib> #include<cmath> #include<…
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…
BZOJ_3993_[SDOI2015]星际战争_二分+网络流 Description 3333年,在银河系的某星球上,X军团和Y军团正在激烈地作战.在战斗的某一阶段,Y军团一共派遣了N个巨型机器人进攻X军团的阵地,其中第i个巨型机器人的装甲值为Ai.当一个巨型机器人的装甲值减少到0或者以下时,这个巨型机器人就被摧毁了.X军团有M个激光武器,其中第i个激光武器每秒可以削减一个巨型机器人Bi的装甲值.激光武器的攻击是连续的.这种激光武器非常奇怪,一个激光武器只能攻击一些特定的敌人.Y军团看到自己的…
[BZOJ3993][SDOI2015]星际战争 Description 3333年,在银河系的某星球上,X军团和Y军团正在激烈地作战.在战斗的某一阶段,Y军团一共派遣了N个巨型机器人进攻X军团的阵地,其中第i个巨型机器人的装甲值为Ai.当一个巨型机器人的装甲值减少到0或者以下时,这个巨型机器人就被摧毁了.X军团有M个激光武器,其中第i个激光武器每秒可以削减一个巨型机器人Bi的装甲值.激光武器的攻击是连续的.这种激光武器非常奇怪,一个激光武器只能攻击一些特定的敌人.Y军团看到自己的巨型机器人被X…
题目:洛谷P3324 [SDOI2015]星际战争 思路: 类似<导弹防御塔>,因为题目保证有解,花费时间小于最终答案时一定无法消灭所有敌人,只要花费时间大于等于最终答案都可以消灭所有敌人,答案满足单调性,考虑二分答案. 二分答案后,转化为判定性问题.当总时间固定,每件武器的总伤害量就确定了. 于是可以按网络流建模:把武器和敌人分成两部分,从源点s向武器连边,容量为该武器可以输出的总伤害量(当前二分到的时间time*该武器的dps):每件武器向可以它攻击到的敌人连边,容量为inf:每个敌人向汇…
正解:网络流+二分 解题报告: 传送门$QwQ$ 其实我第一反应是费用流来着,,,但是仔细想了下发现我不会实现各个武器之间独立同时?而且攻击是连续的答案可能是小数嘛$QwQ$. 所以显然不是递推就二分呗$QwQ$.然后依然是因为小数的约束,所以最后选择的二分$QwQ$ $umm$然后就傻逼题了呗? $check$的话直接武器建一排点机器人建一排点,$S$和武器$i$连$B_{i}\cdot time$,机器人$j$和$T$连$A_{i}$,然后武器和能攻击的机器人之间连$inf$,欧克做完辣!…
水题啦 网络流+二分 误差才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) https://www.lydsy.com/JudgeOnline/problem.php?id=3993 (luogu) https://www.luogu.org/problemnew/show/P3324 网络流从最水的开始做... 题解: 二分答案ans, 然后可以得到每个攻击者在ans时间内最多产生的总伤害,从起点往攻击者连边容量为此值,从每个攻击者往能攻击的防御者连边容量为\(+\inf\), 从每个防御者往终点连边边权为其装甲值,求…
题目 3333年,在银河系的某星球上,X军团和Y军团正在激烈地作战.在战斗的某一阶段,Y军团一共派遣了N个巨型机器人进攻X军团的阵地,其中第i个巨型机器人的装甲值为Ai.当一个巨型机器人的装甲值减少到0或者以下时,这个巨型机器人就被摧毁了.X军团有M个激光武器,其中第i个激光武器每秒可以削减一个巨型机器人Bi的装甲值.激光武器的攻击是连续的.这种激光武器非常奇怪,一个激光武器只能攻击一些特定的敌人.Y军团看到自己的巨型机器人被X军团一个一个消灭,他们急需下达更多的指令.为了这个目标,Y军团需要知…
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军团一个一个消灭,他们急需下达更多的指令. 为了这个目标,…
二分答案...然后最大流验证是否可行... 没了,好水啊QAQ /************************************************************** Problem: 3993 User: rausen Language: C++ Result: Accepted Time:40 ms Memory:1156 kb ****************************************************************/ #inc…
传送门:https://www.luogu.org/problemnew/show/P3324 首先瞅一眼数据范围,发现m, n都很小,所以就可以初步断定这是一道网络流的题. 因为题中说每一个武器只能攻击特定的机器人,所以可以想象成这把武器有一条指向该机器人的边,那流量是多少呢?这是不确定的,因为武器攻击机器人的策略是不知道的.不过有一点可以确定,就是在时间t内,这把武器造成的伤害一定是b[i] * t,如果把武器i和源点连一条边,那么这条边的容量就是b[i] * t. 在考虑每一个机器人的装甲…
\(\color{red}{Link}\) \(\text{Solution:}\) 观察到,如果一个时间\(T\)可以完成任务,则\(T+1\)这个时间也可以完成任务. 于是我们可以二分. 为了避免浮点数,我们可以让时间和血量都乘以\(1000.\)注意攻击力不需要增大,因为时间已经扩大了. 考虑如何网络流建模: 首先,我们把问题转化为\(T\)时间能不能解决.于是,我们可以从源点向激光器连一条容量为攻击力乘以时间的边,每个激光器再向机器人连一条容量无限的边,每一个机器人再向汇点连一条容量为血…
二分+最大流 首先考虑二分答案 然后可以发现对于已知时间,判断是否可以将所有机器人摧毁可以用网络流 建立源点和汇点,源点向每一个激光武器连一条容量为$time*b[i]$的边,表示该激光武器在$time$时间下最多能产生的伤害为$time*b[i]$ 每一个机器人向汇点连一条容量为$a[i]$的边,表示每一个机器人最多能承受的伤害 中间每一个激光武器向其能攻击的机器人连一条容量为$inf$的边 然后跑最大流,若可以跑出$\sum a[i]$,那么该时间可以将所有与机器人摧毁,更新二分边界 1 #…
题目描述 3333年,在银河系的某星球上,X军团和Y军团正在激烈地作战. 在战斗的某一阶段,Y军团一共派遣了N个巨型机器人进攻X军团的阵地,其中第i个巨型机器人的装甲值为Ai.当一个巨型机器人的装甲值减少到0或者以下时,这个巨型机器人就被摧毁了. X军团有M个激光武器,其中第i个激光武器每秒可以削减一个巨型机器人Bi的装甲值.激光武器的攻击是连续的. 这种激光武器非常奇怪,一个激光武器只能攻击一些特定的敌人.Y军团看到自己的巨型机器人被X军团一个一个消灭,他们急需下达更多的指令. 为了这个目标,…
题目链接: 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时…
[BZOJ3993]星际战争(网络流,二分答案) 题面 Description 3333年,在银河系的某星球上,X军团和Y军团正在激烈地作战.在战斗的某一阶段,Y军团一共派遣了N个巨型机器人进攻X军团的阵地,其中第i个巨型机器人的装甲值为Ai.当一个巨型机器人的装甲值减少到0或者以下时,这个巨型机器人就被摧毁了.X军团有M个激光武器,其中第i个激光武器每秒可以削减一个巨型机器人Bi的装甲值.激光武器的攻击是连续的.这种激光武器非常奇怪,一个激光武器只能攻击一些特定的敌人.Y军团看到自己的巨型机器…
题意:各一个地图,两点之间有若干条路,要在节点1和节点n之间行走t次(就是问1到n的路径数至少为t,每一条路径不能有重复),问所有路径里面最长的部分(这个题目特别强调,不是路径长度和,是路径中相邻两点的距离)最小是多少. 网络流+二分. 二分路径最长的一段,根据二分值构图. 构图方法: 如果两点路径长度小于x,则两点之间连接一条边,权值为1(如果已经连接了,权值加1). 最大流既是从1到n不重复的路径条数,判断是否大于规定的t条即可. 注意一下这题是无向图,两个方向的初始流量相等(有向图只有一个…
刚学网络流的我这里有一道非常好的"网络流练手题"------[HNOI2006]超级英雄. 记得很久以前真的有这个节目来着,还是大兵主持的. 其实这是一道匈牙利板子大水题,但对于我们这种刚学网络流的 juruo 碰到什么题不用网络流做就非常的不爽,于是就有了这个 超级英雄 网络流+二分版. 这里直接二分答案,每次将源点和所有的锦囊连边,容量为1;再将锦囊和对应的问题连边,容量为1;最后是将问题和汇点T连边,容量还是1.然后跑一波Dinic,看是否满流,这道"网络流练手题就搞定…
目录 题目链接 题解 代码 题目链接 bzoj 3991: [SDOI2015]寻宝游戏 题解 发现每次答案就是把虚树上的路径*2 接在同一关键点上的点的dfs序是相邻的 那么用set动态维护dfs序列 每次删点加点就好了 代码 #include<set> #include<cstdio> #include<algorithm> #define gc getchar() #define pc putchar #define LL long long inline int…
题目 Blinker最近喜欢上一个奇怪的游戏. 这个游戏在一个 N*M 的棋盘上玩,每个格子有一个数.每次 Blinker 会选择两个相邻 的格子,并使这两个数都加上 1. 现在 Blinker 想知道最少多少次能使棋盘上的数都变成同一个数,如果永远不能变成同 一个数则输出-1. 输入格式 输入的第一行是一个整数T,表示输入数据有T轮游戏组成. 每轮游戏的第一行有两个整数N和M, 分别代表棋盘的行数和列数. 接下来有N行,每行 M个数. 输出格式 对于每个游戏输出最少能使游戏结束的次数,如果永远…
正解:网络流+二分 解题报告: 传送门$QwQ$ 和上一题有点儿像,,,?$QwQ$但是比上一题要有趣很多$QwQ$ 首先把大致思路捋下?依然是.二分出每个奶酪的开始和结束时间,然后check下最大流的流量和$\sum p$的大小.做完了.$over$ 然后详细考虑过程,发现难点就在构图了呗,就,怎么构图能满足题目给定的条件 先列出题目两个和普通网络流不同的点趴$QwQ$: 1)每个奶酪有特定的开始&结束时间 2)同一个时间段一个奶酪只能被一只老鼠吃 $umm$其实第一个条件还是相对来说比较好实…