2016 CCPC 合肥赛区//打铁记录..... 背锅还是我在行 此处@ctr 233
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2016 CCPC 合肥赛区//打铁记录..... 背锅还是我在行 此处@ctr 233相关的知识,希望对你有一定的参考价值。
也希望自己记住这些题并不是真的很难很难...
平行四边形...
这个题要两个直线上的两个点和给出点中的两个点组成的平行四边形面积最大。
确定两个点后,发现线上的点随之确定。那么我们解出线上的点 然后求面积表达式,化简....
这个过程算得好辛苦.....
发现S =( a*c(x1^2-x2^2) +b*d(y1^2-y^2)+(a*d+b*c)*(x1*y1-x2*y2) )/(ad-bc)
.................................................然后O(n)扫描点即可....................
这真的是ACM的题么............................感觉回到了初中...............................
#include <cstdio> #include <iostream> #include <algorithm> #include <vector> #include <set> #include <string.h> #include <cctype> #include <climits> #include <cmath> using namespace std; typedef long long ll; const int N = 1e5; void UMAX(ll& x,ll y){if(x<y) x=y;}; void UMIN(ll& x,ll y){if(x>y) x=y;}; ll a,b,c,d; ll p,q,o; ll calc(ll x,ll y) { return p*x*x+q*y*y+o*x*y; } int main() { while(scanf("%I64d%I64d%I64d%I64d",&a,&b,&c,&d)==4){ p = a*c; q = b*d; o = a*d+b*c; ll mx = LONG_LONG_MIN,mn = LONG_LONG_MAX; int n; scanf("%d",&n); while(n--) { ll x,y; scanf("%I64d%I64d",&x,&y); ll val = calc(x,y); UMAX(mx,val); UMIN(mn,val); } printf("%.f\\n",fabs((mx-mn)*double(1)/(a*d-b*c))); } return 0; }
以上是关于2016 CCPC 合肥赛区//打铁记录..... 背锅还是我在行 此处@ctr 233的主要内容,如果未能解决你的问题,请参考以下文章
HDU 5970 CCPC2016合肥 求等差数列整除整数下取整求和
ACM-CCPC中国大学生程序设计竞赛长春赛区(2016)地区赛——花开花落两相知
2016CCPC 合肥--最大公约数//每一年通向它的路上,多少人折戟沉沙,多少人功败垂成,有人一战成名,有人从头再来。