1. 程式人生 > >Codeforces 320B Ping-Pong (Easy Version)

Codeforces 320B Ping-Pong (Easy Version)

題意:先輸入n,接下來輸入n行,每行輸入三個數,q,a,b,若q==1,則新增一個區間(a,b)。若q==2,表示查詢第a個區間能否到達第b個區間。注意: 區間a:(x,y)能到區間b(c,d)的條件是:

c < x < d || c < y < d

這個條件有些特殊,一旦從一個小區間進入一個包含它的大區間後就不能再進入它包含的任何一個小區間了。

思路:因為n數量級不大,才100。直接dfs。但需要注意,搜的時候回溯條件不需要改變,因為對每次查詢的vis[i]表示是否存在一條路從a到i,若存在就不需要繼續重複搜了。

#include <iostream>
#include <iomanip> #include <cstdio> #include <algorithm> #include <cmath> #include <queue> #include <vector> #include <stack> #include <string> #include <cstring> #include <cassert> using namespace std; typedef long long ll; const int maxn=2222
; const int INF=0x7fffffff; const int mod=1e7+7; #define LSON l,m,rt<<1 #define RSON m+1,r,rt<<1|1 #define ESP 1e-7 struct point { int l,r; }; point p[111]; int n,sum; bool vis[111]; bool check(int a, int b) {//判斷區間a能否到區間b if(p[a].l>p[b].l && p[a].l<p[b].r) return
true; else if(p[a].r>p[b].l && p[a].r<p[b].r) return true; return false; } bool dfs(int now, int ed) { if(now==ed) { return true; } for(int i=1;i<sum;i++) { if(check(now, i) && !vis[i]) { vis[i]=true; if(dfs(i, ed)) return true; } } return false; } int main() { scanf("%d", &n); sum=1; for(int cc=0;cc<n;cc++) { int order; scanf("%d", &order); if(order==1) { scanf("%d%d", &p[sum].l, &p[sum].r); sum++; } else { int a,b; scanf("%d%d", &a, &b); for(int i=1;i<sum;i++) vis[i]=false; vis[a]=true; if(dfs(a, b)) printf("YES\n"); else printf("NO\n"); } } return 0; }

相關推薦

Codeforces 320B Ping-Pong (Easy Version)

題意:先輸入n,接下來輸入n行,每行輸入三個數,q,a,b,若q==1,則新增一個區間(a,b)。若q==2,表示查詢第a個區間能否到達第b個區間。注意: 區間a:(x,y)能到區間b(c,d)的條件是: c < x < d || c &

Round #189 (Div.2) B. Ping-Pong (Easy Version)

In this problem at each moment you have a set of intervals. You can move from interval (a, b) from our set to interval (c, d) from our set if and only if

Codeforces 319E Ping-Pong (線段樹+dsu)

#include <iostream> #include <cstdio> #include <cstring> #include <cmath> #include <vector> #include <qu

Codeforces 1077F1 Pictures with Kittens (easy version)(DP)

題目連結:Pictures with Kittens (easy version) 題意:給定n長度的數字序列ai,求從中選出x個滿足任意k長度區間都至少有一個被選到的最大和。 題解:$dp[i][j]$:以i為結尾選擇j個數字的最大和。 $dp[i][j]=max(dp[i][j],dp[s][j-1

Codeforces Round #540 (Div. 3)--1118D1 - Coffee and Coursework (Easy version)

sort version 最大的 round 容量 rbegin off 咖啡 easy https://codeforces.com/contest/1118/problem/D1 能做完的天數最大不超過n,因為假如每天一杯咖啡,每杯咖啡容量大於1 首先對容量進行從大

Codeforces 1108E1】Array and Segments (Easy version)

n+1 ont namespace 包含 long using define return com 【鏈接】 我是鏈接,點我呀:) 【題意】 題意 【題解】 枚舉最大值和最小值在什麽地方。 顯然,只要包含最小值的區間,都讓他減少。 因為就算那個區間包含最大值

Saving James Bond - Easy Version 原創 2017年11月23日 13:07:33

oid nta roc bottom ++ lan was html 技術分享 06-圖2 Saving James Bond - Easy Version(25 分) This time let us consider the situation in the m

06-圖2 Saving James Bond - Easy Version(25 分)

next ted disk side || finall sizeof col reac This time let us consider the situation in the movie "Live and Let Die" in which James Bond,

UVA12569-Planning mobile robot on Tree (EASY Version)(BFS+狀態壓縮)

print imu pop ret int height rst next c++ Problem UVA12569-Planning mobile robot on Tree (EASY Version) Accept:138 Submit:686 Time Limi

C語言 06-圖2 Saving James Bond - Easy Version

This time let us consider the situation in the movie “Live and Let Die” in which James Bond, the world’s most famous spy, was captured by a grou

【待完善】UVALive-4329:Ping pong

UVALive-4329:Ping pong 來源:UVALive 標籤:樹狀陣列 參考資料: 相似題目: 題目 N (3 ≤ N ≤ 20000) ping pong players live along a west-east st

UVA1428 【Ping pong】乒乓球

題意:一條大街上住著n個乒乓球愛好者,經常組織比賽切磋技術。每個人都有一個不同的技能值a[i]。每場比賽需要3個人:兩名選手,一名裁判。他們有一個奇怪的規定,即裁判住在兩名選手中間,並且技能值也在兩名選手之間。問一共能組織多少種比賽。解法:設a[1]->a[i-1]有c[i]個比a[i]小;設a[i+1

ZOJ - 3867——Earthstone: Easy Version

Earthstone is a famous online card game created by Lizard Entertainment. It is a collectible card game that revolves around turn-based matches between

資料結構-圖-C語言-PTA-Saving James Bond - Easy Version

Data Structures and Algorithms (English) 7-10 Saving James Bond - Easy Version 以下為自己寫的版本,難過的是測試點2無法通過 #include <stdio.h> #include <

06-圖2 Saving James Bond - Easy Version (25 分)

  #include<cstdio> int const maxn=110; int N, D, answer; int visit[maxn]; struct point{ int x, y; }arr[maxn]; //三種結點 原點、鱷魚、岸邊 int J

A - Ping pong(樹狀陣列+順序對)

Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) Total Submission(s) : 81   Accepted Sub

F1. Pictures with Kittens (easy version)【暴力】

題目連結 F1. Pictures with Kittens (easy version) time limit per test 2 seconds memory limit per test 256 megabytes input standard input o

Planning mobile robot on Tree (EASY Version) UVA

感謝這位博主,學了很多,程式碼相當優秀 很有難度的一道題 思路的確不難,就是bfs搜尋,但是具體實現起來還是很花時間的,資料結構還是比較好表示的,但是直接用結構體來表示石頭和機器人位置會會超時,所以需要用到狀態壓縮 程式碼在原來的基礎上加了部分註釋,方便回顧時理解

UVA - 12569 Planning mobile robot on Tree (EASY Version) BFS

題意:有一顆n個節點的樹,其中一個節點有機器人,指定m個節點有障礙物,指定終點,問最少需要移動多少步才能到達,移動過程中遇到障礙物需要將其移動到空地。 分析:bfs搜尋,是每次都對障礙物進行移動,將障礙物移動到空閒地方,如果是機器人移動就需要更新位置。 障礙物位置用二進位制儲存,方便查詢,更

3867——Earthstone: Easy Version

Earthstone is a famous online card game created by Lizard Entertainment. It is a collectible card game that revolves around turn-based mat