time limit:1000ms
memory limit:65536k
total submissions:77
accepted:10
description
隨著yyhs的oi集訓隊人數急劇增加,原有的小機房已經容納不了數量龐大的隊員。
於是史老師決定租用一些實驗室機位供隊員們訓練,他正在考慮為n (1 <= n <= 50,000)位隊員租用機位。實驗室管理員根據要求給出了n個機位的長和寬,每個機位的長寬滿足(1 <= 寬 <= 1,000,000; 1 <= 長 <= 1,000,000).
而機位的租用**是它的面積,實驗室管理員也提出,可以同時租用多個機位. 租用這一組機位的**是它們最大的長乘以它們最大的寬, 但是機位的長寬不能交換. 如果想租下乙個3x5的機位和乙個5x3的機位,則他需要付5x5=25.
於是問題出現了,史老師希望租下所有的機位,但是他發現分組來租這些機位可以節省經費. 他需要你幫助他找到最小的經費.
input
* 第1行: 乙個數: n
* 第2..n+1行: 每行包含兩個數,分別為機位的長和寬
output
* 第一行: 最小的可行費用.
sample input
4100 1
15 15
20 5
1 100
sample output
這題如果是用n*n的dp,會超時,所以要用斜率優化,和hdu3669差不多的思路。#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;
#define ll long long
#define inf 999999999999999999
#define maxn 50050
struct nodea[maxn],b[maxn];
bool cmp(node a,node b)
ll dp[maxn];
ll q[1111111];
ll getup(int x)
ll getdown(int x)
int main()
sort(a+1,a+1+n,cmp);
tot=1;b[tot].w=a[1].w;b[tot].h=a[1].h;
for(i=2;i<=n;i++)
int front,rear;
front=1;rear=1;
q[rear]=0;
for(i=1;i<=tot;i++)
rear++;
q[rear]=i;
}printf("%lld\n",dp[tot]);
}return 0;
}
1189 階乘分數
1189 階乘分數 基準時間限制 1 秒 空間限制 131072 kb 1 n 1 x 1 y 0,給出n,求滿足條件的整數解的數量。例如 n 2,1 2 1 3 1 6,1 2 1 4 1 4。由於數量可能很大,輸出mod 10 9 7。input 輸入乙個數n 1 n 1000000 outpu...
zjnu 1182 能量項鍊
這道題和石子歸併其實是同樣的題目。題意 那邊寫的不是很清楚 首先給你n個珠子,每個珠子都有兩個屬性,分別是頭標記與尾標記,然後分別給出n個數,分別代表的是這些珠子的頭標記。前一顆珠子的尾標記一定等於後一顆珠子的頭標記。如果前一顆能量珠的頭標記為m,尾標記為r,後一顆能量珠的頭標記為r,尾標記為n,則...
ZJNU 1067 約瑟夫 中級
打表處理 case 1超時 對m進行列舉,每次列舉進行一次判斷 因為好人壞人均為k個,那麼只要讓下乙個死亡的人的位置p保證在1 剩餘壞人數量之間即可,不滿足則直接break列舉下乙個m 實際上對於m,因為m必須是 2kc 1,2kc k c n 之間的數,所以還能再優化,但下面的 已經能夠在78ms...