题解:

按照时间枚举一下那些点有水

然后用物理方案来计算

代码:

#include<bits/stdc++.h>
const int N=,M=;
int n,m,x,y,z,i,A,B,T,g[N],v[M],w[M],nxt[M],ed;
struct P
{
int x,y,h,v;
}a[N];
int getid(int x)
{
for (int i=;i<=n;i++)
if (a[i].x==x)return i;
}
void add(int x,int y,int z)
{
v[++ed]=y;w[ed]=z;nxt[ed]=g[x];g[x]=ed;
v[++ed]=x;w[ed]=z;nxt[ed]=g[y];g[y]=ed;
}
int main()
{
scanf("%d",&n);
for (int i=;i<=n;i++)
{
scanf("%d%d%d",&a[i].x,&a[i].y,&a[i].h);
a[i].h+=a[i].y;
a[i].v=i==;
}
scanf("%d",&m);
while (m--)
{
scanf("%d%d%d",&x,&y,&z);
add(getid(x-),getid(x+z),y);
}
scanf("%d%d",&A,&B);
while ()
{
for (x=;x;)
for (x=,i=;i<=n;i++)
if (a[i].v)
for (int j=g[i];j;j=nxt[j])
if (a[i].h<=w[j]&&!a[v[j]].v)a[v[j]].v=x=;
for (m=,i=;i<=n;i++)
if (a[i].v&&a[i].h>m)m=a[i].h;
if (a[A].v&&m==B)
{
printf("%d",T);
return ;
}
for (int i=;i<=n;i++)
if (a[i].v&&a[i].y==a[i].h&&a[i].y==m)
{
puts("-1");
return ;
}
for (int i=;i<=n;i++)
if (a[i].v&&a[i].h==m)a[i].h--,T++;
}
}

bzoj1092的更多相关文章

  1. BZOJ1092 : [SCOI2003]蜘蛛难题

    按时间一步一步模拟. 每一次,首先将所有没有水但是可以被灌到水的管子标记为有水,然后求出有水的管子里水面高度的最小值. 如果$a$号管有水且最小值为$b$,那么说明此时蜘蛛碰到了水. 如果有管子溢出且 ...

  2. 【SCOI2003】【BZOJ1092】蜘蛛难题

    有一堆管道,还有一个蜘蛛Willy,如下图所示.所有管道的是上端开口,下端封底,直径都是1cm,连接两个管道的连接容量无限,但体积可以忽略不计. 在第一个管道上方有一个水源,从中有水不断往下流,速度为 ...

  3. BZOJ第1页养成计划

    嗯,用这篇博客当一个目录,方便自己和学弟(妹?)们查阅.不定期更新. BZOJ1000   BZOJ1001   BZOJ1002   BZOJ1003   BZOJ1004   BZOJ1005   ...

随机推荐

  1. HTTP If-Modified-Since引发的浏览器缓存汇总

    在看Spring中HttpServlet的Service方法时,对于GET请求,代码逻辑如下: if (method.equals(METHOD_GET)) { long lastModified = ...

  2. C#对象的new和不new的区别

    new:为对象分配空间. 首先,直接声明一个变量:byte[] test;只是有了一个变量名字,而它是没有实际空间的,需要分配空间: 分配空间的方法: 1.使用new,byte[] test = ne ...

  3. Python3基础 list 使用for循环 删除列表中的重复项

             Python : 3.7.0          OS : Ubuntu 18.04.1 LTS         IDE : PyCharm 2018.2.4       Conda ...

  4. 项目管理PV、EV、AC、BAC、EAC、ETC等计算

    PV[Planned Value]计划值:应该完成多少工作?[96版的BCWS] EV[Earned Value]挣值:完成了多少预算工作?[96版的BCWP] AC[Actual Cost]实际成本 ...

  5. 星系炸弹|2015年蓝桥杯B组题解析第二题-fishers

    星系炸弹 在X星系的广袤空间中漂浮着许多X星人造"炸弹",用来作为宇宙中的路标. 每个炸弹都可以设定多少天之后爆炸. 比如:阿尔法炸弹2015年1月1日放置,定时为15天,则它在2 ...

  6. system.data.sqlite的源代码下载

    帮助文档 http://system.data.sqlite.org/index.html/doc/trunk/www/index.wiki 历史版本https://system.data.sqlit ...

  7. ubuntu12 root账户自动登录

    Ubuntu为了系统安全,root帐号的密码是随机的,如果临时需要提升至root权限以执行一些命令,需要使用sudo命令.产线上有几台使用Ubuntu的机器,因为使用者不固定,并且执行程序时需要使 用 ...

  8. 【异常记录(九)】 System.Threading.ThreadAbortException: 正在中止线程

    报错如下: System.Threading.ThreadAbortException: Thread was being aborted. at System.Threading.Thread.Ab ...

  9. 02_Kafka单节点实践

    1.实践场景 开始前的准备条件: 1) 确认各个节点的jdk版本,将jdk升级到和kafka配套的版本(解压既完成安装,修改/etc/profile下的JAVA_HOME,source /etc/pr ...

  10. 04_Flume多节点load_balance实践

    1.负载均衡场景 1)初始:上游Agent通过round_robin selector, 将event轮流发送给下游Collecotor1, Collector2 2)故障: 关闭Collector1 ...