BZOJ1484 HNOI2009 通往城堡之路

2022-05-08 04:42:08 字數 1187 閱讀 4881

作者部落格:

正解:貪心

解題報告:

做這道題做的我也是醉了…

本來是找仙人掌題目的,搜尋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 ...