JOISC 2020 Day1 建築裝飾 4

2022-05-07 19:03:10 字數 1010 閱讀 1570

loj

考慮設\(f_\)表示到了第\(i\)個位置,用了\(j\)個a,\(k\)個b的可行性,打表發現對於\((i,j)\)的\(k\)是連續的,所以考慮記錄:

\(l_\)表示前\(i\)個位置用了\(j\)個a最少用多少個b,\(r_\)同理.

最後輸出方案的時候一步一步的倒推即可.

#include#include#include#include#include#include#include#include#includeusing namespace std;

#define ll long long

#define rep(a,b,c) for(int a=b;a<=c;a++)

#define re register

#define file(a) freopen(a".in","r",stdin);freopen(a".out","w",stdout)

typedef pairpii;

#define mp make_pair

inline int gi()

while(ch>='0' && ch<='9')

return f*sum;

}const int n=1000010,inf=1e9+10;

int a[n],b[n],f[n][2],g[n][2],n;

void dfs(int id,int ex,int c)

int main()

if(a[i]>=b[i-1])

if(b[i]>=a[i-1])

if(b[i]>=b[i-1])

}if(!((f[n<<1][0]<=n&&g[n<<1][0]>=n)||(f[n<<1][1]<=n&&g[n<<1][1]>=n)))puts("-1");

else

puts("");

return 0;

}

JOISC 2015 Day 1 卡片占卜

點此看題 可以把原來的陣列表示成差分陣列,那麼只有a 1 a b 1.a 1,a b 1.a 1,a b 1.這四個位置有值,我們要把所有值給消去。把操作理解為建邊,那麼找出兩個關鍵點的最短路就是消去這兩個關鍵點,那麼我們消去兩對關鍵點就可以了,有乙個特殊情況就是乙個點和n 1 n 1n 1相連,那...

JOISC 2014 Day1 有趣的家庭菜園

joisc 2014 day1 有趣的家庭菜園 前置技能 樹狀陣列。如果我們知道了目標序列,我們就可以構造乙個序列p,它的每乙個元素就是目標序列這一位置的元素在原序列的位置,那麼答案就是原位置序列 也就是 通過氣泡排序達到目標序列所需的交換次數目。而氣泡排序的交換次數就是p的逆序對的數量。由於要滿足...

QBXT2020十一 Day1 上課筆記

選擇 難度小 好寫的列舉方法 老師甚至講了dfs爆搜最短路,dfs爆搜全宇宙 dfs求解圖中環 記錄vis陣列,查詢是否重複訪問節點 記錄是否入棧,即搜尋過後要將vis歸零 八皇后問題 按行搜尋或者按照列搜尋。noi1999 生日蛋糕 剪枝方法 老師講了單源最短路徑 單源最短路徑 rightarro...