【poj2464】樹狀數組

這道題。。太特么多細節了。。

題意:在平面直角坐標系中給你N個點,stan和ollie玩一個游戲,首先stan在豎直方向上畫一條直線,該直線必須要過其中的某個點,然后ollie在水平方向上畫一條直線,該直線的要求是要經過一個stan之前畫過的點。 這時候平面就被分割成了四塊,兩個人這時候會有一個得分,stan的得分是平面上第1、3象限內的點的個數,ollie的得分是平面上第2、4象限內的點的個數,在統計的時候在所畫線上的點都不計算在內。求最終stan使得自己的最差得分最高,并且輸出此時ollie的得分。

?

題解:

我們可以枚舉哪顆星星是中心點,然后就可以知道他們所確定的直線。

線上可以維護四個值:up,down,left,right,分別表示線上四個方位有多少顆星星。

然后我們只要求BL,就可以知道其它:

TL=橫坐標比x小的星星總數-BL-left

TR=y坐標比x大的星星總數-TL-up

BR=y坐標比x小的星星總數-BL-down

各種細節><

?

  1 #include<cstdio>
  2 #include<cstdlib>
  3 #include<cstring>
  4 #include<iostream>
  5 #include<algorithm>
  6 using namespace std;
  7 
  8 const int N=200010,INF=(int)1e9+100;
  9 int n,pl,mx,c[N],cntx[N],cnty[N],sumx[N],sumy[N],sx[N][2],sy[N][2],u[N],d[N],l[N],r[N],a1[N],a2[N];
 10 bool num[N];
 11 struct node{
 12     int x,y;
 13 }a[N];
 14 struct nd{
 15     int d,id,tmp;
 16 }p[2*N];
 17 
 18 bool cmp_num(int x,int y){return x<y;}
 19 bool cmp_d(nd x,nd y){return x.d<y.d;}
 20 bool cmp_a(node x,node y)
 21 {
 22     if(x.x==y.x) return x.y<y.y;
 23     return x.x<y.x;
 24 }
 25 int maxx(int x,int y){return x>y ? x:y;}
 26 
 27 void clear()
 28 {
 29     memset(cntx,0,sizeof(cntx));
 30     memset(cnty,0,sizeof(cnty));
 31     memset(sumx,0,sizeof(sumx));
 32     memset(sumy,0,sizeof(sumy));
 33     memset(c,0,sizeof(c));
 34     memset(a1,63,sizeof(a1));
 35     memset(a2,-1,sizeof(a2));
 36 }
 37 
 38 void add(int x)
 39 {
 40     for(int i=x;i<=mx;i+=(i&(-i))) c[i]++;
 41 }
 42 int getsum(int x)
 43 {
 44     int ans=0;
 45     for(int i=x;i>=1;i-=(i&(-i))) ans+=c[i];
 46     return ans;
 47 }
 48 
 49 int main()
 50 {
 51     freopen("a.in","r",stdin);
 52     // freopen("me.out","w",stdout);
 53     while(1)
 54     {
 55         scanf("%d",&n);
 56         if(n==0) break;
 57         pl=0;clear();
 58         for(int i=1;i<=n;i++)
 59         {
 60             scanf("%d%d",&a[i].x,&a[i].y);
 61             p[++pl].d=a[i].x;p[pl].id=i;p[pl].tmp=0;
 62             p[++pl].d=a[i].y;p[pl].id=i;p[pl].tmp=1;
 63         }
 64         sort(p+1,p+1+pl,cmp_d);
 65         mx=0;p[0].d=INF;
 66         for(int i=1;i<=pl;i++)
 67         {
 68             if(p[i].d!=p[i-1].d) mx++;
 69             if(p[i].tmp==0) a[p[i].id].x=mx;
 70             else a[p[i].id].y=mx;
 71         }
 72         
 73         sort(a+1,a+1+n,cmp_a);
 74         // for(int i=1;i<=n;i++) 
 75             // printf("%d %d\n",a[i].x,a[i].y);
 76         for(int i=1;i<=n;i++)
 77         {
 78             d[i]=cntx[a[i].x];cntx[a[i].x]++;
 79             l[i]=cnty[a[i].y];cnty[a[i].y]++;
 80         }
 81         // for(int i=1;i<=mx;i++) 
 82             // printf("i = %d  %d %d\n",i,cntx[i],cnty[i]);
 83         for(int i=1;i<=n;i++)
 84         {
 85             u[i]=cntx[a[i].x]-d[i]-1;
 86             r[i]=cnty[a[i].y]-l[i]-1;
 87         }
 88         for(int i=1;i<=mx;i++) 
 89         {
 90             sumx[i]=sumx[i-1]+cntx[i];
 91             sumy[i]=sumy[i-1]+cnty[i];
 92         }
 93         for(int i=1;i<=n;i++)
 94         {
 95             int x=a[i].x,y=a[i].y;
 96             sx[i][0]=sumx[x-1];
 97             sx[i][1]=sumx[mx]-sumx[x];
 98             sy[i][0]=sumy[y-1];
 99             sy[i][1]=sumy[mx]-sumy[y];
100         }
101         // for(int i=1;i<=n;i++)
102         // {
103             // printf("%d  sx0 %d sx1 %d sy0 %d sy1 %d d %d u %d l %d r %d\n",i,sx[i][0],sx[i][1],sy[i][0],sy[i][1],d[i],u[i],l[i],r[i]);
104         // }
105         for(int i=1;i<=n;i++)
106         {
107             int x=a[i].x,y=a[i].y;
108             int BL=getsum(a[i].y-1)-d[i];
109             int TL=sx[i][0]-BL-l[i];
110             int TR=sy[i][1]-TL-u[i];
111             int BR=sy[i][0]-BL-d[i];
112             add(y);
113             if(TR+BL<a1[x]) a1[x]=TR+BL,a2[x]=TL+BR;
114             else if(TR+BL==a1[x]) a2[x]=maxx(a2[x],TL+BR);
115             // printf("%d  BL = %d  BR = %d  TR = %d TL = %d\n",i,BL,BR,TR,TL);
116         }
117         int ans=0,nl=0;;
118         for(int i=1;i<=mx;i++) 
119         {
120             if(a1[i]<INF) ans=maxx(ans,a1[i]);
121         }
122         printf("Stan: %d; Ollie:",ans);
123         memset(num,0,sizeof(num));
124         for(int i=0;i<=n;i++) 
125             if(a1[i]==ans) num[a2[i]]=1;
126         for(int i=0;i<=n;i++) 
127             if(num[i]) printf(" %d",i);
128         printf(";\n");
129     }
130     return 0;
131 }

