題意:
有\(n\)個數 \(a_1, a_2,..., a_n\) 有m個數\(b_1, b_2,..., b_n\)
令\(a = a_1\times a_2\,\times ... \times \,a_n\)
令\(b = b_1\times\,b_2 \times\,...\,\times\,b_n\)
判斷\(a\)是否是\(b\)的倍數
輸入:\(n,m\)
輸出:\(yes / no\)
做法:就是個一簡單的質因數分解
#include#include#includeusing namespace std;
int n, m;
int a[1010], b[1010];
int p[3][20]={};
void divid(int op, int x)
return;
}int main()
for(int i = 1; i <= m; i++)
for(int i = 1; i <= 3; i++) }
printf("yes\n");
return 0;}/*
樣例:輸入:2 3
6 61 3 4
輸出:yes
*/
題意:
現在要生成一張n個點的有向圖。要求滿足:
1.若有\(a-> b\)的邊,則有\(b->a\)的邊
2.若有\(a->b\)的邊和\(b->c\)的邊,則有\(a->c\)的邊
3.至少有乙個點沒有自環
求方案數。 由於結果可能較大,結果對\(m\)取模
輸入:\(n,m\)
輸出:答案
做法:這道題除了題意比較坑以外,沒有什麼太大的難點。需要注意的是,按照題意,如果乙個點所在的連通塊大小大於或等於2,則該點一定有自環。
我的做法是:設\(f[i][0]\)表示\(i\)個點自由組合,且每個點都存在自環的方案數
\(f[i][1]\)表示\(i\)個點自由組合,且至少有\(1\)個點沒有自環的方案數
我轉移方程的方法有點獨特,我是看\(1\)號點所在的連通塊的點的個數進行轉移,需要注意的是轉移是需要討論\(1\)號點是否孤立為乙個點,若孤立,則有\(1\)號點自環和不自環的兩種情況,需分別進行討論,狀態轉移方程如下:
\(f[i][1]+=f[i - 1][1]\,\,\,\,1\)號點孤立且\(1\)號點存在自環
\(f[i][1] += f[i - 1][1] + f[i - 1][0]\,\,\,\,1\)號點孤立且\(1\)號點不存在自環,則其他點可以自環,可以不自環
\(f[i][1] +=\sum_^ f[i - j][1]\times c_^ \,\,\,\,\)計算\(1\)號點所在的連通塊大小為\(j\)時的方案數
\(f[i][0]+=f[i-1][0]\,\,\,\,1\)號點孤立時只能自環
\(f[i][0]+=\sum_^ f[i - j][0]\times c_^ \,\,\,\,\)計算\(1\)號點所在的連通塊大小為\(j\)時的方案數
組合數用楊輝三角就可以了。
老師講的做法是把「第\(1\)個點」改成「第\(i\)個點」,其實寫法是一樣的,只是思路不同而已。
#include #include #include using namespace std;
#define maxn 2010
#define ll long long
int n, mol;
ll f[maxn][2];// 1:符合題意 0:不符合題意
ll c[maxn][maxn];
int main()
}/* for(int i = 0; i <= n; i++) */
f[1][1] = 1; f[1][0] = 1;
for(int i = 2; i <= n; i++)
f[i][0] = (f[i][0] + 1) % mol;
}// for(int i = 1; i <= n; i++)
// printf("f[%d][0] = %lld f[%d][1] = %lld\n", i, f[i][0], i, f[i][1]);
printf("%lld\n", f[n][1]);
return 0;
}
/*樣例:
輸入:2 5
輸出:3
*/
題意:
\(a=1\,\,\,b=0\)
進行不超過b次操作,每次可以選擇一下兩種操作之一:
\(1.\,\,b\,\,+=1\)
\(2.\,a\times b\)
最後得到乙個整數\(a\),該整數字於\([l,r]\)之間,求最後的\(a\)有多少種可能
輸入:\(l,r,p\)
輸出:答案
做法:經過「觀察」,我們發現答案很小,所以我們可以通過計算出所有可能的答案(有質因子超過p則該答案不可能),然後「離散化」就可以求出了,同時再計算需要的最小步數。
牛客國慶集訓派對Day1
a 看樣例過題 include include include include include using namespace std typedef long long ll typedef pairpii const int maxn 1e5 10 vectorg maxn int a 10 i...
2019牛客國慶集訓派對day1
雖然我國慶七天溜回家了,隊友還是督促我好好打比賽.畢竟現場賽也沒幾天了,好好練習哈 判斷矩陣是否存在子矩陣滿足 x 1 le x le x 2,y 1 le y le y 2 內全是1,其他地方為0。水題,暴力判斷一下即可。include includeusing namespace std cha...
國慶DAY1訓練
j 模擬 題意 移動數字 記錄一下每個數字的位置 然後如果和0的距離為1 則交換 include using namespace std struct node p 1020000 pos intcal int x,int y int a 1020000 intmain while m for in...