亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

BZOJ 1492 [NOI2007 D1T2] 貨幣兌換Cash

2019-11-06 08:20:51
字體:
來源:轉載
供稿:網友

Description

小Y最近在一家金券交易所工作。該金券交易所只發行交易兩種金券:A紀念券(以下簡稱A券)和 B紀念券(以下簡稱B券)。每個持有金券的顧客都有一個自己的帳戶。金券的數目可以是一個實數。每天隨著市場的起伏波動,兩種金券都有自己當時的價值,即每一單位金券當天可以兌換的人民幣數目。我們記錄第 K 天中 A券 和 B券 的價值分別為 AK 和 BK(元/單位金券)。為了方便顧客,金券交易所提供了一種非常方便的交易方式:比例交易法。比例交易法分為兩個方面:(a)賣出金券:顧客提供一個 [0,100] 內的實數 OP 作為賣出比例,其意義為:將 OP% 的 A券和 OP% 的 B券 以當時的價值兌換為人民幣;(b)買入金券:顧客支付 IP 元人民幣,交易所將會兌換給用戶總價值為 IP 的金券,并且,滿足提供給顧客的A券和B券的比例在第 K 天恰好為 RateK;例如,假定接下來 3 天內的 Ak、Bk、RateK 的變化分別為:假定在第一天時,用戶手中有 100元 人民幣但是沒有任何金券。用戶可以執行以下的操作:注意到,同一天內可以進行多次操作。小Y是一個很有經濟頭腦的員工,通過較長時間的運作和行情測算,他已經知道了未來N天內的A券和B券的價值以及Rate。他還希望能夠計算出來,如果開始時擁有S元錢,那么N天后最多能夠獲得多少元錢。

Input

輸入第一行兩個正整數N、S,分別表示小Y能預知的天數以及初始時擁有的錢數。接下來N行,第K行三個實數AK、BK、RateK,意義如題目中所述。對于100%的測試數據,滿足:0<AK≤10;0<BK≤10;0<RateK≤100;MaxPRofit≤10^9?!咎崾尽?.輸入文件可能很大,請采用快速的讀入方式。2.必然存在一種最優的買賣方案滿足:每次買進操作使用完所有的人民幣;每次賣出操作賣出所有的金券。

Output

只有一個實數MaxProfit,表示第N天的操作結束時能夠獲得的最大的金錢數目。答案保留3位小數。

Sample Input

3 1001 1 11 2 22 2 3

Sample Output

225.000

HINT

Source

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

DP/CDQ分治+斜率優化+DP~

容易想到的方法是直接DP,設f[i]為第i天最多擁有的A券數,那么n^2可以DP更新答案,但是時間復雜度較高,只能拿部分分。

#include<cstdio>#include<cstring>#include<iostream>using namespace std;int n;double f[100005],rat[100005],a[100005],b[100005],ans;int main(){	scanf("%d%lf",&n,&ans);	for(int i=1;i<=n;i++) scanf("%lf%lf%lf",&a[i],&b[i],&rat[i]);	f[1]=ans*rat[1]/(a[1]*rat[1]+b[1]);	for(int i=2;i<=n;i++)	{		for(int j=1;j<i;j++) ans=max(ans,f[j]*a[i]+f[j]*b[i]/rat[j]);		f[i]=ans*rat[i]/(a[i]*rat[i]+b[i]);	}	printf("%.3f/n",ans);	return 0;}

滿分做法是CDQ分治+斜率優化+DP。

“我們來分析對于i的兩個決策j和k,決策j比決策k優當且僅當:

 (f [j] – f[k]) * A[i] + (f [j]/ Rate[j] – f [k] / Rate[k]) * B[i] > 0.

   不妨設f [j] < f [k],g[j] = f [j]/ Rate[j],那么

   (g[j] – g[k]) / (f[j] – f[k])< -a[i] / b[i].”(摘自CDQ大神的論文~)

所以我們就先把每個時間看成一個點,按照k=-a/b從大到小排序分治。每次分治的時候分為左右兩個塊,按照id值歸到左右塊后向下分治左塊得出左面的結果,再用左塊的結果更新右塊的結果,最后向下分治右塊即可。

