锘??xml version="1.0" encoding="utf-8" standalone="yes"?>午夜精品久久久久成人,天天躁日日躁狠狠久久 ,伊人久久大香线蕉亚洲五月天http://www.shnenglu.com/MatoNo1/category/19882.htmlMato鏄竴鍙秴綰уぇ娌欒尪鈥︹︿絾浠栦竴鐩翠互鏉ラ兘鎯蟲垚涓哄悇欏規(guī)瘮璧涢兘No.1鐨勭鐘団︹?/description>zh-cnTue, 09 Oct 2012 12:39:09 GMTTue, 09 Oct 2012 12:39:09 GMT60銆怉HOI2013澶嶄粐銆戜袱閬揕IS妯″瀷棰樻葷粨http://www.shnenglu.com/MatoNo1/archive/2012/09/08/189969.htmlMato_No1Mato_No1Sat, 08 Sep 2012 12:40:00 GMThttp://www.shnenglu.com/MatoNo1/archive/2012/09/08/189969.htmlhttp://www.shnenglu.com/MatoNo1/comments/189969.htmlhttp://www.shnenglu.com/MatoNo1/archive/2012/09/08/189969.html#Feedback0http://www.shnenglu.com/MatoNo1/comments/commentRss/189969.htmlhttp://www.shnenglu.com/MatoNo1/services/trackbacks/189969.html銆?銆?a title="[HAOI2007]涓婂崌搴忓垪 " >[HAOI2007]涓婂崌搴忓垪
棰勫鐞嗭細(xì)璁綟[i]涓轟互i寮澶寸殑鏈闀夸笂鍗囧簭鍒楃殑闀垮害錛屾庝箞姹備笉鐢ㄨ浜?jiǎn)鍚у?#8230;…
鍋囪鐩墠闇瑕佹眰闀垮害涓篗鐨勩佹爣鍙峰瓧鍏稿簭鏈灝忕殑涓婂崌搴忓垪錛屾樉鐒跺叾絎竴涓厓绱燗[i]蹇呴』婊¤凍F[i]>=M錛堟敞鎰忥紝涓嶆槸絳変簬錛屾槸澶т簬絳変簬錛侊級(jí)錛屾壘鍒版弧瓚寵繖涓潯浠剁殑鏈灝忕殑i鍗沖彲銆傜劧鍚庯紝璁劇洰鍓嶅凡緇忔眰鍑轟簡(jiǎn)璇ュ簭鍒楃殑絎瑇涓厓绱犱負(fù)A[y]錛屽垯絎?x+1)涓厓绱燗[z]闇瑕佹弧瓚崇殑鏉′歡鏄疉[z]>A[y]錛屼笖F[z]=F[y]-1錛屾壘鍒版弧瓚寵繖涓潯浠剁殑鏈灝忕殑z鍗充負(fù)璇ュ簭鍒楃殑絎?x+1)涓厓绱犮傛寜鐓ц繖縐嶆柟娉曪紝鎵弿涓閬嶅氨鍙互姹傚嚭鏁翠釜搴忓垪錛屾椂闂村鏉傚害涓篛(N)銆傚鏋滄暣涓簭鍒楃殑鏈闀夸笂鍗囧簭鍒楅暱搴?lt;M錛屽垯鏃犺В銆?br />
浠g爜錛?
#include <iostream>
#include 
<stdio.h>
#include 
<stdlib.h>
#include 
<string.h>
using namespace std;
#define re(i, n) for (int i=0; i<n; i++)
#define re1(i, n) for (int i=1; i<=n; i++)
#define re2(i, l, r) for (int i=l; i<r; i++)
#define re3(i, l, r) for (int i=l; i<=r; i++)
#define rre(i, n) for (int i=n-1; i>=0; i--)
#define rre1(i, n) for (int i=n; i>0; i--)
#define rre2(i, r, l) for (int i=r-1; i>=l; i--)
#define rre3(i, r, l) for (int i=r; i>=l; i--)
#define ll long long
const int MAXN = 10010,    MAXM = 1010, INF = ~0U >> 2;
int n, m, len, A[MAXN], F[MAXN], D[MAXN], res[MAXM];
void prepare()
{
    D[len 
= 0= INF; int l, r, mid;
    rre(i, n) 
if (A[i] < D[len]) D[F[i] = ++len] = A[i]; else {
        l 
= 0; r = len;
        
while (l < r) {
            mid 
= l + r + 1 >> 1;
            
if (A[i] < D[mid]) l = mid; else r = mid - 1;
        }
        F[i] 
= l + 1; D[l + 1= A[i];
    }
}
void solve()
{
    
int x, y;
    re(i, n) 
if (F[i] >= m) {
        res[
0= A[i]; if (m == 1return; x = m - 1; y = 1;
        re2(j, i
+1, n) if (F[j] >= x && A[j] > res[y - 1]) {res[y++= A[j]; if (y == m) returnelse x--;}
    }
}
int main()
{
    scanf(
"%d"&n); re(i, n) scanf("%d"&A[i]);
    prepare();
    
int m_s; scanf("%d"&m_s);
    re(i, m_s) {scanf(
"%d"&m); if (m > len) puts("Impossible"); else {solve(); re(j, m-1) printf("%d ", res[j]); printf("%d\n", res[m - 1]);}}
    
return 0;
}


銆?銆?a title="[HAOI2006]鏁板瓧搴忓垪 " >[HAOI2006]鏁板瓧搴忓垪
棣栧厛錛岀敱浜庡簭鍒楃殑鎵鏈夊厓绱犻兘鏄暣鏁幫紝鎵浠ュ彲浠ュ皢鍘熷簭鍒楃殑鎵鏈夊厓绱犲噺鍘誨畠鐨勪笅鏍囷紝榪欐牱灝辨妸涓婂崌搴忓垪杞寲涓轟笉涓嬮檷搴忓垪浜?jiǎn)銆?br />絎竴闂殑緇撴灉鏄劇劧灝辨槸(N-鏂板簭鍒楃殑鏈闀夸笉涓嬮檷搴忓垪闀垮害)銆傚叧閿湪浜庣浜岄棶銆備互涓婣鍧囪〃紺烘柊搴忓垪銆?br />璁綟[i]涓轟互A[i]緇撳熬鐨勬渶闀夸笉涓嬮檷搴忓垪闀垮害錛堝悓鏍鳳紝姹傛硶涓嶇敤璇翠簡(jiǎn)錛夛紝G[i]涓哄湪A[i]涓嶄慨鏀圭殑鍓嶆彁涓嬪皢A[0..i]杞彉涓轟笉涓嬮檷搴忓垪鐨勬渶灝忎慨鏀歸噺銆傞鍏堟眰鍑篎[i]錛岀劧鍚庡湪姹侴[i]鏃訛紝鏋氫婦涓婁竴涓?#8220;涓嶅姩鐐?#8221;錛堝氨鏄笉淇敼鐨勫厓绱狅級(jí)A[j]錛堟樉鐒跺繀欏繪弧瓚矨[j]<=A[i]涓擣[j]=F[i]-1錛夛紝榪欐牱鏈灝忎慨鏀歸噺灝辨槸G[j]+(灝咥[j..i]杞彉涓轟笉涓嬮檷搴忓垪鐨勬渶灝忎慨鏀歸噺錛夈傚彲浠ヨ瘉鏄庯紝A[j..i]鐨勬渶浼樹慨鏀規(guī)柟妗堝繀鐒舵槸灝咥[j+1..t]鍏ㄩ儴淇敼涓篈[j]錛孉[t+1..i]鍏ㄩ儴淇敼涓篈[i]錛岃繖閲宼鏄竴涓猍j..i]鑼冨洿鐨勫箋傞棶棰樺氨鏄浣曟眰鍑烘渶浼樼殑t錛?br />涓寮濮嬶紝鍋囪t=j錛屽嵆鎶夾[j+1..i-1]鍏ㄩ儴淇敼涓篈[i]錛岃綆楀嚭淇敼閲忥紝璁句負(fù)S銆傜劧鍚庯紝鐢變簬A[j+1..i-1]涔嬮棿鐨勫厓绱犺涔堝皬浜嶢[j]錛岃涔堝ぇ浜嶢[i]錛堣繖涓槸鏄劇劧鐨勫洤錛夛紝鎴戜滑鎶婂皬浜嶢[j]鐨勫厓绱犵О涓?#8220;灝忔暟”錛屾妸澶т簬A[i]鐨勫厓绱犵О涓?#8220;澶ф暟”錛屽垯褰搕鍙杢0鏃訛紝淇敼閲忎負(fù)S-(A[i]-A[j])*(A[j+1..t0]涓殑“灝忔暟”涓暟鍑忓幓“澶ф暟”涓暟錛夈傝繖鏍鳳紝鍙渶鎵弿涓涓嬶紝姹傚嚭浣垮緱(A[j+1..t0]涓殑“灝忔暟”涓暟鍑忓幓“澶ф暟”涓暟錛夊兼渶澶х殑t0鍗沖彲銆?br />褰撶劧榪樻湁涓涓棶棰橈紝瀵逛簬鍚屼竴涓猧錛屾弧瓚?#8220;A[j]<=A[i]涓擣[j]=F[i]-1”鐨勫厓绱犱釜鏁板彲鑳芥湁寰堝錛屽鏋滀竴涓竴涓灇涓撅紝涓涓竴涓壂鎻忥紝浼?xì)寰堟參鐨勫?#8230;…瑙e喅鏂規(guī)硶鏄紝姹傚嚭婊¤凍榪欎釜鏉′歡鐨刯涓渶灝忕殑涓涓紝璁句負(fù)j0錛岀劧鍚庢妸A[j0+1..i-1]涓殑鎵鏈?#8220;灝忔暟”鍜?#8220;澶ф暟”鍏ㄩ儴澶勭悊鍑烘潵錛岀劧鍚庣敤綾諱技鍓嶇紑鍜岀殑鏂規(guī)硶灝辮兘鎼炰簡(jiǎn)鍥?#8230;…褰撶劧錛屼負(fù)浜?jiǎn)鎵惧埌j0錛岄渶瑕佸緩涓涓簩鍒嗗浘錛岃竟涓?F[i], i)銆?br />鏈鍚庯紝涓轟簡(jiǎn)鏂逛究錛屽彲浠ユ妸A搴忓垪鐨勫乏杈瑰姞涓涓?INF錛屽彸杈瑰姞涓涓?INF銆傛渶鍚庢葷殑鏃墮棿澶嶆潅搴︼紝鐞嗚涓婁負(fù)O(N2)錛屼絾鐢變簬鏄殢鏈烘暟鎹紝鎵浠ヨ繙榪滆揪涓嶅埌榪欎釜綰у埆銆?br />
浠g爜錛?
#include <iostream>
#include 
<stdio.h>
#include 
<stdlib.h>
#include 
<string.h>
using namespace std;
#define re(i, n) for (int i=0; i<n; i++)
#define re1(i, n) for (int i=1; i<=n; i++)
#define re2(i, l, r) for (int i=l; i<r; i++)
#define re3(i, l, r) for (int i=l; i<=r; i++)
#define rre(i, n) for (int i=n-1; i>=0; i--)
#define rre1(i, n) for (int i=n; i>0; i--)
#define rre2(i, r, l) for (int i=r-1; i>=l; i--)
#define rre3(i, r, l) for (int i=r; i>=l; i--)
#define ll long long
const int MAXN = 40010, INF = ~0U >> 2;
struct edge {
    
int a, b, pre, next;
} E[MAXN 
<< 1];
int n, m, A[MAXN], D[MAXN], F[MAXN], W[MAXN], res1;
ll G[MAXN], res2;
void init_d()
{
    re(i, n) E[i].pre 
= E[i].next = i; m = n;
}
void add_edge(int a, int b)
{
    E[m].a 
= a; E[m].b = b; E[m].pre = E[a].pre; E[m].next = a; E[a].pre = m; E[E[m].pre].next = m++;
}
void init()
{
    scanf(
"%d"&n);
    A[
0= -INF; re1(i, n) {scanf("%d"&A[i]); A[i] -= i;} A[++n] = INF; n++;
}
void solve()
{
    init_d(); F[
0= 0; G[0= 0; D[0= -INF; add_edge(00); int len = 0, l, r, mid, x, maxw; ll sum, tmp;
    re2(i, 
1, n) {
        
if (A[i] >= D[len]) D[F[i] = ++len] = A[i]; else {
            l 
= 0; r = len;
            
while (l < r) {
                mid 
= l + r + 1 >> 1;
                
if (A[i] >= D[mid]) l = mid; else r = mid - 1;
            }
            D[F[i] 
= ++l] = A[i];
        }
        
for (int p=E[F[i]-1].next; ; p=E[p].next) if (A[i] >= A[x = E[p].b]) break;
        W[x] 
= 0; re2(j, x+1, i) if (A[j] < A[i]) W[j] = W[j - 1+ 1else W[j] = W[j - 1- 1;
        sum 
= 0; maxw = -INF; G[i] = ~0Ull >> 2;
        rre2(j, i, x) {
            
if (A[j] <= A[i] && F[j] == F[i] - 1) {
                tmp 
= G[j] + sum; if (tmp < G[i]) G[i] = tmp;
                tmp 
= G[j] + sum - (ll) (maxw - W[j]) * (A[i] - A[j]); if (tmp < G[i]) G[i] = tmp;
            }
            
if (A[j] > A[i]) sum += A[j] - A[i]; else sum += A[i] - A[j];
            
if (W[j] > maxw) maxw = W[j];
        }
        add_edge(F[i], i);
    }
    res1 
= n - F[n - 1- 1; res2 = G[n - 1];
}
void pri()
{
    cout 
<< res1 << endl << res2 << endl;
}
int main()
{
    init();
    solve();
    pri();
    
return 0;
}




Mato_No1 2012-09-08 20:40 鍙戣〃璇勮
]]>
亚洲精品第一综合99久久| 久久久久久a亚洲欧洲aⅴ| 亚洲精品99久久久久中文字幕| 久久久免费观成人影院| 精品久久久无码21p发布| 欧洲精品久久久av无码电影| yellow中文字幕久久网| 久久久久亚洲av成人网人人软件| 久久精品国产色蜜蜜麻豆| 久久99精品综合国产首页| 一级a性色生活片久久无少妇一级婬片免费放 | 伊人色综合久久天天| 一日本道伊人久久综合影| 久久综合狠狠综合久久综合88| 93精91精品国产综合久久香蕉| 亚洲乱码中文字幕久久孕妇黑人| 伊人久久大香线蕉精品| 久久人人爽人人爽人人AV| 久久免费视频1| 国产成人99久久亚洲综合精品| 久久久久青草线蕉综合超碰| 久久美女网站免费| 国产产无码乱码精品久久鸭| 欧美亚洲国产精品久久久久| 久久九九久精品国产免费直播| 国内精品伊人久久久久av一坑| 一本综合久久国产二区| 久久综合给合综合久久| 国产福利电影一区二区三区,免费久久久久久久精| 久久久久久久综合狠狠综合| 日本欧美国产精品第一页久久| 国产高清美女一级a毛片久久w| 久久99精品久久只有精品| 久久久久99精品成人片试看| 久久香蕉超碰97国产精品| 久久精品一区二区三区AV| 日韩精品久久久久久久电影| 一本久久精品一区二区| 少妇人妻综合久久中文字幕| 久久久久久久波多野结衣高潮 | 久久w5ww成w人免费|