拯救活动室的男女比例

时间限制(普通/Java) : 2000 MS/ 6000 MS          运行内存限制 : 81920 KByte
总提交 : 116            测试通过 : 38

比赛描述

为了拯救活动室的男女比例,队长kalili带着队员们连他一起共k人去说服妹子们努力学习算法加入A协大家庭,妹子们站成一个直角三角形,一共m行,第i行有i个妹子,每个妹子有一个颜值aij,规定每轮只能一个人来说服妹子且一人只能说服一轮,开始都面对第一个妹子,每说服完一个妹子只能往前或者往左走继续去说服别的妹子,如果遇到已经被说服的妹子则不用说服继续走,每个妹子最多被说服一次,现在已知A协的男精英们口才很好,不管颜值多高的妹子都能直接说服,求他们能说服的妹子们的总颜值最大是多少

输入

第一行一个整数T代表共T组样例,每组样例第一行包含两个数字m和k,接下来m行,第i行有i个数字表示对应妹子的颜值

(1 <= T <= 200,1 <= m <= 25, 0 <= k <= m,0 <= aij <= 108)

T >= 100的数据不超过五组

输出

对于每组样例,输出一个数字表示能说服的妹子们的最大总颜值

样例输入

2
2 1
1
1 2
3 2
1
2 3
4 5 6

样例输出

4
21

提示

对于第二组样例

第一个人可以以(1,1) -> (2,1) -> (2, 2) -> (3,2) -> (3,3)的顺序说服5个妹子

第二个人的顺序可以是(1, 1) -> (2, 1) -> (3, 1),因为(1,1) (2,1)位置的妹子已经被说服了,他这一轮只说服了一个妹子。

两轮下来所有妹子都被说服,因此总颜值就是她们的颜值和为21

思路:很明显的网络流,就是不知道会不会TLE,试了一发TLE,然后发现N开小了,改大之后就AC了

只要跟题目所说的一样能达到就连边即可,注意一个点要拆成两个点,为了让费用只能加一次,拆成两个点后连两条边,一条容量为1,费用为aij,一条容量为k,费用为0,由于是最大费用最大流,所以如果会经过这个店,一定会先流容量为1的边

代码:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <queue>
using namespace std;
#define N 1350
#define INF 999999999
struct Edge
{int u,v,next,cap,cost;
} edge[N*N];
int cnt,head[N];
int vis[N],pp[N];
long long d[N];
void init()
{cnt=0;memset(head,-1,sizeof(head));
}
void addedge(int u,int v,int cap,int cost)
{edge[cnt].u=u;edge[cnt].v=v;edge[cnt].cap=cap;edge[cnt].cost=cost;edge[cnt].next=head[u];head[u]=cnt++;edge[cnt].u=v;edge[cnt].v=u;edge[cnt].cap=0;edge[cnt].cost=-cost;edge[cnt].next=head[v];head[v]=cnt++;
}
int spfa(int s,int t,int n)
{queue<int>q;memset(vis,0,sizeof(vis));memset(pp,-1,sizeof(pp));///pp[i]表示最短路径上以i为终点的边的编号for(int i=0; i<=n; i++)d[i]=-INF;d[s]=0;vis[s]=1;q.push(s);while(!q.empty()){int u=q.front();q.pop();vis[u]=0;for(int i=head[u]; i!=-1; i=edge[i].next){int v=edge[i].v;if(edge[i].cap>0&&d[v]<d[u]+edge[i].cost){d[v]=d[u]+edge[i].cost;pp[v]=i;if(!vis[v]){vis[v]=1;q.push(v);}}}}if(d[t]==-INF) return 0;///找不到一条到终点的路return 1;
}
long long MCMF(int s,int t,int n)
{long long mincost=0;int minflow;///最大费用,路径中最小流量,总流量while(spfa(s,t,n))///找当前的最长路{minflow=INF+1;for(int i=pp[t]; i!=-1; i=pp[edge[i].u])minflow=min(minflow,edge[i].cap);///从路径中找最小的流量for(int i=pp[t]; i!=-1; i=pp[edge[i].u]){edge[i].cap-=minflow;///当前边减去最小流量edge[i^1].cap+=minflow;///反向边加上最小流量}mincost+=d[t]*minflow;///最小费用等于路径和*每条路径的流量(经过多少次)}return mincost;
}
int main()
{int n,m,k,v,T,tot=1;scanf("%d",&T);while(T--){init();scanf("%d %d",&m,&k);int s=0,n=2*m*m+1;addedge(s,1,k,0);for(int i=1; i<=m; i++){for(int j=1; j<=i; j++){scanf("%d",&v);addedge((i-1)*m+j,m*m+(i-1)*m+j,1,v);addedge((i-1)*m+j,m*m+(i-1)*m+j,k,0);if(i!=m) addedge(m*m+(i-1)*m+j,i*m+j,k,0);if(j!=i) addedge(m*m+(i-1)*m+j,(i-1)*m+j+1,k,0);}}addedge(2*m*m,n,k,0);printf("%I64d\n",MCMF(s,n,n));}return 0;
}

