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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

牛客第六场 H-Hopping Rabbit

發布時間:2025/3/12 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 牛客第六场 H-Hopping Rabbit 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

牛客第六場 H-Hopping Rabbit

給出平面上的n個矩形,一只兔子從(x0+0.5,y0+0.5)(x_0+0.5,y_0+0.5)(x0?+0.5,y0?+0.5)出發,每一次可以平行于x軸或y軸跳躍d的距離,求出一個初始位置使得不管怎么跳都不會跳入到矩形中。
數據范圍n,d<=1e5,平面坐標在-1e9到1e9當中

容易想到轉化,變為了這樣的問題:在一個d*d的矩陣當中進行矩形覆蓋,求出最后有沒有點沒有被覆蓋到,如果存在則求出它。

但是這個問題卡住了,最后沒有想出來做法。后面聽說了線段樹的解決方法,覺得這類型的方法值得去研究一下。

對于每個矩形,取出其上邊和下邊,然后從下往上遍歷,遇到一個下邊,便在線段樹的(x1, x2)區間進行+1;遇到一個上邊,邊-1。在操作之后,如果線段樹的最小值的0的話,那么說明這一行上有一個空格,這里就可以作為初始位置。

這個題有點碼,不過都是比較基礎的,還算是好寫。

#include <bits/stdc++.h> using namespace std;const int N = 1e5 + 10, inf = 1e9; int n, k, tot = 0;struct trap {int x1, y1, x2, y2; }; trap a[N << 2];struct line {int y, l, r;bool flag; }; line b[N << 3];trap build(int x1, int y1, int x2, int y2) {trap temp;temp.x1 = x1;temp.y1 = y1;temp.x2 = x2;temp.y2 = y2;return temp; }line buildline(int y, int l, int r, bool flag) {line temp;temp.y = y;temp.l = l;temp.r = r;temp.flag = flag;return temp; }inline int mo(long long x) {x = (x + (long long)k * inf) % k;if (x == 0) x = k;return x; }struct tree {int l, r, mn, lazy; }; tree t[N << 2];void buildtree(int l, int r, int x) {t[x].l = l; t[x].r = r;t[x].mn = t[x].lazy = 0;if (l == r) return;int mid = (l + r) >> 1;buildtree(l, mid, x << 1);buildtree(mid + 1, r, x << 1 | 1);return; }void pushdown(int x) {t[x << 1].mn += t[x].lazy;t[x << 1].lazy += t[x].lazy;t[x << 1 | 1].mn += t[x].lazy;t[x << 1 | 1].lazy += t[x].lazy;t[x].lazy = 0; }int query(int l, int r, int x) {if (l <= t[x].l && t[x].r <= r)return t[x].mn;if (l > t[x].r || t[x].l > r)return inf;if (t[x].lazy != 0)pushdown(x);return min(query(l, r, x << 1), query(l, r, x << 1 | 1)); }void change(int l, int r, int x, int d) {if (l <= t[x].l && t[x].r <= r){t[x].mn += d;t[x].lazy += d;return;}if (l > t[x].r || t[x].l > r)return;if (t[x].lazy != 0)pushdown(x);change(l, r, x << 1, d);change(l, r, x << 1 | 1, d);t[x].mn = min(t[x << 1].mn, t[x << 1 | 1].mn); }bool cmp(const line &a, const line &b) {return a.y < b.y; }int main() {//freopen("in.txt", "r", stdin);ios::sync_with_stdio(false);cin.tie(0);int T = 1;//cin >> T;while (T --){bool flag = false;cin >> n >> k;buildtree(1, k, 1);for (int i = 1; i <= n; i ++){int x1, y1, x2, y2;cin >> x1 >> y1 >> x2 >> y2;if (y2 - y1 >= k && x2 - x1 >= k)flag = true;else{if (y2 - y1 >= k){x1 = mo(x1); x2 = mo(x2 - 1);if (x1 <= x2)a[++ tot] = build(x1, 1, x2, k);else{a[++ tot] = build(x1, 1, k, k);a[++ tot] = build(1, 1, x2, k);}}else if (x2 - x1 >= k){y1 = mo(y1); y2 = mo(y2 - 1);if (y1 <= y2)a[++ tot] = build(1, y1, k, y2);else{a[++ tot] = build(1, y1, k, k);a[++ tot] = build(1, 1, k, y2);}}else{x1 = mo(x1); x2 = mo(x2 - 1); y1 = mo(y1); y2 = mo(y2 - 1);if (x1 <= x2){if (y1 <= y2)a[++ tot] = build(x1, y1, x2, y2);else{a[++ tot] = build(x1, y1, x2, k);a[++ tot] = build(x1, 1, x2, y2);}}else{if (y1 <= y2){a[++ tot] = build(x1, y1, k, y2);a[++ tot] = build(1, y1, x2, y2);}else{a[++ tot] = build(x1, y1, k, k);a[++ tot] = build(1, y1, x2, k);a[++ tot] = build(x1, 1, k, y2);a[++ tot] = build(1, 1, x2, y2);}}}}}if (flag){cout << "NO";return 0;}for (int i = 1; i <= tot; i ++){b[i * 2 - 1] = buildline(a[i].y1, a[i].x1, a[i].x2, 1);b[i * 2] = buildline(a[i].y2 + 1, a[i].x1, a[i].x2, 0);}sort (b + 1, b + 2 * tot + 1, cmp);int p = 1;for (int i = 1; i <= k; i ++){while (b[p].y == i){if (b[p].flag)change(b[p].l, b[p].r, 1, 1);elsechange(b[p].l, b[p].r, 1, -1);p ++;}int mn = t[1].mn;if (mn == 0){for (int j = 1; j <= k; j ++){if (query(j, j, 1) == 0){cout << "YES\n";cout << j << " " << i;return 0;}}}}cout << "NO";}return 0; }

