日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Lawn of the Dead

發布時間:2023/12/3 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Lawn of the Dead 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Lawn of the Dead

題意:

有一個N * M的方格,我們從(1,1)出發,只能向右走或者向下走,存在一些障礙,問有多少格子是我們所能到達的
2<=n,m,k<=1e5

題解:

所有的點減去不能到達的點的個數,就是可以到達的點的個數
有障礙的地方不能達到,而我們只能向右向下走,當某個點的左邊和上邊都是不可達時,該點就不可達,并會對自己的右邊的點和下方的點造成影響
n,m,k<=1e5,空間很大但是地雷數目有限,我們可以從上往下逐行對每一行的地雷排序后處理,對于每個地雷,找到從自己的右上角點(x-1,y+1)開始從左往右的連續不可達區間的范圍,那么x這行的這個范圍也不可達,我們可以用線段樹來實現區間的查詢與維護。處理每一行,累加后用總點數減去即可


官方代碼中,將可以到達的區域賦值1,每次找第x-1行區間內最最左側的1,然后將第x行這段區間賦值為1,剩下0即為不可到達區域

代碼:

md調了半天還是不對


2021/7/30 0:41
問題解決,現在代碼對了,睡覺

#include<bits/stdc++.h> #define debug(a,b) printf("%s = %d\n",a,b); #define ls (rt<<1) #define rs ((rt<<1)|1) typedef long long ll; using namespace std; //Fe~Jozky const ll INF_ll=1e18; const int INF_int=0x3f3f3f3f; inline ll read(){ll s=0,w=1ll;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')w=-1ll;ch=getchar();}while(ch>='0'&&ch<='9') s=s*10ll+((ch-'0')*1ll),ch=getchar();//s=(s<<3)+(s<<1)+(ch^48);return s*w; } const int maxn=3e5+9; int n,m,k; vector<int>vec[maxn]; struct tree{int l,r;int lazy;int sum; }tr[2][maxn]; void pushup(int op,int rt){tr[op][rt].sum=tr[op][ls].sum+tr[op][rs].sum; } void solve(int op,int rt,int val){tr[op][rt].sum=(tr[op][rt].r-tr[op][rt].l+1)*val;tr[op][rt].lazy=val; } void pushdown(int op,int rt){solve(op,ls,tr[op][rt].lazy);solve(op,rs,tr[op][rt].lazy);tr[op][rt].lazy=-1; } void build(int op,int rt,int l,int r){tr[op][rt].l=l;tr[op][rt].r=r;if(l==r){tr[op][rt].sum=0;tr[op][rt].lazy=-1;return ;}int mid=l+r>>1;build(op,ls,l,mid);build(op,rs,mid+1,r);pushup(op,rt); } void update(int op,int rt,int L,int R,int v){if(L>tr[op][rt].r||R<tr[op][rt].l)return ;if(L<=tr[op][rt].l&&tr[op][rt].r<=R){solve(op,rt,v);return ;}if(tr[op][rt].lazy!=-1)pushdown(op,rt);update(op,ls,L,R,v);update(op,rs,L,R,v);pushup(op,rt); } int query(int op,int rt,int L,int R){if(!tr[op][rt].sum)return INF_int;if(L>tr[op][rt].r||R<tr[op][rt].l)return INF_int;if(tr[op][rt].l==tr[op][rt].r)return tr[op][rt].l;if(tr[op][rt].lazy!=-1)pushdown(op,rt);if(L<=tr[op][rt].l&&tr[op][rt].r<=R){if(tr[op][ls].sum>0)return query(op,ls,L,R);else return query(op,rs,L,R);}return min(query(op,ls,L,R),query(op,rs,L,R)); } void init(){for(int i=1;i<=n;i++)vec[i].clear();memset(tr,0,sizeof(tr)); } int main() {//freopen("1008.in","r",stdin);int t=read();while(t--){scanf("%d%d%d",&n,&m,&k);init();for(int i=1;i<=k;i++){int x,y;scanf("%d%d",&x,&y);vec[x].push_back(y);}build(0,1,1,m);build(1,1,1,m);update(1,1,1,1,1);int op=0;ll ans=0;for(int i=1;i<=n;i++){int L=0;sort(vec[i].begin(),vec[i].end());int pos;for(int y:vec[i]){if(y-1>=L+1){pos=query(op^1,1,L+1,y-1);if(pos!=INF_int)update(op,1,pos,y-1,1);}L=y; }if(L+1<=m){pos=query(op^1,1,L+1,m);if(pos!=INF_int)update(op,1,pos,m,1);}ans+=tr[op][1].sum;update(op^1,1,1,m,0);op^=1;}printf("%lld\n",ans);}return 0; }

官方代碼:

