題意:
在乙個賓館裡把乙個桌子從乙個房間i移到房間j但是在移動的過程中房間i和房間j之間的走廊會被占用。每一次的移動需要10鐘的時間,問把所有的桌子移動完畢至少需要多長時間。
思路:這是一道貪心演算法的題目,把每乙個桌子的移動按起始房間編號排序(這裡規定起始房間的編號小於目的房間的編號)
然後採取貪心策略,假設cur代表的是第cur個桌子的移動那麼對於其他的桌子i只要i滿足桌子i還沒有被移動,並且桌子i的移動不會和桌子cur的移動造成衝突。那麼這兩個桌子就可以同時移動。以此類推掃瞄整個陣列即可。下面是通過的**:
#include #include #include #include #include using namespace std;
const int maxn = 1000+10, inf = -100000;
typedef struct
node;
node a[maxn];
bool visit[maxn];
bool cmp(node x, node y)
int max(int x, int y)
int min(int x, int y)
int main()
sort(a+1,a+n+1,cmp);
memset(visit,false,sizeof(visit));
int count1 = 0,ans = 0;
while(count1 < n)
}if(a[i].s%2)}}
}printf("%d\n",ans);
}return 0;
}
HDU 1050 搬椅子 數學
題意是在乙個有 400 個房間的走廊中搬動房間裡的椅子,如果兩次的路線重疊,就要分兩次搬動,如果不重疊,就可以一次搬動。開始的時候直接當成求線段重疊條數的題,發現這種思路完全是錯的,比如 1 3,2 4,3 5 這一組,只需搬動兩次即可,但找重疊線段的話就會找到 3 條重疊線段。然後打算直接模擬做,...
hdu3790解題報告
這裡起點和終點都是確定的,唯一有點小麻煩 也算不上什麼麻煩 就是這裡的權值有兩個,錢和路長,題目要求選擇最短路,對於一樣長度的路選擇錢最少的路.那麼我們每次就對路長鬆弛,對於路長一樣的在對錢鬆弛.不懂鬆弛操作的很抱歉 ac 840k 109ms include includeusing namesp...
hdu2647解題報告
題意 有個工廠的老闆給工人發獎金,每人基礎都是888,工人們有自己的想法,如 a 工人想要比 b 工人的獎金高,老闆想要使花的錢最少 那麼就可以 給b 888,給a 889 但是如果在此基礎上,b也想比a高,那麼就不能讓他們滿意,輸出 1 分析,根據題意可以得出乙個拓撲的關係,比如 一組資料 4 4...