Moving Tables POJ - 1083 (思維)
阿新 • • 發佈:2018-12-12
題目大意
在一層樓上推桌子,每個空間一次只能推1種桌子,且消耗十分鐘。可以同時推多個桌子,但是他們所佔的空間不能是相交的如圖
解法
真的很考驗思維能力,首先考慮到這個走廊是有兩排的,我瞬間想到了宿舍樓。。。
發現1 2是對著的3 4是對著的一個空間而2 3是兩個空間這該怎麼辦好呢?
我們可以把他們化成1 2這種格式,即奇數左邊界偶數右邊界,即小的如果是偶數那麼-1大的邊界如果是奇數那麼加一2 3可以化解成1 4是兩個空間了,然後計算最大重複空間即可了
程式碼
#include <iostream> #include <algorithm> #include <cstring> using namespace std; int bk[1000]; int main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int t; cin>>t; while(t--) { memset(bk,0,sizeof(bk)); int n; cin>>n; for(int i=0;i<n;i++) { int t1,t2; cin>>t1>>t2; if(t1>t2) swap(t1,t2); if(t1%2==0) t1--; if(t2%2==1) t2++; for(int i=t1;i<=t2;i++) bk[i]++; } int maxn=-1; for(int i=1;i<=400;i++) maxn=max(maxn,bk[i]); cout<<maxn*10<<"\n"; } }