#include<bits/stdc++.h> using namespace std; #define ls (x<<1) #define rs (x<<1|1) const int N = 1e5 + 5; const int inf = 0x3f3f3f3f; vector<int>e[N]; int tr[2][N << 2], lz[2][N << 2];void push_down(int f, int x, int l, int r, int mid) {if (lz[f][x] == -1)return;tr[f][ls] = lz[f][x] * (mid - l + 1);tr[f][rs] = lz[f][x] * (r - mid);lz[f][ls] = lz[f][rs] = lz[f][x];lz[f][x] = -1; } void update(int f,int x, int l, int r, int L, int R, int v) {if (L <= l && R >= r) {tr[f][x] = (r - l + 1) * v;lz[f][x] = v;return;}int mid = (l + r) >> 1;push_down(f, x, l, r, mid);if (R <= mid)update(f, ls, l, mid, L, R, v);else if (L > mid)update(f, rs, mid + 1, r, L, R, v);else {update(f, ls, l, mid, L, mid, v);update(f, rs, mid + 1, r, mid + 1, R, v);}tr[f][x] = tr[f][ls] + tr[f][rs]; } int query(int f, int x, int l, int r, int L, int R) {if (!tr[f][x])return inf;if (l == r)return l;int mid = l + r >> 1;push_down(f, x, l, r, mid);if (L <= l && R >= r) {if (tr[f][ls] > 0) return query(f, ls, l, mid, L, R);else return query(f, rs, mid + 1, r, L, R);}else {if (R <= mid)return query(f, ls, l, mid, L, R);else if (L > mid)return query(f, rs, mid + 1, r, L, R);else return min(query(f, ls, l, mid, L, mid), query(f, rs, mid + 1, r, mid + 1, R));} } int main() {int T;scanf("%d", &T);while (T--) {int n, m, k;scanf("%d %d %d", &n, &m, &k);for (int i = 1; i <= n; ++i)e[i].clear();for (int i = 1; i <= (m << 2); ++i) {tr[0][i] = tr[1][i] = 0;lz[0][i] = lz[1][i] = -1;}for (int i = 0; i < k; ++i) {int x, y;scanf("%d %d", &x, &y);e[x].push_back(y);}long long ans = 0;update(0, 1, 1, m, 1, 1, 1);for (int x = 1; x <= n; ++x) {int l = 0;sort(e[x].begin(), e[x].end());for (auto& y : e[x]) {if (y - 1 >= l + 1) {int pos = query((x & 1) ^ 1, 1, 1, m, l + 1, y - 1);if (pos != inf)update(x & 1, 1, 1, m, pos, y - 1, 1);}l = y;}if (l + 1 <= m) {int pos = query((x & 1) ^ 1, 1, 1, m, l + 1, m);if (pos != inf)update(x & 1, 1, 1, m, pos, m, 1);}ans += tr[x & 1][1];update((x & 1) ^ 1, 1, 1, m, 1, m, 0);}printf("%lld\n", ans);}return 0; }

總結

以上是生活随笔為你收集整理的Lawn of the Dead的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产露脸国语对白在线 | 日韩精品一 | 国产经典一区二区 | 一区二区导航 | 欧美久久久久 | 欧洲女性下面有没有毛发 | 国产一级片一区二区 | 欧美性一区二区三区 | 动漫美女隐私无遮挡 | 中文文字幕一区二区三三 | 欧美在线视频精品 | 雪花飘电影在线观看免费高清 | 女人天堂av | 欧美精品黄色 | 久久伊人草 | 欧美做受高潮中文字幕 | 国产情侣一区二区三区 | 色综合天天 | 91免费版在线 | 成人黄色三级视频 | 日本黄色三级 | 在线免费看av | 午夜视频污 | 9l蝌蚪porny中文自拍 | 激情综合站 | 国产乱视频 | www.成人.com | 日韩激情av | 国产精品久久久免费视频 | 久久噜噜噜精品国产亚洲综合 | 一本色道综合久久欧美日韩精品 | 午夜一区二区视频 | 亚洲欧美另类在线视频 | 放荡的少妇2欧美版 | 综合色久 | 日韩aa| 久久久新| 亚洲精品美女网站 | av官网| 国产人妻精品一区二区三区不卡 | 成人免费观看网站 | 日本成人在线网站 | 美女脱了裤子让男人桶 | 国产视频四区 | 少妇诱惑av | 在线黄色av| 国产精品www. | 三年中文在线观看免费观看 | 我看黄色一级片 | 性欧美成人播放77777 | 动漫av一区二区三区 | 四虎啪啪| 亚洲高清在线播放 | 日本特级黄色 | 亚洲一区二区三区在线视频观看 | 国产专区一区二区三区 | 在线观看日韩欧美 | 亚洲AV成人无码一二三区在线 | 日本人妻熟妇久久久久久 | 丹丹的呻吟声1一7 | 揉我啊嗯~喷水了h视频 | 本站只有精品 | 毛片h| 男女无遮挡网站 | 精品视频站长推荐 | 中国女人一级片 | 中国少妇高潮 | 制服丝袜先锋 | 无遮挡又爽又刺激的视频 | 无码人妻aⅴ一区二区三区日本 | 黄色成人在线免费观看 | 亚洲色图1 | 超碰在线亚洲 | 国产伦精品一区二区三区在线观看 | 五月婷婷伊人网 | 亚洲人人插 | 调教一区二区三区 | 亚洲综合欧美日韩 | 操操操综合 | 精品欧美一区二区三区免费观看 | 久热精品免费视频 | 夜色网 | 91手机在线视频 | 在线观看黄色av网站 | 在线观看v片| 亚洲理论片 | 男女黄色录像 | 成人网在线免费观看 | 阿的白色内裤hd中文 | 人人妻人人澡人人爽欧美一区 | 精品成在人线av无码免费看 | 日韩精品1区2区3区 欧美一本 | 国产色图片 | 国产成人精品一区二区三区在线观看 | 男人靠女人免费视频网站 | 免费成人91 | 超碰狠狠干 | 一区二区三区免费在线 | 扒开jk护士狂揉免费 |