补题:牛客寒假基础训练2
作者:互联网
A-处女座的签到题
不能使用海伦公式,精度不能保证。
利用坐标,使用叉乘,求面积。
不能用sort,超时。可以使用nth_element(a,a+w-k,a+w),来找出第k大的。用long long 存面积,最后的精度用%2来判断,加上.50或.00
#include<stdio.h> #include<string.h> #include<algorithm> #include<iostream> #include<math.h> using namespace std; #define ll long long const int maxn=2e6; struct Strgou{ ll x,y; }; ll panduan(Strgou a,Strgou b,Strgou c){ if(a.x==b.x&&a.x==c.x)return 0; if(a.y==b.y&&a.y==c.y)return 0; return 1; } Strgou p[maxn]; ll a[maxn]; int main(){ int n,k; int T; scanf("%d",&T); while(T--){ scanf("%d%d",&n,&k); for(int i=0;i<n;i++){ scanf("%lld%lld",&p[i].x,&p[i].y); } int w=0; for(int i=0;i<n-2;i++){ for(int j=i+1;j<n-1;j++){ for(int k=j+1;k<n;k++){ if(panduan(p[i],p[j],p[k])){ a[w++]=abs(p[i].x*(p[j].y-p[k].y)-p[i].y*(p[j].x-p[k].x)+p[j].x*p[k].y-p[j].y*p[k].x); } } } } nth_element(a,a+w-k,a+w); printf("%lld",a[w-k]/2); if(a[w-k]%2==1)printf(".50\n"); else printf(".00\n"); } }
C-处女座的砝码
大数,抄袭大佬的代码
#include<stdio.h> #include<algorithm> #include<iostream> using namespace std; int main(){ long double n; cin>>n; long double a=1,b=1; int ans=1; while(b<n){ a*=3; b+=a; ans++; } cout<<ans; return 0; }
G-处女座与复读机
标签:Strgou,int,ll,long,牛客,基础训练,补题,处女座,include 来源: https://www.cnblogs.com/precious-LZY/p/10371717.html