<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      P4876 The Lazy Cow G 非常神奇有意思

      Tang Problem

      題意

      \(n\) 個草地的坐標(相當于點),我們需要選擇一個點,使得與他距離小于等于 \(k\) 的草地最多。

      這里定義的距離就是從起點開始,可以往東西南北走,一次走一個單位長度,最短到達目的地的行走次數。

      做法

      這個做法需要會切比雪夫距離和曼哈頓距離的互化,并且熟練掌握了掃描線。

      這個也是好做的,我們很好想到這個使用掃描線是可以做的,暴力掃 x 軸,數據結構維護 y 軸,合法區域就像一個菱形一樣,理論上 \(O(nlogn)\) 是可以做的。

      但問題就是這個菱形并不是正的,而是歪的,讓我們維護起來就十分的頭大。

      為什么這個是歪的?自然是因為這個距離的計算方式其實就是曼哈頓距離。

      我們把這個轉化稱切比雪夫距離不就相當于將這個擺正了嗎?

      所以我們轉化一下,\((x,y)\to(x+y,x-y)\)。

      之后我們就很容易使用掃描線求解了。

      點擊查看代碼
      #include <bits/stdc++.h>
      using namespace std;
      namespace DataStructure{
      	const int MN=1e6+116;
      	struct Segmentree{
      		#define lc k<<1
      		#define rc k<<1|1
      		struct Node{
      			int l, r, maxn, tag;
      		}tr[MN];
      		void pushup(int k){
      			tr[k].maxn=max(tr[lc].maxn,tr[rc].maxn);
      		}
      		void build(int k, int l, int r){
      			tr[k].l=l, tr[k].r=r; tr[k].tag=0;
      			if(l==r){tr[k].maxn=0; return;}
      			int mid=(l+r)>>1;
      			build(lc,l,mid);
      			build(rc,mid+1,r);
      			pushup(k); return;
      		}
      		void pushdown(int k){
      		    if(tr[k].tag==0) return;
      		    tr[lc].maxn+=tr[k].tag;
      		    tr[rc].maxn+=tr[k].tag;
      		    tr[lc].tag+=tr[k].tag;
      		    tr[rc].tag+=tr[k].tag;
      		    tr[k].tag=0;
      		}
      		void update(int k, int l, int r, int val){
      			if(tr[k].l>=l&&tr[k].r<=r){
      				tr[k].maxn+=val; tr[k].tag+=val; return;}
      			pushdown(k); int mid=(tr[k].l+tr[k].r)>>1;
      			if(l<=mid) update(lc,l,r,val);
      			if(r>mid) update(rc,l,r,val);
      			pushup(k); return;
      		}
      	};
      }
      int n, k;
      const int MN=1e6+116;
      DataStructure::Segmentree tr;
      struct Node{
      	int x, y1, y2, id;
      	bool operator < (const Node &o) const{
      		if(x!=o.x) return x<o.x;
      		return id>o.id;
      	}
      }point[MN],query[MN];
      int lsh[MN], ans=0;
      int main(){
      	ios::sync_with_stdio(0), cin.tie(0), cout.tie(0); cin>>n>>k;
      	for(int i=1,val,xa,ya; i<=n; ++i){
      		cin>>val>>xa>>ya;
      		xa+=ya; ya=xa-ya*2;
      		int xb=xa+2*k, yb=ya+2*k;
      		point[i*2-1]={xa,ya,yb,val};
      		point[i*2]={xb,ya,yb,-val};
      		lsh[i*2-1]=ya; lsh[i*2]=yb;
      	}
      	sort(point+1,point+n*2+1);
      	sort(lsh+1,lsh+n*2+1);
      	int len=unique(lsh+1,lsh+n*2+1)-lsh-1;
      	tr.build(1,1,len-1);
      	for(int i=1; i<n*2; ++i){
      		int ya=lower_bound(lsh+1,lsh+len+1,point[i].y1)-lsh;
      		int yb=lower_bound(lsh+1,lsh+len+1,point[i].y2)-lsh;
      		tr.update(1,ya,yb,point[i].id);
      		ans=max(ans,tr.tr[1].maxn);
      	}
      	cout<<ans<<'\n';
      	return 0;
      }
      
      posted @ 2025-08-23 09:05  BaiBaiShaFeng  閱讀(12)  評論(0)    收藏  舉報
      Sakana Widget右下角定位
      主站蜘蛛池模板: 精品久久久久久无码不卡| 九九热在线免费观看视频| 国内精品视频一区二区三区| 新婚少妇无套内谢国语播放| 激情文学一区二区国产区| 色一情一乱一区二区三区码| 亚洲精品日本久久久中文字幕| 亚洲欧洲日韩国内高清| 热久久美女精品天天吊色| 精品国精品自拍自在线| 五月丁香六月综合缴情在线| 夜夜影院未满十八勿进| 亚洲人成网站77777在线观看| 久久久久成人精品免费播放动漫 | 麻豆成人精品国产免费| 在线日韩日本国产亚洲| 大地资源高清免费观看| 久久精品国产99国产精品严洲| √新版天堂资源在线资源| 色欲久久人妻内射| 激情无码人妻又粗又大| 午夜爽爽爽男女免费观看影院| 国产另类ts人妖一区二区| 精品精品久久宅男的天堂| 欧美成人午夜精品免费福利| 亚洲 欧美 综合 另类 中字| 成人亚洲综合av天堂| 一区二区三区精品自拍视频| 色av专区无码影音先锋| 久久精品免视看成人国产| 国产亚洲av人片在线播放| 精品久久人人做爽综合| 色综合激情丁香七月色综合| 亚洲中文字幕第一页在线| 午夜精品福利亚洲国产| 亚洲第一视频区| 亚洲欧美日韩综合一区在线| 国产一区二区三区不卡观| 久久久久国产一区二区| 日韩不卡一区二区三区四区| 国产一区日韩二区欧美三区|