赞
踩
后面几题都自己暴力对拍了一下,可能还会有错大家可以参考。
基本思路:
我们可以直接手算,或者求稳的话随便枚举一下所有情况就好了,下面是用的状态枚举。
答案: 14
参考代码:
#pragma GCC optimize(2) #pragma GCC optimize(3) #include <bits/stdc++.h> using namespace std; #define IO std::ios::sync_with_stdio(false) #define ll long long #define rep(i, l, r) for (int i = l; i <= r; i++) #define per(i, l, r) for (int i = l; i >= r; i--) #define mset(s, _) memset(s, _, sizeof(s)) #define pb push_back #define pii pair <int, int> #define mp(a, b) make_pair(a, b) #define INF 0x3f3f3f3f inline int read() { int x = 0, neg = 1; char op = getchar(); while (!isdigit(op)) { if (op == '-') neg = -1; op = getchar(); } while (isdigit(op)) { x = 10 * x + op - '0'; op = getchar(); } return neg * x; } inline void print(int x) { if (x < 0) { putchar('-'); x = -x; } if (x >= 10) print(x / 10); putchar(x % 10 + '0'); } bool can(string s){ int cnt = 0,n = s.size(); for(int i = 0 ; i < n ; i++){ if(s[i] == '(') cnt++; else{ cnt--; if(cnt < 0) return false; } } return cnt == 0; } signed main() { IO; int ans = 0; for(int i = 0 ; i < (1 << 8) ; i++){ string str; int cnt = 0; for(int j = 0 ; j < 8 ; j ++){ if(i >> j & 1){ str += '('; cnt++; }else { str += ')'; } } if(cnt != 4) continue; if(can(str)) ans++; } cout << ans << '\n'; return 0; }
这个没啥好说的边最少的无向连通图就是树,n-1条边
答案: 2018
基本思路:
用全排列函数直接算一下字符串的全排列就好了,可以用set维护一下防止有重复情况。
答案; 2520
参考代码:
#pragma GCC optimize(2) #pragma GCC optimize(3) #include <bits/stdc++.h> using namespace std; #define IO std::ios::sync_with_stdio(false) #define ll long long #define rep(i, l, r) for (int i = l; i <= r; i++) #define per(i, l, r) for (int i = l; i >= r; i--) #define mset(s, _) memset(s, _, sizeof(s)) #define pb push_back #define pii pair <int, int> #define mp(a, b) make_pair(a, b) #define INF 0x3f3f3f3f inline int read() { int x = 0, neg = 1; char op = getchar(); while (!isdigit(op)) { if (op == '-') neg = -1; op = getchar(); } while (isdigit(op)) { x = 10 * x + op - '0'; op = getchar(); } return neg * x; } inline void print(int x) { if (x < 0) { putchar('-'); x = -x; } if (x >= 10) print(x / 10); putchar(x % 10 + '0'); } signed main() { IO; string str = "LANQIAO"; sort(str.begin(),str.end()); set<string> st; do{ st.insert(str); }while (next_permutation(str.begin(),str.end())); cout << st.size
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。