題目的意思是給你多組清單,每組包含所需食物的數量,和當天食物的單價,可以囤積食物。求花最少的錢完成清單。
解決這道題目的策略是從頭到尾掃瞄一遍這些清單,再遇到更便宜的**前都用之前最便宜的**買食物,再更新當前最便宜的**,以此類推下去。
陣列a[ ]代表各天地食物需求
陣列b[ ]代表各天地食物單價
變數cheap代表當前最便宜的單價是哪天
#include#include#include
using
namespace
std;
#define max(x,y) (((x)>(y)) ? (x) : (y))
#define min(x,y) (((x) < (y)) ? (x) : (y))
#define abs(x) ((x)>0?(x):-(x))
const
int inf = 0x7fffffff
;const
int n=100000+10
;int
a[n];
intb[n];
intmain()
int cheap=0
;
int cnt=a[0
];
long
long ans=0
;
for(int i=1; i)
else
//cout<<"ans= "<}
ans += b[cheap]*cnt;
cout
return0;
}
隨筆 邀請賽前練 Duff in Love
題意 給乙個數,求最大的乙個因子,這個因子還要滿足不能有平方數是他的因子。我的解法幾乎是暴力的,應該可以用數學的方法不暴力 或者說不那麼 暴力 求出來。我的解法是 include include include include include include using namespace std ...
湘潭邀請賽A
哥德 猜想 任一大於2的偶數,都可表示成兩個素數之和。是世界上最著名的未解問題之一,但是下面的反哥德 猜想 任一大於11的奇數,都可表示成兩個合數之和。確很容易證明。定義反哥德 分拆數g n 表示將大於11的奇數n分解為兩個合數之和的方案數。再定義sg n sum 即所有不大於n的奇數的反哥德 分拆...
通化邀請賽 I Difference
這個題目現場賽的時候沒過,想得過於簡單了。主要條件如下 a ai t for all i and b vi,vj in e ai aj t,首先,如過存在邊,那麼ai和aj必然一正一負。所以第一步就是黑白染色。之後不妨假設黑色的為正,白色為負,此時條件b中的絕對值號就可以去掉了。對於一堆的大於等於的...