恰逢 h國國慶,國王邀請n位大臣來玩乙個有獎遊戲。首先,他讓每個大臣在左、右手上面分別寫下乙個整數,國王自己也在左、右手上各寫乙個整數。然後,讓這 n 位大臣排成一排,國王站在隊伍的最前面。排好隊後,所有的大臣都會獲得國王獎賞的若干金幣,每位大臣獲得的金幣數分別是:排在該大臣前面的所有人的左手上的數的乘積除以他自己右手上的數,然後向下取整得到的結果。
國王不希望某乙個大臣獲得特別多的獎賞,所以他想請你幫他重新安排一下隊伍的順序,使得獲得獎賞最多的大臣,所獲獎賞盡可能的少。注意,國王的位置始終在隊伍的最前面。
輸入格式:
第一行包含乙個整數n,表示大臣的人數。
第二行包含兩個整數 a和 b,之間用乙個空格隔開,分別表示國王左手和右手上的整數。
接下來 n行,每行包含兩個整數a 和 b,之間用乙個空格隔開,分別表示每個大臣左手和右手上的整數。
輸出格式:
乙個整數,表示重新排列後的隊伍中獲獎賞最多的大臣所獲得的金幣數。
輸入輸出樣例
輸入樣例#1:複製
3
1 1
2 3
7 4
4 6
輸出樣例#1:複製
2
【輸入輸出樣例說明】
按1、2、3 這樣排列隊伍,獲得獎賞最多的大臣所獲得金幣數為 2;
按 1、3、2 這樣排列隊伍,獲得獎賞最多的大臣所獲得金幣數2;
按 2、1、3 這樣排列隊伍,獲得獎賞最多的大臣所獲得金幣數為 2;
按2、3、1這樣排列隊伍,獲得獎賞最多的大臣所獲得金幣數為9;
按 3、1、2這樣排列隊伍,獲得獎賞最多的大臣所獲得金幣數為 2;
按3、2、1 這樣排列隊伍,獲得獎賞最多的大臣所獲得金幣數為 9。
因此,獎賞最多的大臣最少獲得 2個金幣,答案輸出 2。
【資料範圍】
對於 20%的資料,有 1≤ n≤ 10,0 < a,b < 81≤n≤10,0對於 40%的資料,有1≤ n≤20,0 < a,b < 81≤n≤20,0對於 60%的資料,有 1≤ n≤1001≤n≤100;
對於 60%的資料,保證答案不超過 10^9109;
對於 100%的資料,有 1 ≤ n ≤1,000,0 < a,b < 100001≤n≤1,000,0noip 2012 提高組 第一天 第二題
#include #include #include #include #include #include #include #include #include using namespace std;
struct biginteger
biginteger(ll num = 0)
biginteger(string s)
biginteger& operator = (long long num) while (num > 0);
return *this;
} biginteger& operator = (const string& str)
return (*this).clean();
} biginteger operator * (const biginteger& b) const
return c.clean();
} biginteger operator / (const biginteger& b) const
return c.clean();
} biginteger operator - (const biginteger& b) const else g = 0;
c.s.push_back(x);
} return c.clean();
} int bsearch(const biginteger& b, const biginteger& m) const else r = x;
} }bool operator >(const biginteger& b) const
bool operator<=(const biginteger& b) const
bool operator < (const biginteger& b) const
biginteger operator + (const biginteger& b) const
return c;
}};ostream& operator << (ostream& out, const biginteger& x)
return out;}
istream& operator >> (istream& in, biginteger& x)
#define ll biginteger
typedef struct node;
node a[1010];
bool mycmp(node a,node b)
sort(a+1,a+n+1,mycmp);
ll temp,t;
t=a[0].l;
for(int i=1; i<=n; i++) //沒有這行會報錯
minister(int a,int b):l(a),r(b),rank(a*b) //結構體的初始化
bool operator <(const minister &x)const// 定義一下大小規則
//等會直接 sort
}a[n];
struct int_l
int_l(int x)
data[0] = --i;// 這裡位數不能錯
}int_l operator *(const int &x)
a.data[len] ? a.data[0] = len : a.data[0] = --len;
return a;
}int_l operator /(const int &x)
while (!a.data[a.data[0]] && a.data[0]>1) a.data[0]--; //去掉多餘的 0
return a;
}bool operator <(const int_l &x)const
else return data[0] < x.data[0];
}};ostream& operator << (ostream& out, const int_l &x)
int n, x, y;
int_l ans;
//int_l x,y;
int main()
ios::sync_with_stdio(false);
cin>>n;
ft(i,0,n)
sort(a+1,a+n+1);
int_l k(1);
ft(i,1,n)
cout
}
洛谷P1080 國王遊戲 高精度
題目鏈結 題目描述恰逢 h h 國國慶,國王邀請 n role presentation n n 位大臣來玩乙個有獎遊戲。首先,他讓每個大臣在左 右手上面分別寫下乙個整數,國王自己也在左 右手上各寫乙個整數。然後,讓這 n n 位大臣排成一排,國王站在隊伍的最前面。排好隊後,所有的大臣都會獲得國王獎...
P1080 國王遊戲 題解(高精度乘除 貪心)
p1080 國王遊戲 題解 題目描述 恰逢 hh國國慶,國王邀請nn 位大臣來玩乙個有獎遊戲。首先,他讓每個大臣在左 右手上面分別寫下乙個整數,國王自己也在左 右手上各寫乙個整數。然後,讓這 nn 位大臣排成一排,國王站在隊伍的最前面。排好隊後,所有的大臣都會獲得國王獎賞的若干金幣,每位大臣獲得的金...
P1080 國王遊戲
題目描述 恰逢 h h國國慶,國王邀請 nn 位大臣來玩乙個有獎遊戲。首先,他讓每個大臣在左 右手上面分別寫下乙個整數,國王自己也在左 右手上各寫乙個整數。然後,讓這 nn 位大臣排成一排,國王站在隊伍的最前面。排好隊後,所有的大臣都會獲得國王獎賞的若干金幣,每位大臣獲得的金幣數分別是 排在該大臣前...