【基础数学】计数原理
车的攻击
//用set只能得50分,因为当k很大时,insert()会导致超时 #include<iostream> #include<set> using namespace std; int main() { int n, k, r, c; set <int> s1, s2; cin >> n >> k; for(int i = 0; i < k; i++) { cin >> r >> c; s1.insert(r); s2.insert(c); } cout << n * (s1.size() + s2.size()) - s1.size() * s2.size() << endl; return 0; } //用sort和unique可以得100分 #include<iostream> #include<algorithm> using namespace std; const int MAXN = 1e6 + 5; #define ll long long int a[MAXN], b[MAXN]; int main() { int n, k; cin >> n >> k; for(int i = 0; i < k; i++) cin >> a[i] >> b[i]; sort(a, a + k); sort(b, b + k); ll sizea = unique(a, a + k) - a; //类型为ll,若为int会报错 ll sizeb = unique(b, b + k) - b; cout << (sizea + sizeb) * n - sizea * sizeb << endl; return 0; }
组合数公式代码:
int zu(int m, int n) { if(m == 0) return 1; int mut = 1; for(int i = n; i > n - m; i--) mut *= i; for(int i = m; i > 1; i--) mut /= i; return mut; }
上一篇:
微信小程序ssm电影院售票系统app