noj 2112 拯救活动室的男女比例(最大费用最大流)相关推荐

  1. 湖南科技大学计算机男女比例,湖师大文学院新生男女比例1:9 成了“女儿国”...

    "外国语学院的男生可真是有福,掉进了'女儿国'了."9月13日,2012级湖南师范大学新生开始军训,外国语学院队列几近清一色的女生让其他专业的同学眼热. 9月12日,湖南师范大学本 ...

  2. 四川大学计算机学院男女生比例,川大、电子科大新生男女比例大PK 比例更佳的是……...

    四川在线记者 李寰 2020年大一新生陆续到校,日前,四川大学和电子科技大学分别公布了学校的男女比例.就在电子科大为4.28:1的男女比例感到忧伤的时候,四川大学很骄傲地宣布,男女新生比例为1.18: ...

  3. python分别统计男女人数_python实现爬虫统计学校BBS男女比例(一)

    一.项目需求 前言:BBS上每个id对应一个用户,他们注册时候会填写性别(男.女.保密三选一). 经过检查,BBS注册用户的id对应1-300000,大概是30万的用户 笔者想用Python统计BBS ...

  4. 中南大学计算机专业男女比例,你知道吗?中南大学的男女比例居然是这样的

    听说中南大学别称"左家垅男子职业技术学院",男女比例7:1,真的吗? 都说"老乡见老乡,两眼泪汪汪",来中南的同乡人有多少? 据说00后已经攻占大学了? 中南& ...

  5. 自动平衡男女比例的随机分组软件B2G使用教程,献给组织

    操作演示视频二维码: 自动平衡男女比例的随机分组软件B2G APP(v1.0)上线 ,B2G随机分组软件交流群:489950969,@author by CYJ cyjlnk@foxmail.com ...

  6. 清华大学计算机系男女,【清华大学男女比例】2016清华大学各院系男女比例

    多年来的关于清华大学的传言都是男女比例七比一,使得大家对于清华大学男女比例感到有些恐惧.实则不然,虽然清华大学过去以工科为主,男生多余女生比较正常,但是早在1993年清华大学男女比例就已到达5:1,后 ...

  7. 女神节爆猛料!. NET程序员男女比例公布!

    今天是三八女神节,这里先祝广大的程序员妹子们节日快乐,健康美丽! 有一个问题,相信很多.NET程序员都很感兴趣:.NET程序员中女生占比多少?先来公布答案: 在本次调查中发现,.NET程序员群体中男女 ...

  8. 抖音数据统计_26万条抖音数据背后的推荐逻辑以及严重失调的男女比例

    本文作者:喜哥(张佳)易灵微课<数据分析-认知与实践>讲师 新榜数据分析师 人人都是产品经理.华尔街见闻专栏作家 简书科技类优秀作者本文首发自公众号喜新(noyanjiu),如需转载请注明 ...

  9. 山东农业大学计算机类男女比例,男女比例_山东农业大学

    堕落 (2012-11-28 17:46:56) 我们水土学院男女比例严重不平衡,恋爱氛围还好吧,不是很多,本人一直单身-虽然很期待,但我觉得这东西还是随缘最好,缘分到了,自然会有的,不一定非得大一就 ...

最新文章

  1. 芯片焊接和PCB设计引脚的长度及位置对于焊接质量的教训
  2. Java GC如何判断对象是否为垃圾
  3. 在ubuntu14.04中安装搜狗输入法
  4. 动态规划在求解背包问题中的应用(JAVA)--回溯法、记忆化法
  5. kali linux2.0下MariaDB修改密码
  6. 信息提示无法建立数据连接服务器,FileZilla 链接FTP服务器无法建立数据连接: ECONNREFUSED...
  7. 解决This application failed to start because cannot find or load the qt platform plugin 'xcb'
  8. Atitit 延迟绑定架构法attilax总结
  9. OSI与TCP/IP各层的结构与功能及协议
  10. 史上最强三千六百道脑筋急转弯
  11. 张宇1000题高等数学 第十、十一、十二章 一元函数积分学的应用——几何应用、积分等式与积分不等式、物理应用
  12. 微信小程序UI框架有哪些?
  13. WERTYU UVA - 10082
  14. PHPwebshell2022免杀bypass阿里云盾等所有安全设备
  15. win10 輸入法怎麽切換繁體
  16. rolling用法实例
  17. 问卷调查:vue element动态生成表单、表单校验以及表单提交
  18. python中括号的作用_python中中括号
  19. 三星s4 android8,三星公布Android 8.0更新手机名单 Galaxy S7起步
  20. Linus 回应“拉黑”事件:触犯禁忌,违背信任!

热门文章

  1. 迪文屏幕T5L平台学习笔记七:RS485测试
  2. Diablo(暗黑破坏神)的特效实现
  3. DOSBOX 使用及基本指令的用法
  4. web前端技术(二)之动画进阶
  5. HTML+CSS+JS网页设计期末课程大作业 DW个人博客网站制作 web前端开发技术 web课程设计 网页规划与设计
  6. 【Filter过滤器案例】登录验证+敏感词过滤
  7. ASP.NET超市收银管理系统
  8. 无线打印服务器app,双频无线路由器打印服务器客户端软件_1.14.0613 (Windows)
  9. mysql 启动/停止命令
  10. Linux学习笔记(23)——基于wm8960的音频设备驱动