洛谷P2474 SCOI2008 天平 題解

2021-08-19 19:35:18 字數 571 閱讀 5550

題目傳送門

題目大意:

看題面吧。

思考過程&具體做法:

我也是看別人的題解才會做的。

這個題真的很難往dp方面去想,但是想到了就特別簡單,用dn[i][j]表示i比j大的最小值,dx[i][j]表示i比j大的最大值(若j比i大,則這個值為負數),轉移請看**,挺容易理解的,主要這個狀態真的想不到。

**:

#include 

using

namespace

std;

int n,a,b;

int dn[60][60],dx[60][60];

int main()

}for(int k=1;k<=n;k++)}}

int c1=0,c2=0,c3=0;

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

}printf("%d %d %d\n",c1,c2,c3);

return

0;

}

洛谷P2507 SCOI2008 配對

走這裡思路源於題解第一篇 首先考慮此題若沒有不允許兩個相同的數配對這一條件,則好辦很多,直接分別排序後一一配對即可。然後考慮有這一條件的情況 注意到有 ai 不相同,bi 也各不相同的條件,即如果當前匹配的兩個數是相同的,那麼調整其中乙個數為其相鄰的兩個數,就一定不會失配。因此我們先對兩個數列排一遍...

洛谷 P4159 SCOI2009 迷路

如果邊權為 1 11,則是簡單的矩陣快速冪加速dp遞推方程,又因為邊權並不大,所以考慮拆點,新圖中邊權均為 1 11,將每個點暴力拆成相連的 9 99 個點,對於原先某條邊 u,v,w u,v,w u,v,w 可以轉化為 u uu 拆成的點中第 w ww 個連向 v vv 拆成的點中第 1 11 個...

洛谷 P2327 SCOI2005 掃雷

看起來我做的和其他題解不一樣 那就發一篇吧 首先本題情況看似無厘頭,但是仔細觀察,不難發現 我們可以假設第一種情況,接著可以推出第二種 然後有了兩個已知的後,第三個顯而易見 如果你要問我怎麼推出來的嗎,我在裡面說的的邏輯判斷已經很明白了 include include include include...