總結

以上是生活随笔為你收集整理的牛客第六场 H-Hopping Rabbit的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 男人的天堂在线 | 国产精品视频专区 | 一区二区在线视频播放 | 国内精品久久久久久久久久 | 可以看的av网址 | 国产精品成人午夜视频 | 亚洲一级黄色片 | 狠狠撸在线观看 | 婷婷去俺也去 | 亚洲91精品 | 欧美三级免费看 | 91精彩视频在线观看 | 亚洲天堂aaa| 波多野结衣一级 | 无码人妻精品一区二区三区温州 | 宝贝乖h调教灌尿穿环 | 日韩啪 | 亚洲乱码在线 | 91丨porny丨| 九色porn | 成人刺激视频 | 国产亚洲精品久久久久婷婷瑜伽 | 精品国产一区二区三区在线观看 | 色老妹| 丁香啪啪综合成人亚洲 | 男女av| 日韩专区视频 | 黄色片在线免费观看 | 99日韩| 日韩有码视频在线 | 免费成人高清视频 | 精品欧美一区二区精品少妇 | 黄色片女人 | 国产原创av在线 | 黄色片成人 | 成人免费在线播放 | 精品人妻一区二区三区蜜桃视频 | 18禁一区二区| 日韩福利视频在线观看 | 亚洲性少妇| 三上悠亚亚洲一区 | 好色先生视频污 | 2021亚洲天堂| 97免费在线 | 国产调教视频在线观看 | 欧洲亚洲天堂 | 成片免费观看 | 欧洲亚洲国产精品 | 亚av在线| 国产精品久线在线观看 | 国产香蕉视频在线播放 | 欢乐谷在线观看免费播放高清 | 中文字幕少妇在线三级hd | 久久久免费精品视频 | 少妇毛片一区二区三区粉嫩av | 久久久精品一区二区涩爱 | 成人午夜免费福利 | 亚洲一二三四区 | 插骚| www.久久久久久 | wwwwww色| 一区二区三区免费毛片 | 黄色的视频网站 | www国产精品内射老熟女 | 欧美美女网站 | 激情文学综合网 | 欧美日韩国产专区 | 亚洲激情在线视频 | 日本网站在线看 | 青青草国产精品视频 | 香蕉av网站| 国产伦精品一区二区三区免费迷 | a视频在线 | 久久一级大片 | 古代玷污糟蹋np高辣h文 | 毛片一卡二卡 | 国产精品51麻豆cm传媒 | 欧美性猛交7777777 | 欧美日韩视频一区二区三区 | 原神淫辱系列同人h | 人妖天堂狠狠ts人妖天堂狠狠 | 久久精品99久久久久久久久 | 欧美日韩亚洲综合 | 影音先锋成人资源网 | 日韩精品中文字幕在线观看 | 18av视频| 尤物视频在线 | 多啪啪免费视频 | 丰满少妇久久久久久久 | 国产无套在线观看 | 香蕉久久久久 | 欧美日韩一区二区三区电影 | 中文字幕不卡在线播放 | 精品人妻互换一区二区三区 | av中文字幕第一页 | 香蕉久久夜色精品国产使用方法 | 一个综合色| 男人视频网 | 日韩avxxx|