打卡信奥刷题(3236)用C++实现信奥题 P8452 「SWTR-8」15B03
P8452 「SWTR-8」15B03题目背景15B03 获得了 ION2064 的承办权。题目描述15B03 的座位非常拥挤可以看成一张n × m n\times mn×m的网格每个小正方形( i , j ) (i, j)(i,j)代表一张桌子。根据规定考场上任何两张桌子不得相邻。这里相邻指含有公共点。严格定义两张桌子( i , j ) (i, j)(i,j)和( i ′ , j ′ ) (i, j)(i′,j′)相邻当且仅当∣ i − i ′ ∣ ≤ 1 |i - i|\leq 1∣i−i′∣≤1且∣ j − j ′ ∣ ≤ 1 |j - j|\leq 1∣j−j′∣≤1。布置考场的任务落在小 A 头上他希望撤去最少的桌子满足上述要求。小 A 认为这样太简单了因此他添加了限制在保证撤去桌子最少的前提下最大化剩余每张桌子到距离它最远的桌子的距离之和。这里距离指欧几里得距离桌子( a , b ) (a, b)(a,b)和( c , d ) (c, d)(c,d)的距离为( a − c ) 2 ( b − d ) 2 \sqrt{(a - c) ^ 2 (b - d) ^ 2}(a−c)2(b−d)2。平行时空中 15B03 的规模不尽相同多组测试数据。请选手认真阅读本题的评分方式。输入格式第一行一个整数S SS表示该测试点的编号。第二行一个整数T TT表示数据组数。接下来T TT组测试数据每组数据形如一行两个整数n , m n, mn,m。输出格式对于每组测试数据输出一个整数和一个实数由空格隔开。分别表示最少撤去的桌子数量以及每张桌子到距离它最远的桌子的距离之和的最大值。实数比较按绝对误差或相对误差不超过10 − 9 10 ^ {-9}10−9令你输出的答案为a aa标准答案为b bb你的答案被判为正确当且仅当∣ a − b ∣ max ( 1 , ∣ b ∣ ) ≤ 10 − 9 \frac{|a - b|}{\max(1, |b|)} \leq 10 ^ {-9}max(1,∣b∣)∣a−b∣≤10−9。输入输出样例 #1输入 #10 4 3 3 2 4 15 57 1064 822输出 #15 11.313708499 6 6.324555320 623 10206.135788972 655956 222400384.677931725说明/提示「样例解释」对于第一组询问选择( 1 , 1 ) , ( 1 , 3 ) , ( 3 , 1 ) (1, 1), (1, 3), (3, 1)(1,1),(1,3),(3,1)和( 3 , 3 ) (3, 3)(3,3)最优。撤去了3 × 3 − 4 5 3\times 3 - 4 53×3−45张桌子且每张桌子到距离它最远的桌子的距离均为2 2 2 2 2 2 \sqrt{2 ^ 2 2 ^ 2} 2\sqrt 2222222因此第二问答案为8 2 8\sqrt 282。如下图所示对于第二组询问选择( 1 , 1 ) (1, 1)(1,1)和( 2 , 4 ) (2, 4)(2,4)最优。撤去了2 × 4 − 2 6 2\times 4 - 2 62×4−26张桌子且每张桌子到距离它最远的桌子的距离均为1 2 3 2 10 \sqrt{1 ^ 2 3 ^ 2} \sqrt {10}123210因此第二问答案为2 10 2\sqrt {10}210。如果选择( 1 , 1 ) (1, 1)(1,1)和( 2 , 3 ) (2, 3)(2,3)则第二问答案为2 5 2\sqrt 525不优。「评分方式」对于每组测试数据若你第一问的答案错误得 0 分。否则若你第二问的答案错误得 0.8 分。否则得 1 分。每个测试点的得分为测试点内所有测试数据的得分的最小值乘以该测试点的分值。注意若你输出的格式错误得 0 分。因此如果你只希望获得第一问的分数请在第二问输出任意合理范围内的实数。「数据范围与约定」测试点 #115 pointsn , m n, mn,m均为奇数。测试点 #220 pointsn 1 n 1n1。测试点 #325 pointsn 2 n 2n2。测试点 #430 pointsn nn为奇数。测试点 #510 points无特殊限制。对于100 % 100\%100%的数据1 ≤ T ≤ 57 1\leq T\leq 571≤T≤57。1 ≤ n , m ≤ 1064 1\leq n, m\leq 10641≤n,m≤1064。「帮助与提示」你可以使用cmath中的sqrt(x)函数计算x xx的平方根。它返回double类型的值。sqrtl(x)精度更高它返回long double类型的值。「题目来源」Sweet Round 8 AIdea SolutionAlex_Wei。Testerchenxia25。C实现#includebits/stdc.h#definelllonglongusingnamespacestd;ll s,t,n,m,r;intmain(){std::ios::sync_with_stdio(false);cin.tie(0),cout.tie(0);cinst;for(inti1;it;i){boolp1,q1;cinnm;rn*m;if(n%20)n--,p0;if(m%20)m--,q0;r-(n/21)*(m/21);coutr ;if(p0)n;if(q0)m;if(n*m-r1){cout0.000000000endl;continue;}longdoubleans0.0;longlongk1,j1;p1,q1;for(k1;kn;k2){q1;for(j1;jm;j2){if(m%20j(m/2)(q))j,q0;longlongx,y;if(k(n1)/2)xk;elsexn-k1;if(j(m1)/2)yj;elseym-j1;anssqrtl(((longdouble)((n-x)*(n-x))((longdouble)((m-y)*(m-y)))));}if(n%20k2(n/2)(p))k,p0;}coutfixedsetprecision(9)ansendl;}return(0-0);}后续接下来我会不断用C来实现信奥比赛中的算法题、GESP考级编程题实现、白名单赛事考题实现记录日常的编程生活、比赛心得感兴趣的请关注我后续将继续分享相关内容
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2598912.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!