2238.
题目连接:点击打开链接
解题思路:
并查集判断下是否成环即可
完整代码:
#include <iostream> #include <cstdio> #include <cstring> using namespace std; int n , m; bool flag; const int maxn = 10001; int f[maxn]; void init() { for(int i = 0 ; i < maxn ; i ++) f[i] = i; } int find(int x) { return f[x] = f[x] == x ? x : find(f[x]); } void solve(int a , int b) { int x = find(a); int y = find(b); if(x == y) flag = true; else f[x] = y; } int main() { #ifdef DoubleQ freopen("in.txt" , "r" , stdin); #endif while(cin >> n >> m) { init(); int a , b; flag = false; for(int i = 0 ; i < m ; i ++) { cin >> a >> b; solve(a , b); } if(flag) cout << "NO" << endl; else cout << "YES" << endl; } }
2236.
题目连接:点击打开链接
解题思路:
遍历数组,取起始点与障碍物差的最小值即可
完整代码:
#include <algorithm> #include <iostream> #include <cstring> #include <complex> #include <cstdio> #include <string> #include <cmath> #include <queue> using namespace std; typedef long long LL; const int MOD = int(1e9)+7; const int INF = 0x3f3f3f3f; const double EPS = 1e-9; const double PI = acos(-1.0); //M_PI; int n , x , y; string s; char g[101][101]; int main() { #ifdef DoubleQ freopen("in.txt","r",stdin); #endif while(cin >> n >> x >> y) { for(int i = 1 ; i <= n ; i ++) { cin >> s; for(int j = 1 ; j <= n ; j ++) g[i][j] = s[j-1]; } int minn = INF; for(int i = 1 ; i <= n ; i ++) { for(int j = 1 ; j <= n ; j ++) { if(g[i][j] == '#') { int k = abs(i - x) + abs(j - y); if(k < minn) minn = k; } } } cout << minn + 1 << endl; } return 0; }
2235.
题目连接:点击打开链接
解题思路:
先求出各个毒药的毒性,然后从大到小排序,依次混合即可,这是一种贪心的解法。
完整代码:
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <cmath> using namespace std; int n , m , k; const int maxn = 1000001; double f[maxn]; bool cmp(double a , double b) { return a > b; } int main() { #ifdef DoubleQ freopen("in.txt" , "r" , stdin); #endif int T; cin >> T; while(T--) { cin >> n >> k >> m; f[1] = 1.0; for(int i = 2 ; i <= n ; i ++) { f[i] = f[i-1] + ((i-1) * k) % m; } sort(f + 1 , f + n + 1 , cmp); double sum = 2.0 * sqrt(f[1] * f[2]); for(int i = 3 ; i <= n ; i ++) { sum = 2 * sqrt( sum * f[i]); } printf("%.3lf\n" , sum); } }
2234.
题目连接:点击打开链接
解题思路:
如果p == q,那么一张就可以;如果p>q,那么需要q张;如果p < q,那么我们去暴力计算;此题最坑的是当p == 1的情况,这种情况下我们需要q张!!!
完整代码:
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <cmath> using namespace std; typedef long long LL; const int maxn = 1000001; LL p , q; LL f[maxn]; int deal(int a , int b) { int sum = 1; for(int i = 1 ; i <= b ; i ++) sum *= a; return sum; } int main() { #ifdef DoubleQ freopen("in.txt" , "r" , stdin); #endif int T; scanf("%d",&T); while(T--) { scanf("%d%d",&p,&q); if(p == 1) { cout << q << endl; continue; } if(q < p) { printf("%d\n" , q); } else if(q == p) { printf("1\n"); } else { int cnt = 1; int temp = q , tot = 0; while(temp > 1) { int key = 1; while(key * p <= temp) { key *= p; } temp -= key; tot ++; } if(temp == 1) tot ++; printf("%d\n" , tot); } } }
2233.
题目连接:点击打开链接
解题思路:
暴力的模拟!!!
完整代码:
#include <iostream> #include <cstdio> #include <algorithm> #include <cstring> using namespace std; string s; int page; const int maxn = 1111; char g[maxn][maxn]; void f1() { int key = 4; for(int k = 1 ; k <= page ; k ++) { int key = k * 4; for(int j = 1 ; j <= 4 ; j ++) { for(int i = key ; i > key - 4 ; i --) { cout << g[i][j]; } } } cout << endl; } void f2() { int key = 4; for(int k = 1 ; k <= page ; k ++) { int key = k * 4; for(int i = key ; i > key - 4 ; i --) { for(int j = 4 ; j >= 1 ; j --) { cout << g[i][j]; } } } cout << endl; } void f3() { int key = -3; for(int k = 1 ; k <= page ; k ++) { key += 4; for(int j = 4 ; j >= 1 ; j --) { for(int i = key ; i < key + 4 ; i ++) { cout << g[i][j]; } } } cout << endl; } int main() { #ifdef DoubleQ freopen("in.txt" , "r" , stdin); #endif // DoubleQ int n; while(cin >> n) { getchar(); getline(cin , s); int len = s.length(); page = len % 16 == 0 ? len / 16 : len / 16 + 1; int cnt = 0; for(int i = 1 ; i <= page * 4 ; i ++) { for(int j = 1 ; j <= 4 ; j ++) { if(cnt < len) g[i][j] = s[cnt++]; else g[i][j] = '-'; } } if(n == 1) { f1(); } else if(n == 2) { f2(); } else if(n == 3) { f3(); } } }