作者部落格:
正解:貪心
解題報告:
做這道題做的我也是醉了…
本來是找仙人掌題目的,搜尋bzoj仙人掌-->bzoj1484!
看了一下題目,excuse me?這跟仙人掌有啥關係?
上網一搜題解,都說的很含糊,做法都是乙個不知道怎麼證明正確性的貪心…
窩這麼弱就記住這個演算法好了…
考慮我先做出所有點能取到的下界b,那麼我不可能比這個還要低,只需要把一些點公升高,而我公升高的時候必然是對於一段進行操作,然後維護介面處是否合法就能在保證合法性的情況下盡可能更優。
我的操作位置,是需要公升高的-需要降低的個數最大的那個位置。
然後反覆做,總複雜度$o(n^2)$…
//it is made by ljh2000#include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std;
typedef long long ll;
typedef long double lb;
typedef complexc;
const double pi = acos(-1);
const ll inf = (1ll<<60);
const int maxn = 5011;
int n,d;
ll a[maxn],b[maxn];
ll ans;
inline int getint()
inline void work()
b[1]=a[1]; for(int i=2;i<=n;i++) b[i]=b[i-1]-d;
ll minl,maxl,tot,quan,pos;
while(a[n]!=b[n])
quan=min(quan,b[pos-1]+d-b[pos]);
for(int i=pos;i<=n;i++)
b[i]+=quan;
} ans=0;
for(int i=1;i<=n;i++) ans+=abs(a[i]-b[i]);
printf("%lld\n",ans); }}
int main()
狡猾的商人 bzoj1202,HNOI2005
ac通道 分析 因為每月的總收入可以為正,也可以為負,所以要比較兩個區間是否相符,當且僅當它們邊界都相同時才能比較。我們設w i 表示第1 i個月的總收入與第1 fa i 1 個月的總收入之差,及第fa i i個月的總收入。如圖。若i 1,j在同乙個集合中,則第i j個月的總收入為w j w i 1...
bzoj 2326 HNOI2011 數學作業
題目大意 給你n,m,求concatenate 1.n mod m的值 concatenate 1.n 代表把1到n連起來 比如n 13時 concatenate 1.n 就是12345678910111213 n 10 1 m 10 9 這題很水,對於n,將其分開,比如145,就分成1 9,10 ...
BZOJ1010 HNOI2008 玩具裝箱toy
先把程式放著,週末來更新 華麗的分割線 不想寫題解了。照著網上的題解推一邊即可 注意有的題解最後推倒出來明明是求上 下 凸包的形式,但配的圖卻是下 上 凸包的。不過斜率優化還不是搞的很懂。time limit 1 sec memory limit 162 mb submit 6661 solved ...