?

轉載于:https://www.cnblogs.com/KonjakJuruo/p/6040504.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/373552.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/373552.shtml
英文地址,請注明出處:http://en.pswp.cn/news/373552.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

mkdir -p命令

如果要創建目錄A并創建目錄A的子目錄B&#xff0c;沒有用-p的情況下mkdir 逐個的創建目錄(mkdir A && mkdir A/B); 如果用-p 可以直接創建2個目錄 mkdir -p A/B(如果父目錄A不存在就創建); 來自個人博客&#xff1a; http://www.xuexiyuan.cn/article/detail/182.html

Eclipse在過去十年中的主要成就

正如我所寫的那樣 &#xff0c;Eclipse在11月慶祝了10年來的開源和社區。 Eclipse社區已經形成了許多里程碑 &#xff0c;但是主要成就是什么&#xff1f; Eclipse為實際改變軟件行業做了什么&#xff1f; 這是Eclipse的一些關鍵成就。 1.主導的Java IDE。 Eclipse最初是一個非…

azure git怎么使用_Azure(一)Azure Traffic Manager為我們的Web項目提供負載均衡

一&#xff0c;引言上一篇講到我們將自己的Net Core Web 項目部署到 Azure 的 Web App 的一項 pass 服務&#xff0c;假如隨著項目的日益增長的訪問量&#xff0c;之前部署到單節點的應用可能無法保證其穩定性&#xff0c;可能會導致系統宕機等等問題&#xff0c;這個時候&…

hiho1257 Snake Carpet

題目鏈接&#xff1a;http://hihocoder.com/problemset/problem/1257 題目大意&#xff1a;有n條蛇 編號為1-n 每條蛇的長度跟編號相等 奇數編號的蛇必須拐奇數次&#xff08;除了第一條&#xff09;偶數編號的蛇必須拐偶數次&#xff08;除了第二條&#xff09;問能不能在這種…

POJ 3680_Intervals

題意&#xff1a; 給定區間和該區間對應的權值&#xff0c;挑選一些區間&#xff0c;求使得每個數都不被K個區間覆蓋的最大權值和。 分析&#xff1a; 如果K1&#xff0c;即為區間圖的最大權獨立集問題。可以對區間所有端點排序后利用動態規劃的方法&#xff0c;設dp[i]為只考慮…

MongoDB 數據類型查詢——$type使用

在MongoDB中根據字段的數量類型來查詢數據使用$type操作符來實現&#xff0c;具體使用法語&#xff1a;1db.集合名.find({$type:類型值}) //這里的類型值能使用Number也能使用alias舉個例子&#xff1a;12db.person.find({address:{$type:2}}) //查詢address字段數據…

Spring和JSF集成:MVC螺母和螺栓

過去&#xff0c;我曾嘗試將JSF與Spring MVC集成在一起&#xff0c;盡管我的第一次嘗試成功了&#xff0c;但這遠非理想。 這次&#xff0c;我決定做出一些關鍵決定來幫助我集中精力&#xff1a; 向后兼容。 支持JSF 1.2涉及的工作太多&#xff0c;而Spring 3.1中出現了太多的好…

文字描邊_如何在網頁里實現文字描邊效果

