HGOI20181031 模擬題解

2022-05-30 17:30:13 字數 2767 閱讀 7232

sol:第一題就dp?!然後寫了o(n^2) dp再

考慮優化!!!(盡量部分分帶上!!!)

我寫了正確的dp然後優化錯了,具體的dp方法是考慮到對於右側到左側他是沒有後效性的

所以定義f[i]為i及以後最大的代價和,對於合法的j,轉移f[i]=max,j需要滿足a[i]+x[i]=i

由於給出的a[i]遞增然後我只要往i的右側找到第乙個合法的j然後轉移就行了,複雜度o(n log n)

我錯在了用堆來優化,然後把後面的刪掉了,其實可以再前面的從被誤刪的東西轉移而來。

sol:這道題目對於100%的資料n,m<=3000,顯然發現這一定是o(n2)的演算法,

然後如果對於x1到x2的最短路徑設為r1,x3到x4最短路勁r2,要求r1和r2交的盡可能多,那麼這個解一定更優

首先一定要在最短路上,其次要求r1和r2盡可能交的更多,我們不妨設剛開始交的地方設為i,交結束的地方設為j

我們先求出x1,x2,x3,x4到各點的最短路d1,d2,d3,d4

我們列舉i然後再列舉j 由上圖可以看出就是d1[i]+d2[j]+d3[i]+d4[j]+dist(i,j)在列舉j之前我們可以o(n)求出i的最短路d5

那麼就是最小化d1[i]+d2[j]+d3[i]+d4[j]+d5[j],

然後我們交換(x1,x2)or (x3,x4) 之中的任意一對然後再求min,就是d1[i]+d2[j]+d3[j]+d4[i]+d5[j],

然後對於每一次列舉ans=min(d1[i]+d2[j]+d3[i]+d4[j]+d5[j],d1[i]+d2[j]+d3[j]+d4[i]+d5[j],ans)

對於乙個顯然的情況我們最後特判就是直接 x1走到x2,x3 走到 x4 最短路雖然並沒有重複的路 即 ans=min(ans,d1[x2]+d3[x4]);

code:

# include # ifdef o_2

# pragma gcc optimze(2)

# endif

using

namespace

std;

const

int maxn=3005

;int

n,m,x1,x2,x3,x4;

intd1[maxn],d2[maxn],d3[maxn],d4[maxn],d5[maxn];

int tot=0

,head[maxn];

bool

vis[maxn];

struct reca[maxn*2

];inline

intread()

inline

void write(int

x)

if (x>9) write(x/10

); putchar('0

'+x%10);}

inline

void writeln(int x)

void adde(int u,int v,int

w)struct node;

intd[maxn];

queue

q;void bfs(int

s));

while (!q.empty()) );}}

}int min(int a,int b,int

c)int

main()

bfs(x1); memcpy(d1,d,

sizeof

(d));

bfs(x2); memcpy(d2,d,

sizeof

(d));

bfs(x3); memcpy(d3,d,

sizeof

(d));

bfs(x4); memcpy(d4,d,

sizeof

(d));

int ans=m;

for (int i=1;i<=n;i++)

ans=min(ans,d1[x2]+d3[x4]);

writeln(ans);

return0;

}

解密模擬題

現有加密二進位制檔案乙份,按規則進行解碼 a.轉碼後檔案由0x1b,0x4c開頭 b.跳過原始檔前六個位元組,每兩個位元組為乙個迴圈節 c.獲取初始key,由md5 hello 檔名 的前8位構成 d.對初始key進行如下操作 高4位 0x41a70000 0x7fff0000 低4位 0x41a7...

模擬題總結

1 模擬題的常見題型 1 打表,列出所有可能 資料較少,規律明顯 2 分階段求解,自頂向下,先寫出主程式,然後輸入輸出,判斷條件這些直接用函式實現,簡化步驟。3 模擬操作,有兩種思路,一是直接模擬,得出結果 二是先記錄所有操作,然後模擬每個操作。4 日期天數,可以逐年,逐月,逐日的相加,然後求星期之...

noip模擬題 挖掘機(模擬題 精度)

這題直接模擬。可是我掛在了最後兩個點上qaq。唯一注意的是注意精度啊。用來double後邊轉成整數就忘記用longlong。sad include include include include include include include include include using namesp...