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...