https://codeforces.com/contest/1550
A. Find The Array
第十五分钟完成
#include <iostream> #include <cstdio> #include <algorithm> #include <cstring> #include <string> #include <math.h> #include <set> using namespace std; typedef long long LL; const int N = 130; int t, s; int main(){ cin >> t; while(t--){ cin >> s; if(s == 1){ printf("%d\n", 1); continue; } int i = 1; s -= 1; int res = 1; while(s > 0){ res++; i += 2; s -= i; } printf("%d\n", res); } return 0; }
B. Maximum Cost Deletion
有两次WA,因为没考虑到细节
第73分分钟完成
#include <iostream> #include <cstdio> #include <algorithm> #include <cstring> #include <string> #include <math.h> using namespace std; int t, n, a, b; string s; //计算s最少可以被抽成几段 int get_min(){ int res = 1; char tmp = s[0]; for(int i = 1; i < n; i++){ if(tmp == s[i]) continue; res++; tmp = s[i]; } return res / 2 + 1; } int main(){ cin >> t; while(t--){ cin >> n >> a >> b; cin >> s; int res = 0; int d = get_min(); if(b >= 0){ res = (a + b) * n; }else{ res = a * n + b * d; } printf("%d\n", res); } return 0; }
C. Manhattan Subarrays
只想到了暴力解法,第112分钟完成,在test3超时。
#include <iostream> #include <cstdio> #include <algorithm> using namespace std; typedef long long LL; const int N = 2e5 + 10; int t, n; int a[N]; int get_d(int xp, int yp, int xq, int yq){ return abs(xp - xq) + abs(yp - yq); } bool is_badtriple(int bi, int i, int bj, int j, int bk, int k){ int x = get_d(bi, i, bj, j); int y = get_d(bk, k, bj, j); int z = get_d(bi, i, bk, k); if(x == y + z || y == x + z || z == x + y) return true; else return false; } bool is_goodsubarray(int l, int r){ for(int i = l; i <= r - 2; i++){ for(int j = i + 1; j <= r - 1; j++){ for(int k = j + 1; k <= r; k++){ if(is_badtriple(a[i], i, a[j], j, a[k], k)) return false; } } } return true; } int main(){ cin >> t; while(t--){ cin >> n; for(int i = 0; i < n; i++){ cin >> a[i]; } if(n == 1 || n == 2) { printf("%d\n", n * (n + 1) / 2); continue; } LL res = n + n - 1; //长度为1和2的子序列数量 for(int i = 0; i < n - 2; i++){ for(int j = 2; j < n; j++){ if(is_goodsubarray(i, i + j)) res += 1; } } printf("%d\n", res); } return 0; }