HDU

来源:互联网 发布:制图软件photoshop 编辑:程序博客网 时间:2024/05/19 02:16

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6195

题目大意:k个信号灯,m个屏幕,每次每个信号灯只能向一个屏幕发射信号,问从m个屏幕中选k个屏幕,k个屏幕的颜色各不相同,问最少添加几条缆线。

解题思路:假设有k个灯,m个屏幕,那么对于前k个屏幕来说,每个屏幕连到各不相同的灯上,此时有k条缆线,从这k个灯中任选k-1个灯,用这k-1个灯去匹配剩下的m-k个未连线的灯,因为从k中选k-1个,那么剩下的那个灯的颜色有k种可能,所以m-k个灯,每个灯都必须能出现k种颜色,所以需要(m-k)*k,所以总缆线数为(m-k)*k+k=(m-k+1)*k

AC代码:

#include<cstdio>#include<algorithm>using namespace std;typedef long long LL;int main(){    for (LL m, k;scanf("%I64d%I64d", &m, &k) == 2;)        printf("%I64d\n", (m - k + 1)*k);    return 0;}