(函數里面記得要寫return……)

#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;#define eps 1e-9int n,q[100001];double f[100001];struct node{	double a,b,rate,k,x,y;	int id;}a[100001],c[100001];double fabs(double u){	return u>0 ? u:-u;}double che(int u,int v){	if(!v) return -1e20;	if(fabs(a[u].x-a[v].x)<eps) return 1e20;	return (a[v].y-a[u].y)/(a[v].x-a[u].x);}bool Operator < (node u,node v){	return u.k>v.k;}void findd(int l,int r){	if(l==r)	{		f[l]=max(f[l],f[l-1]);		a[l].y=f[l]/(a[l].a*a[l].rate+a[l].b);		a[l].x=a[l].y*a[l].rate;		return;	}	int mid=(l+r)>>1,l1=l,l2=mid+1,j=1,tot=0;	for(int i=l;i<=r;i++)	  if(a[i].id<=mid) c[l1++]=a[i];	  else c[l2++]=a[i];	memcpy(a+l,c+l,sizeof(a[0])*(r-l+1));	findd(l,mid);	for(int i=l;i<=mid;i++)	{		while(tot>1 && che(q[tot-1],q[tot])<che(q[tot-1],i)+eps) tot--;		q[++tot]=i;	}	q[++tot]=0;l1=l;l2=mid+1;	for(int i=mid+1;i<=r;i++)	{		while(j<tot && che(q[j],q[j+1])+eps>a[i].k) j++;		f[a[i].id]=max(f[a[i].id],a[i].a*a[q[j]].x+a[i].b*a[q[j]].y);	}	findd(mid+1,r);	for(int i=l;i<=r;i++)	  if((a[l1].x<a[l2].x || (fabs(a[l1].x-a[l2].x)<eps && a[l1].y<a[l2].y) || l2>r) && l1<=mid) c[i]=a[l1++];	  else c[i]=a[l2++];	memcpy(a+l,c+l,sizeof(a[0])*(r-l+1));}int main(){	scanf("%d%lf",&n,&f[0]);	for(int i=1;i<=n;i++)	{		scanf("%lf%lf%lf",&a[i].a,&a[i].b,&a[i].rate);		a[i].k=-a[i].a/a[i].b;a[i].id=i;	}	sort(a+1,a+n+1);	findd(1,n);	printf("%.3lf/n",f[n]);	return 0;}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
精品成人乱色一区二区| 亚洲福利视频二区| 国产一区二区激情| 一本色道久久88亚洲综合88| 欧美激情xxxxx| 国产色婷婷国产综合在线理论片a| 91在线观看免费| 国产精品久久久亚洲| 日韩视频在线一区| 欧美国产日本在线| 日韩av日韩在线观看| 欧美另类xxx| 美女国内精品自产拍在线播放| 日韩欧美综合在线视频| 亚洲xxx自由成熟| 国产精品日韩精品| 国产精品久久久久av| 国产亚洲精品va在线观看| 国产在线拍偷自揄拍精品| 欧美一级视频一区二区| 欧美精品aaa| 国产精品免费看久久久香蕉| 欧美三级xxx| 在线日韩中文字幕| 亚洲人高潮女人毛茸茸| 性欧美长视频免费观看不卡| 欧美色欧美亚洲高清在线视频| 在线观看久久av| 欧美一级在线播放| 久久人人爽人人爽人人片av高请| 国产中文欧美精品| 91免费观看网站| 亚洲精品日韩激情在线电影| 91精品视频在线| 久久久久中文字幕| 日韩电影中文字幕一区| 亚洲色在线视频| 欧美大片va欧美在线播放| 亚洲欧美国产高清va在线播| 亚洲级视频在线观看免费1级| 亚洲女人初尝黑人巨大| 国产成人高清激情视频在线观看| 欧美高清一级大片| 国产精品视频久久| 777777777亚洲妇女| 精品国产一区二区三区久久狼5月| 在线日韩欧美视频| 中文字幕亚洲综合| 亚洲综合视频1区| 欧美高跟鞋交xxxxhd| 成人国内精品久久久久一区| 久久这里只有精品99| 国产精品扒开腿做爽爽爽的视频| 国产精品稀缺呦系列在线| 69久久夜色精品国产69乱青草| 亚洲第一精品福利| 国产丝袜一区二区三区免费视频| 欧美电影第一页| 一区二区三区国产在线观看| 97av在线视频免费播放| 成人夜晚看av| 国产精品∨欧美精品v日韩精品| 日韩综合视频在线观看| 日韩成人小视频| 欧洲美女免费图片一区| 亚洲区bt下载| **欧美日韩vr在线| 久久精品99国产精品酒店日本| 亚洲级视频在线观看免费1级| 亚洲美女精品成人在线视频| 亚洲精品美女视频| 久久精品视频在线播放| 久久精品国产99国产精品澳门| 日韩精品欧美国产精品忘忧草| 亚洲国内精品视频| 欧美日韩国产一区在线| 亚洲美女av网站| 成人免费观看a| 亚洲a级在线播放观看| 国产日韩欧美黄色| 98精品在线视频| 亚洲欧美激情另类校园| 正在播放欧美视频| 国产精品1234| 欧美激情视频免费观看| 国产精品青青在线观看爽香蕉| 久久久欧美一区二区| 久久精品这里热有精品| 国产丝袜一区二区三区免费视频| 中文字幕av一区中文字幕天堂| 伊人伊成久久人综合网站| 亚洲一区二区三区香蕉| 国产精品jvid在线观看蜜臀| 国产精品流白浆视频| 日韩a**中文字幕| 久久99久久99精品免观看粉嫩| 日本不卡视频在线播放| 国内精品久久久久久影视8| 伊人一区二区三区久久精品| 亚州国产精品久久久| 岛国av在线不卡| 在线色欧美三级视频| 一本色道久久综合狠狠躁篇怎么玩| 亚洲欧洲国产一区| 亚洲欧美日韩国产中文| 国产精品成人aaaaa网站| 色婷婷综合久久久久| 日韩在线观看视频免费| 在线一区二区日韩| 亚洲成人av片| 亚洲欧美日韩网| 狠狠躁天天躁日日躁欧美| 久久久亚洲天堂| 国产精品自产拍在线观| 欧美韩国理论所午夜片917电影| 日韩精品在线观看一区二区| 国产丝袜高跟一区| 亚洲精品第一页| 九色精品美女在线| 精品一区电影国产| 在线播放国产精品| 亚洲精品在线不卡| 久久影院免费观看| 国产精品极品在线| 中文字幕日韩精品有码视频| 亚洲aⅴ男人的天堂在线观看| 欧美大尺度激情区在线播放| 亚洲人成网在线播放| 亚洲第一页在线| 成人久久久久久| 成人国产精品久久久| 日韩毛片中文字幕| 国产成人拍精品视频午夜网站| 国产精品国语对白| 国产在线精品播放| 色青青草原桃花久久综合| 欧美激情a∨在线视频播放| 欧美一级视频一区二区| 欧美激情在线观看视频| 91亚洲精品一区二区| 亚洲经典中文字幕| 国产成人福利视频| 中文字幕欧美精品日韩中文字幕| 亚洲欧美日韩网| 性欧美激情精品| 欧美精品在线网站| 日韩欧亚中文在线| 色综合91久久精品中文字幕| 久久亚洲精品一区二区| 日韩理论片久久| 国产精品福利在线观看网址| 久久成人av网站| 夜色77av精品影院| 亚洲精品久久久久久下一站| 欧美成人第一页| 91精品国产综合久久香蕉的用户体验| 97**国产露脸精品国产| www.xxxx精品| 狠狠躁18三区二区一区| 亚洲日韩中文字幕在线播放| 亚洲深夜福利网站| 国产精品久久久久久久久久小说| 午夜精品国产精品大乳美女| www欧美xxxx|