地鼠的困境
2017-12-26 16:50
169 查看
地鼠的困境 Time Limit:1000MS Memory Limit:65536K Total Submit:244 Accepted:64 Description 地鼠家族面临着一个新的威胁——猎食者。 地鼠家族一共有N个地鼠和M个鼠洞,每个都位于不同的(x, y)坐标中。假如有地鼠在发觉危险以后s秒内都没有回到鼠洞里的话,就可能成为老鹰的食物。当然了,一个鼠洞只能拯救一只地鼠的命运,所有地鼠都以相等的速度v移动。地鼠家族需要设计一种策略,使得老鹰来时,易受攻击的地鼠数量最少。 Input 本题有多组数据。第1行为测试数据组数T(T<=50)。 对于每组数据,第一行4个整数n, m, s和v(n, m <= 100)。以后n行为地鼠的坐标,以后m行为鼠洞的坐标。距离的单位是m,时间的单位是s,速度的单位是m/s。 Output 对于每组数据输出一行,为易受攻击的地鼠的数量。 Sample Input 1 2 2 5 10 1.0 1.0 2.0 2.0 100.0 100.0 20.0 20.0 Sample Output 1 Source elba [Submit] [Go Back] [Status] [Discus 分析: 首先预处理出每个地鼠能够跑到点,然后连起来,之后想一个正常的二分图一样的 去写就好了。 var link:array[0..101] of longint; cover:array[0..101] of boolean; map:array[0..101,0..101] of boolean; a,b,j,i,k,l,n,m,v,t:longint; function find(x,y:longint):boolean; var q,i:longint; begin find:=true; for i:=1 to y do if map[x,i] and not(cover[i]) then begin q:=link[i]; link[i]:=x; cover[i]:=true; if (q=0) or (find(q,y)) then exit; link[i]:=q; end; find:=false; end; procedure main(x:longint); var i:longint; begin for i:=1 to x do begin fillchar(cover,sizeof(cover),false); find(i,x); end; end; procedure work(a,b,c:longint); var i,j,k,max,ans:longint; r,s,x0,y0,q,p:real; x,y:array[0..101] of real; begin for i:=1 to a do readln(x[i],y[i]); for i:=1 to b do begin readln(q,p); for j:=1 to a do begin x0:=x[j]-q; y0:=y[j]-p; r:=sqrt(sqr(x0)+sqr(y0)); if r<=c then map[j,i]:=true; end; end; main(a); ans:=0; for i:=1 to a do if link[i]>0 then inc(ans); writeln(a-ans); end; begin readln(n); for i:=1 to n do begin readln(a,b,v,t); fillchar(map,sizeof(map),false); fillchar(link,sizeof(link),false); work(a,b,v*t); end; end. |
相关文章推荐
- 地鼠的困境(SSL_1333)
- [二分图]地鼠的困境
- 地鼠的困境_ssl1333_匹配
- SSL 地鼠的困境
- 地鼠的困境SSL1333 最大匹配
- 地鼠的困境 ssl1333(不一定对)
- SSL 1333_地鼠的困境_匹配
- 地鼠的困境
- SSL1333 地鼠的困境(最大匹配)
- (ssl1333)地鼠的困境
- 地鼠的困境 最大匹配
- SSL 地鼠的困境
- 【SSLGZ 1333】地鼠的困境
- SSL1333 地鼠的困境
- codevs 1052 地鼠游戏 堆优化贪心 解题报告
- 囚徒困境python框架Axelrod小试
- 企业团队无法绕开的囚徒困境
- "囚徒困境"的故事
- 软件渠道管理的两难困境
- 中国企业面临信息化困境