noip day1 2
一道有點難的貪心(蒟蒻看法,神犇勿怪)
首先可以發現,必然存在一種排列使最大值最小,現在我們假設得到了這個排列,任取其中兩個相鄰點,將其交換,結果必然不會更優,依據題目描述,在其前方的點的結果不會改變,後方也是一樣。設該店為i,i之前所有點之積為sumi,該位大臣得到金錢為pi,則有
pi=sumi/bi
p(i+1) = sum(i+1)/b(i+1) = sumi*ai/b(i+1) = pi*ai*bi/b(i+1)
由於b(i+1)為定值,可知若ai*bi最小,則p(i+1)最小,於是我們用ai*bi來排序,即可出解。
此題需用高精度。
下面附上程式碼(蒟蒻初學,不好勿怪):
#include <iostream>
#include <cstdio>
#include <fstream>
#include <algorithm>
#include <cstring>
using namespace std;
const int maxn=1010;
struct node
{
long long x,y;
bool operator <(node t)const {
return x*y<t.x*t.y;
}
}f[maxn];
struct ex //壓位高精
{
int num[4*maxn];
void operator *=(const int t) {
int k=num[0];
for(int i=1;i<=k;i++)
num[i]*=t;
for(int i=1;i<=k;i++) {
num[i+1]+=num[i]/10000;
num[i]%=10000;
}
k=num[0]+1;
while(num[k]>0) {
num[k+1]=num[k]/10000;
num[k]%=10000;
k++;
}
k--;
if(num[0]<k) num[0]=k;
}
void operator /=(const int t) {
int k=0;
for(int i=num[0];i>=1;i--) {
k=k*10000+num[i];
num[i]=k/t;
k%=t;
}
for(int i=2;i<=num[0];i++) {
num[i-1]+=num[i]*10000;
num[i]=num[i-1]/10000;
num[i-1]%=10000;
}
k=num[0];
while(num[k]==0) k--;
num[0]=k;
}
bool cmp(ex t) const {
if(num[0]!=t.num[0]) return num[0]<t.num[0];
else {
for(int i=num[0];i>=1;i--)
if(num[i]!=t.num[i]) return num[i]<t.num[i];
}
return false;
}
}res,ans;
int n;
long long a,b;
int main()
{
freopen("game.in","r",stdin);
freopen("game.out","w",stdout);
scanf("%d",&n);
cin>>a>>b;
for(int i=1;i<=n;i++)
scanf("%lld%lld",&f[i].x,&f[i].y);
sort(&f[1],&f[n+1]); //按ai*bi排序
memset(res.num,0,sizeof(res.num));
memset(ans.num,0,sizeof(ans.num));
ans.num[0]=1;
res.num[0]=res.num[1]=1;
res*=a;
for(int i=1;i<=n;i++) {
ex t=res;
t/=f[i].y;
if(ans.cmp(t)) ans=t;
res*=f[i].x;
}
printf("%d",ans.num[ans.num[0]]);
for(int i=ans.num[0]-1;i>=1;i--)
printf("%04d",ans.num[i]);
printf("\n");
return 0;
}
相關文章
- NOIP模擬賽2
- 【CH Round #48 - Streaming #3(NOIP模擬賽Day1)】 題解
- 2_13day123D
- NOIP2013Day1T3 表示只能過一個點3D
- NOIp2017Day2T1 乳酪
- NOIP數學
- NOIP2011.day2.觀光公交 題解
- 【NOIP2013 day2】華容道 題解
- NOIP模擬50
- NOIP模擬57
- NOIP模擬74
- NOIP模擬76
- NOIP模擬77
- NOIP模擬66
- day131:2RenMJ:2RenMJ遊戲簡介&部署MJ專案到本地遊戲
- Python Day1Python
- Laravel 框架 day1Laravel框架
- MySQL day10MySql
- Java day10Java
- Java day14Java
- day11-模組
- day11 Xpath
- 問題 D: NOIP2004普及組第2題 花生採摘
- NOIP2016
- noip模擬34[慘敗]
- 備戰noip week8
- noip刷題筆記1筆記
- NOIP2013花匠
- Day11:request庫
- Day11 go unnoticedGo
- Learning Java day1Java
- Vue.js - Day1Vue.js
- day14-jsonJSON
- 自專案Day1
- day14-JdbcTemplate-01JDBC
- Numpy學習 Day1
- day12- 函式函式
- noip模擬31[time·game·cover]GAM