文字描邊想要在網頁里實現文本描邊效果&#xff0c;在以前只能使用Photoshop等來實現&#xff0c;但現在只需要一個text-stroke屬性&#xff0c;即可輕松做到文本描邊&#xff0c;漸變文本描邊&#xff0c;甚至圖片文本描邊。01語法text-stroke: text-stroke是一個復合屬性&…

javascript數據結構-棧

github博客地址 棧&#xff08;stack&#xff09;又名堆棧&#xff0c;它是一種運算受限的線性表。遵循后進先出原則&#xff0c;像垃圾桶似的。功能實現依然按照增刪改查來進行&#xff0c;內部數據存儲可以借用語言原生支持的數組。 棧類 function Stack(){this.data []; }添…

MongoDB 字符串值長度條件查詢

在實際項目中常常會有根據字段值長度大小進行限制查詢&#xff0c;例如查詢商品名稱過長或過短的商品信息&#xff0c;具體的實現方式可能有多種&#xff0c;在此記錄常見的兩種實現使用 $where 查詢&#xff08;性能稍遜一些&#xff09;12345//查詢商品名稱長度大于25個字符的…

虛擬化Java應用程序:最佳實踐(JavaOne 2011)

賈斯汀穆雷&#xff08;Justin Murray&#xff09;早五分鐘就開始了他的演講[“虛擬化Java應用程序&#xff1a;最佳實踐”&#xff08;21860&#xff09;]&#xff0c;并說虛擬化已經到了人們不再需要擔心利用虛擬化的地步。 他說他的演講大約有一年的歷史&#xff0c;是一個團…

linux里hba狀態_Windows和Linux系統查看HBA卡wwn號的方法 | 系統之家官網

一、windows 系統在windows系統中&#xff0c;可以使用fc hba卡廠家提供的管理軟件查看光纖適配器的wwn號碼&#xff0c;具體如下&#xff1a;qlogic&#xff1a;sansurferemulex&#xff1a;hbanyware二、suse linux 9查看 /proc/scsi/qla2xxx/* &#xff0c;并以 adapter-por…

”二柱子“個人項目

”二柱子“個人項目 關于二柱子的個人項目&#xff0c;據說……是這么發生的…… 二柱子因為懶(,,? ? ?,,)&#xff0c;要給他上小學的兒子編寫個能夠出小學四則運算題目的程序。老師上課的時候又添加了條件&#xff1a; 1、打印至少30道題 2、除了整數之外&#xff0c;還要…

phpstorm9 增加對.vue的支持

1、安裝vue.js插件 2、設置javascript version為ECMAScript 6 3、 <script type"text/ecmascript-6"> </script>轉載于:https://www.cnblogs.com/lobtao/articles/6044378.html

Eclipse中的集成Git插件刪除線上遠程分支

Eclipse 的忠實黨,在使用Git 多人協作以分支的形式開發應用時分支合并到主干后往往再沒什么用(我的做法是保留一兩周再干掉),在此記錄使用Eclipse的Git 插件來刪除無用的分支。 操作步驟: 項目右鍵 — Team — Remote — Push — Next — Finesh 1,下拉框選擇你要刪除的遠程分支…

mysql 查詢系統_使用select和show命令查看mysql數據庫系統信息

(1).select顯示當前日期和時間mysql> select now();---------------------| now() |---------------------| 2019-06-05 13:46:20 |---------------------1 row in set (0.00 sec)顯示當前日期mysql> select curdate();------------| curdate() |------------| 2019-06-0…

從MongoDB GridFS流式傳輸文件

不久前&#xff0c;我在Twitter上發布了自己的最新作品&#xff0c;即從MongoDB GridFS傳輸文件進行下載&#xff08;而不是將整個文件存儲到內存中然后提供服務&#xff09;&#xff0c;這是我取得的一個小勝利。 我答應就此事寫博客&#xff0c;但不幸的是&#xff0c;我的特…

0. 洗好蝦和鍋 1. 放水放老姜&#xff0c;燒開&#xff0c;放鹽 2. 放入蝦&#xff0c;沸騰后&#xff0c;嘗咸淡 3. 放香蔥&#xff0c;乘起來轉載于:https://www.cnblogs.com/gary-tao/p/5248139.html

讀字庫遇到坑爹的問題

轉載請注明出處&#xff1a;http://blog.csdn.net/qq_26093511/article/details/53099262 最近在做一個led顯示屏的項目&#xff0c; 我想顯示 “常”&#xff0c;“州”&#xff0c;“大”&#xff0c;“學”這幾個字&#xff0c;但是只能顯示 “常” 和 “大”&#xff0c;…

如果–否則為編碼風格最佳實踐

下面的帖子將是一個高級花括號討論&#xff0c;沒有對與錯的答案&#xff0c;只是更多的“品味”。 它是關于是否將“ else”&#xff08;以及其他關鍵字&#xff0c;例如“ catch”&#xff0c;“ finally”&#xff09;放在換行符上。 有些人可能會寫 if (something) {doIt(…