HLG 1357 Leyni,罗莉和怪叔叔
生活随笔
收集整理的這篇文章主要介紹了
HLG 1357 Leyni,罗莉和怪叔叔
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題意: 有 n 個蘿莉,和 m 個怪叔叔,已知他們的坐標,且任意三個人不共線,要求從蘿莉中任選三個人出來,且三個人
???????? 組成的三角形中不能包含怪叔叔,共有多少種取法。
分析: 將蘿莉的坐標按橫坐標排序,用 f[i][j] 表示蘿莉? i 到蘿莉 j ?的橫坐標范圍內,位于蘿莉 i ,j上方的
怪叔叔數量,對于橫坐標依次增加的 蘿莉 i,j,k ,如果有
????????? f[i][j]+f[j][k]=f[i][k],??? 則 蘿莉 i,j,k 組成的三角形內不含有怪叔叔(畫圖能夠看出)。
時間復雜度為 O(N^3)。
View Code #include<stdio.h> #include<string.h> #include<stdlib.h> struct node {long long x,y; }l[204],g[204]; int cmp(const void*p1,const void*p2) {node* c=(node*)p1;node* d=(node*)p2;return c->x-d->x; } long long mul(node a,node b,node c) {return (b.x-a.x)*(c.y-a.y)-(b.y-a.y)*(c.x-a.x); } int f[202][202]; int main() {int n,m,t,i,j,k,tot;scanf("%d",&t);while(t--){scanf("%d%d",&n,&m);for(i=0;i<n;i++)scanf("%lld%lld",&l[i].x,&l[i].y);for(i=0;i<m;i++)scanf("%lld%lld",&g[i].x,&g[i].y);qsort(l,n,sizeof(l[0]),cmp);qsort(g,m,sizeof(g[0]),cmp);for(i=0;i<n-1;i++)for(j=i+1;j<n;j++){tot=0;for(k=0;k<m;k++)if(g[k].x>=l[i].x&&g[k].x<=l[j].x&&mul(l[i],g[k],l[j])<0)tot++;f[i][j]=tot;}tot=0;for(i=0;i<n;i++)for(j=i+1;j<n;j++)for(k=j+1;k<n;k++)if(f[i][j]+f[j][k]==f[i][k])tot++;printf("%d\n",tot);}return 0; }?
?
轉載于:https://www.cnblogs.com/dream-wind/archive/2012/06/05/2537456.html
總結
以上是生活随笔為你收集整理的HLG 1357 Leyni,罗莉和怪叔叔的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 孙膑云端梦境皮肤怎么获取 汉典孙字的基本
- 下一篇: Mysql5.5部署MHA