首页 > 代码库 > UVA 12382 Grid of Lamps ZOJ 3732 Graph Reconstruction 可图判定性
UVA 12382 Grid of Lamps ZOJ 3732 Graph Reconstruction 可图判定性
Uva 12382 题目链接:点击打开链接
ZOJ 3732题解:点击打开链接
Uva12382
题意:
给定n*m的地板,每个地板上有一盏灯,要么亮要么暗。
下面n个数字表示每行至少亮的灯盏数
下面m个数字表示每列至少亮的灯盏数
求:开始灯都是暗的,最少点亮几盏灯能满足上述条件
思路:
先给行和列大到小排序,然后每次用行减掉列。减完后再排个序即可。
即:实时排序。
#include <cstdio> #include <cstring> #include <iostream> #include <algorithm> #include <cmath> using namespace std; const int N = 1005; typedef long long ll; int a[N], b[N]; bool cmp(const int x, const int y) { return x>y; } int main() { int T, n, m; scanf("%d", &T); while(T-- > 0) { scanf("%d%d", &n, &m); int suma = 0, sumb = 0; for(int i = 0; i < n; i ++) { scanf("%d", &a[i]); suma += a[i]; } for(int i = 0; i < m; i ++) { scanf("%d", &b[i]); sumb += b[i]; } int ans = 0; if(suma < sumb) { for(int i = 0; i < n; i ++) { sort(b, b+m, cmp); for(int j = 0; j < m && a[i]; j ++) { if(b[j]) { ans ++; a[i]--; b[j]--; suma --; sumb --; } else break; } } } else { for(int j = 0; j < m; j ++) { sort(a, a+n, cmp); for(int i = 0; i < n && b[j]; i ++) { if(a[i]) { ans ++; a[i]--; b[j]--; suma --; sumb --; } else break; } } } printf("%d\n", ans + suma + sumb); } return 0; }
UVA 12382 Grid of Lamps ZOJ 3732 Graph Reconstruction 可图判定性
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。