交大oj-1009-二哥炒株C++まとめ
4639 ワード
二番目の兄が株を売る
この問題には何の落とし穴も設けられていないので,問題の意味がはっきりしているので,直接コードを述べる必要はない.
まとめ~
この問題の重点はどのように取引記録と株価の変化記録を保存するかで、私は最も
この問題には何の落とし穴も設けられていないので,問題の意味がはっきりしているので,直接コードを述べる必要はない.
#include
#include
#include
using namespace std;
struct Trade {
int time;
int stock;
int mode;
Trade(int time, int stock, int mode) :time(time), stock(stock), mode(mode) {};
};
struct StockPrice {
int time;
int price;
StockPrice(int time, int price) :time(time), price(price) {};
};
vector trade;
vector price;
int tradeNum, priceNum;
int getPrice(int time)
{
static int index = 0;
for (; index < priceNum; index++) {
if (price[index].time > time)
break;
}
return price[index - 1].price;
}
int main()
{
int i, t, a, d;
cin >> tradeNum;
for (i = 0; i < tradeNum; i++) {
cin >> t >> a >> d;
trade.push_back(Trade(t, a, d));
}
cin >> priceNum;
for (i = 0; i < priceNum; i++) {
cin >> t >> a;
price.push_back(StockPrice(t, a));
}
//cin has ended
double profit = 0;
int trademoney;
for (i = 0; i < tradeNum; i++) {
trademoney = getPrice(trade[i].time) * trade[i].stock;
if (trade[i].mode == 1) { // buy
profit -= (0.2 * trademoney > 5) ? (0.2 * trademoney) : 5;
profit = profit - 0.1 * trade[i].stock - 1 - trademoney * 100;
}
else { //sell
profit -= (0.2 * trademoney > 5) ? (0.2 * trademoney) : 5;
profit = profit - 0.1 * trade[i].stock - 1 + trademoney * 99.9;
}
}
cout << fixed << setprecision(2) << profit << endl;
return 0;
}
// , , , ,
// , struct
まとめ~
この問題の重点はどのように取引記録と株価の変化記録を保存するかで、私は最も
pair
を使用し始めたばかりで、明らかにstruct
が便利で使いやすいわけではありません.この解法はあまりよくなく,評価状態には10 ms以下のコードがあり,取引記録を遍歴した後に収益を一緒に処理する問題であり,取引量を減らすと推測される.あまり変えたくないですが、もう改善の考えがあります.go on for next problem~