uva 10683 Fill
https://vjudge.net/problem/UVA-10603
题意:
倒水问题,输出最少的倒水量和目标水量
如果无解,目标水量就是尽可能接近给定点的目标水量,但不得大于给定的目标水量
推推公式,不用分类讨论~\(≧▽≦)/~啦啦啦
#include<cstdio>
#include<cstring>
#include<queue>
#define N 201
using namespace std;
struct node
{
int v[],dis;
bool operator < (node p) const
{
return dis>p.dis;
}
}now,nxt;
int v[N][N],cap[],ans[N];
void up()
{
int d;
for(int i=;i<;i++)
{
d=now.v[i];
if(ans[d]< || now.dis<ans[d]) ans[d]=now.dis;
}
}
void solve(int a,int b,int c,int d)
{
cap[]=a; cap[]=b; cap[]=c;
memset(v,,sizeof(v));
memset(ans,-,sizeof(ans));
priority_queue<node>q;
node s;
s.dis=; s.v[]=; s.v[]=; s.v[]=c;
q.push(s);
v[][]=;
while(!q.empty())
{
now=q.top(); q.pop();
up();
if(ans[d]>=) break;
for(int i=;i<;i++)
for(int j=;j<;j++)
if(i!=j)
{
if(!now.v[i] || now.v[j]==cap[j]) continue;//
int amount=min(cap[j],now.v[i]+now.v[j])-now.v[j];
nxt=now;
nxt.dis+=amount;
nxt.v[i]-=amount;
nxt.v[j]+=amount;
if(!v[nxt.v[]][nxt.v[]]) { v[nxt.v[]][nxt.v[]]=true; q.push(nxt); }
}
}
while(d>=)
{
if(ans[d]>=) { printf("%d %d\n",ans[d],d); return;}
d--;
}
}
int main()
{
int T,a,b,c,d;
scanf("%d",&T);
while(T--)
{
scanf("%d%d%d%d",&a,&b,&c,&d);
solve(a,b,c,d);
}
}
uva 10683 Fill的更多相关文章
- uva 11520 - Fill the Square
http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&p ...
- UVA 10603 Fill(正确代码尽管非常搓,网上很多代码都不能AC)
题目链接:option=com_onlinejudge&Itemid=8&page=show_problem&problem=1544">click here~ ...
- Uva 11520 - Fill the Square 贪心 难度: 0
题目 https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&a ...
- UVA 10603 - Fill BFS~
http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&c ...
- UVa 10603 Fill [暴力枚举、路径搜索]
10603 Fill There are three jugs with a volume of a, b and c liters. (a, b, and c are positive intege ...
- UVa 11520 Fill the Square 填充正方形
在一个 n * n 网格中填了一些大写字母,你的任务是把剩下的格子中也填满大写字母,使得任意两个相邻格子(即有公共边的格子)中的字母不同.如果有多重填法,则要求按照从上到下,从左到右的顺序把所有格子连 ...
- 【路径寻找问题】UVa 10603 - Fill
如家大神书上的例题.第一次接触也是按代码敲得.敲的过程感觉很直观.但自己写估计会写的乱七八糟.以后不能砍得难就不愿意做这种题.否则只能做一些水题了.(PS:48) 紫书 #include<ios ...
- UVA 10603 Fill
题意: 题目的意思是倒水,给出的四个数据是第一个水杯,第二个水杯,第三个水杯,和目标水量.一开始只有第三个水杯是满的,剩下的水杯是空的.倒水的时候只能把倒水出来的这个杯子倒空,或是倒水进去的杯子倒满. ...
- UVa 10603 Fill (暴力BFS+优先队列)
题意:给定4个数,a,b,c,d,分别代表空杯子容积为a,b,一个盛满水的杯子容积为c,让你不断倒水,找一个dd,是不是存在某个时刻, 某个杯子里的水dd,和d相同,或者无限接近.让求最少的倒水量和d ...
随机推荐
- 文件操作---基于python
# coding:utf-8from time import sleepimport sysreload(sys)sys.setdefaultencoding("utf8")f=o ...
- php 连接redis查询数据
class Layoutdemo{ function index(){ $db = new Db(); $id=390; $layout_json = array(); if($info = $db- ...
- 阿里云搭建bind服务,外网ip不能用来解析问题解决
options { listen-on port 53 { any; }; //端口开放any listen-on-v6 port 53 { ::1; }; directory "/var/ ...
- Thunder团队第三周 - Scrum会议7
Scrum会议7 小组名称:Thunder 项目名称:i阅app Scrum Master:胡佑蓉 工作照片: 邹双黛在照相,所以图片中没有该同学. 参会成员: 王航:http://www.cnblo ...
- Android 数据存储 之 SQLite数据库详解
. 作者 :万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/19028665 . SQLiteDataBase示例程序下 ...
- Java容器之List接口
List 接口: 1. List 接口是 Collection 的子接口,实现 List 接口的容器类中的元素是有顺序的,而且可以重复: 2. List 容器中的元素都对应一个整数型的序号记载其在容器 ...
- Java核心技术点之接口
1. 为什么使用接口 Java中的接口是一组对需求的描述.接口通过声明接口方法来对外宣布:“要想具有XX功能,就得按我说的做(即实现接口方法).” 而接口的实现类通过实现相应接口的方法来宣布:“我已经 ...
- iOS- AVSpeechSynthesizer——iOS7语音合成器
语音合成器的技术是iOS7推出的,可以实现无网络语音功能,支持多种语言 1. 定义一个成员变量,记录语音合成器 AVSpeechSynthesizer #import <AVFoundation ...
- TCP系列20—重传—10、早期重传(ER)
一.介绍 在前面介绍thin stream时候我们介绍过有两种场景下可能不会产生足够的dup ACK来触发快速重传,一种是游戏类响应交互式tcp传输,另外一种是传输受到拥塞控制的限制,只能发送少量TC ...
- 【Linux】- Ubuntu 配置mysql远程访问
ubuntu上安装mysql非常简单只需要几条命令就可以完成. sudo apt-get install mysql-server 安装过程中会提示设置密码什么的,注意设置了不要忘了,安装完成之后 ...