题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=6195
题目描述: 有K个xi映射M个yj, 连N条线,使得从M中任选K个都是从不同x映射来的, 让你求最小的N
解题思路: 对于一个x来讲, 最优的情况就是x只连了下面物体的m-(k-1) 个, 所以答案为k*(m-(k-1))个
代码:
#include <iostream> #include <cstdio> #include <string> #include <vector> #include <cstring> #include <iterator> #include <cmath> #include <algorithm> #include <stack> #include <deque> #include <map> #include <set> #include <queue> #define lson l, m, rt<<1 #define rson m+1, r, rt<<1|1 #define mem0(a) memset(a,0,sizeof(a)) #define mem1(a) memset(a,-1,sizeof(a)) #define sca(x) scanf("%d",&x) #define de printf("======= ") typedef long long ll; using namespace std; int main() { ll n, k; while( scanf( "%lld%lld", &n, &k ) == 2 ) { printf( "%lld ", k * (n-k+1) ); } return 0; }
思考: 这是一道水题啊, 自己在赛场上应该快点儿想出来的