欢迎访问 生活随笔!

凯发k8官方网

当前位置: 凯发k8官方网 > 编程资源 > 编程问答 >内容正文

编程问答

ccpc2019-凯发k8官方网

发布时间:2024/10/5 编程问答 8 豆豆
凯发k8官方网 收集整理的这篇文章主要介绍了 ccpc2019-湖南全国邀请赛(湘潭大学) 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

problem a chessboard

补题地址:http://acm.hdu.edu.cn/showproblem.php?pid=6532

题意:有n个点,其价值为i;分别对某一行、某一列以下的行、列有限制,求选择棋子的价值和最大

题解:费用流

       离散化坐标,每行用一个点表示,每列也用一个点表示。表示第i-1行的点向表示第i行的点连边,容量为第i行及以后能拿的棋子数的上限,费用为0,同理表示相邻列的点两两连边。若第i行第j列上有棋子,则表示第i行的点向表示第j列的点连边,容量为1,费用为该棋子的价值。可以定义源点表示第0行,汇点表示第0列,源点到汇点的最大费用流即为答案。

c 版本一

题解:最小费用最大流

dinic spfa 二分 离散化

1、离散化坐标,每行用一个点表示,每列也用一个点表示。

2、从0行(0列)递推到每一行(每一列)可以拿到的棋子,表示第i-1行的点向表示第i行的点连边,容量为第i行及以后能拿的棋子数的上限,费用为0,同理表示相邻列的点两两连边。

3、若第i行第j列上有棋子,则表示第i行的点向表示第j列的点连边,容量为1,费用为该棋子的价值。

4、可以定义源点表示第0行,汇点表示第0列,源点到汇点的最大费用流即为答案。

5、即假设有n行m列,拆分每个点,分为横坐标和纵坐标,从0行到n行,再从m列到0列。

6、

/* *@author: stzg *@language: c */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include
  • 上一篇:
  • 下一篇:
网站地图