題目背景經過分析,可以發現對於吃飯,我們只在乎它的時間總量,然後對於旅行,我們已經知道旅行的時間是n-吃飯的時間,又因為計算公式中含有平方,所以我們需要關心這n-i的時間分成了幾段。重要的不是去**,而是和你在一起。——小紅
對小明和小紅來說,2023年7月29日是乙個美好的日子。這一天是他們相識100天的紀念日。
(小明:小紅,感謝你2場大考時默默的支援,100個日夜的陪伴;感謝你照亮我100個美好的日子,給我留下無數美好的回憶……在這個美好的日子裡,我準備帶你去旅行。)
題目描述
小明和小紅還剩下n天的假期,小明可以安排旅行的計畫。如果連續x天旅遊,小明需要花旅行費用\(p*x*x\)元;如果連續x天不旅遊,小明需要請小紅吃飯,花費為q*x元。(p,q都是輸入的常數)
請你幫小明寫乙個程式,計算出假期裡他至少需要花費多少元。
輸入輸出格式
輸入格式:
一行,3個空格隔開的正整數n,p,q。
輸出格式:
一行,乙個正整數表示小明至少需要花費多少元。
這樣就可以開始寫\(n^2\)的演算法了。
第一層列舉吃飯時間,第二層列舉旅行時間分為多少段,\(o(1)\)計算即可。
code:
#include#includeusing namespace std;
inline int read()
while(ch>='0'&&ch<='9')
return sum*f;
}int n,p,q,ans=2147483647;
int main()
for(int i=0;i<=n;i++)
} printf("%d\n",ans);
return 0;
}
寫完就可以發現最優情況下旅行的時間被平均分是最好的,所以找到了凸性函式的極值點直接帶就可以了。
100分
code:
#include#includeusing namespace std;
inline int read()
while(ch>='0'&&ch<='9')
return sum*f;
}int n,p,q,ans=2147483647;
int main()
for(int i=0;i<=n;i++)
printf("%d\n",ans);
return 0;
}
P2134 百日旅行
重要的不是去 而是和你在一起。小紅 對小明和小紅來說,2014年7月29日是乙個美好的日子。這一天是他們相識100天的紀念日。小明 小紅,感謝你2場大考時默默的支援,100個日夜的陪伴 感謝你照亮我100個美好的日子,給我留下無數美好的回憶 在這個美好的日子裡,我準備帶你去旅行。小明和小紅還剩下n天...
dp P2134 百日旅行
這個題目顯然有乙個n 2的做法 include include include using namespace std int f 200005 ff 200005 int n,m,p,q int main 標準的暴力 我們考慮優化 顯然q p的話直接全q就好了 然後對於ff陣列 直接不列舉了,結合...
洛谷P1137 旅行計畫(拓撲排序 dp)
題目描述 小明要去乙個國家旅遊。這個國家有n個城市,編號為1 n,並且有m條道路連線著,小明準備從其中乙個城市出發,並只往東走到城市i停止。所以他就需要選擇最先到達的城市,並制定一條路線以城市i為終點,使得線路上除了第乙個城市,每個城市都在路線前乙個城市東面,並且滿足這個前提下還希望遊覽的城市盡量多...