栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

poj 2331 Water pipe

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

poj 2331 Water pipe

#include <cstdio>#include <algorithm>#include <cstring>#include <cmath>#include <queue>#include <vector>#include <map>using namespace std;const int maxn = 1000 + 10;const int inf = (-1u) >> 1;int xa, ya, xb, yb, k, c[4], l[4], ans;int len1, len2;void dfs2(int x, int cur, int len) {    if (len == 0) ans = min(cur, ans);    if (x == k) return ;    dfs2(x + 1, cur, len);    for (int i = 1; i <= c[x]; ++i) {        dfs2(x + 1, cur + i, len + i * l[x]);        dfs2(x + 1, cur + i, len - i * l[x]);    }}void dfs(int x, int cur, int len) {    if (len == 0) dfs2(0, cur, len2);    if (x == k) return ;    dfs(x + 1, cur, len);    for (int i = 1; i <= c[x]; ++i) {        c[x] -= i;        dfs(x + 1, cur + i, len + i * l[x]);        dfs(x + 1, cur + i, len - i * l[x]);        c[x] += i;    }}int main() {    scanf ("%d%d%d%d%d", &xa, &ya, &xb, &yb, &k);    for (int i = 0; i < k; ++i)        scanf ("%d", &l[i]);    for (int i = 0; i < k; ++i)        scanf ("%d", &c[i]);    len1 = abs(xa - xb), len2 = abs(ya - yb);    ans = inf;    dfs(0, 0, len1);    if (ans == inf) ans = -1;    printf ("%dn", ans);    return 0;}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/377229.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号