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
- 2_13day123D
- 【CH Round #48 - Streaming #3(NOIP模擬賽Day1)】 題解
- [62] (NOIP 集訓) NOIP2024加賽 2
- NOIP2013Day1T3 表示只能過一個點3D
- 【題解】Solution Set - NOIP2024集訓Day14 CDQ分治
- NOIP 十三連測 #2 補題
- NOIP2024模擬2
- [NOIP 2024 模擬2]表
- 拓撲AC NOIP模擬賽2
- 【題解】Solution Set - NOIP2024集訓Day18 最佳化建圖
- 【題解】Solution Set - NOIP2024集訓Day10 樹的直徑、重⼼、中⼼
- NOIp2017Day2T1 乳酪
- [DMY]2024 NOIP 模擬賽 Day 2
- [NOIP 2024 模擬2]陣列操作陣列
- 【題解】Solution Set - NOIP2024集訓Day12 樹上啟發式合併
- [NOIP 2024 模擬2]矩陣學說矩陣
- day1
- noip題
- NOIP2011.day2.觀光公交 題解
- 【NOIP2013 day2】華容道 題解
- 【題解】Solution Set - NOIP2024模擬賽2
- [2024.11.11]NOIP模擬賽T2
- day11
- day16
- day19
- NOIP數學
- Noip 複習
- NOIP 加塞 5
- day131:2RenMJ:2RenMJ遊戲簡介&部署MJ專案到本地遊戲
- Python Day1Python
- Laravel 框架 day1Laravel框架
- MySQL day10MySql
- Java day10Java
- Java day14Java
- day15 反射反射
- Day10-域名
- Day11-Scanner