考慮0和1的分界線,1和2的分界線,發現問題可以轉化為兩條不互相穿過的路徑的方案數(可重疊),題解的做法就是把一條路徑斜著平移,然後就轉化為不可重疊了。現在考慮,如何計算從(0,0)道(n,m)不相交不可重疊的方案數,一條從(0,1)出發到達(n-1,m),一條從(1,0)出發到達(n,m-1),將他們乘起來的結果還包含相交的情況,於是再減去從(0,1)到(n,m-1)與(1,0)到(n-1,m)的方案數。
#include #define rep(i,a,b) for(int i=a;i<=b;++i)
#define pb push_back
#define mp make_pair
#define fr first
#define sc second
typedef long long ll;
const int n = 1e5 + 7;
const ll mod = 1e9 + 7;
using namespace std;
ll n,m,cc[2005][2005];
ll c(int n,int m)
int main()
return 0;
}
關鍵在於把這個矩陣,考慮成乙個鄰接矩陣,然後發現乙個每個點有兩條邊,且無自環,可以有重邊。這張圖實際上就是,每個點都屬於唯一的乙個環,環的大小大於等於2。求這種圖的方案數。好像第一類斯特靈數?還得遞推搞一下。詳見:大佬的推導
#include #define rep(i,a,b) for(int i=a;i<=b;++i)
#define per(i,a,b) for(int i=a;i>=b;--i)
#define pb push_back
typedef long long ll;
const int n = 1e5 + 7;
using namespace std;
ll dp[n],n,m;
int main()
else
}return 0;
}
\(n!\) 列舉與 \(g1\) 同構的圖,在 \(g2\) 中找到相應的邊,如果 \(m1\) 條邊都可以匹配到,則將這種方案中用到的邊壓成乙個64位二進位制數,放到set裡去重。另一種思路是,出現重算的情況就是,這個同構的圖與自身的圖相同,即使用這些點的對映,形成的新圖與原圖一致,這種自同構的情況要從答案中除去。
#include typedef unsigned long long ll;
const ll seed = 31;
const ll mod = 1e9 + 7;
inline int read()
while(c>='0'&&c<='9')
return x*f;
}using namespace std;
int n,m1,m2,g[11][11],ph[11];
pairp[1111];
int main()
for(int i=1;i<=m2;++i)
for(int i=1;i<=n;++i) ph[i]=i;do}
if(cnt == m1)s.insert(hs);
}while(next_permutation(ph+1,ph+1+n));
printf("%d\n",(int)s.size());
}return 0;
}
先寫了分塊莫隊tle,然後寫了曼哈頓mst莫隊tle,然後分塊亂狗tle,t到終場。結束後,加了個快讀,分塊莫隊ac..。還有其他一些做法,其實把整個序列在後邊複製乙份,不就變成了單個區間詢問數字種類的模板題了。(讓快讀成為習慣。。。為何泥萌常數辣麼小
#include #define rep(i,a,b) for(int i=a;i<=b;++i)
#define pb push_back
#define mp make_pair
#define fr first
#define sc second
typedef long long ll;
const int n = 1e5 + 7;
inline int read()
while(c>='0'&&c<='9')
return x*f;
}using namespace std;
int n,q,a[n];
struct ppq[n];
int b,belong[n];
void build()
bool cmp(pp a, pp b)
int sum=0,num[n];
void update(int p,int d)
bool cmp1(pp a,pp b)
int main()
sort(q+1,q+1+q,cmp);
int l=0, r=n+1;sum = 0;
for(int i=1;i<=q;++i)
sort(q+1,q+1+q,cmp1);
for(int i=1;i<=q;++i)printf("%d\n",q[i].ans);
}return 0;
}
牛客網暑期ACM多校訓練營(第一場)
j different integers 題 意 給你乙個數值元素為1到n,大小為n的陣列,q個詢問每次輸入 l,r 求a1 a2 a3 al,ar ar 1 ar 2 an中不同元素的個數 輸入範圍 1 n q 1e5 1 ai n 1 li,ri n the number of test cas...
牛客網暑期ACM多校訓練營(第一場)
rank solvedab cdef ghij 67 338 3 10o o o o 當場通過 賽後通過 尚未通過 solved by chelly chelly s solution 比賽的時候是oeis找規律過的 我們把n m的矩陣畫出來並建立座標系,左下角的點是 0,0 右上角的點是 n,m ...
牛客網暑期ACM多校訓練營(第九場)
做法 看到下標 xor 這種情況就想 fwt 可是半天沒思路,於是放棄了。其實這個 n 瘋狂暗示啊。設未知數向量為 x 列一下方程組就可以發現有 b k sum a i x j 做法就顯然了吧,把 a 和 b 分別 fwt 對應相除然後反變換即可。表示前天才學的 fwt 就不會使了。include ...