题目传送:BestCoder 1st Anniversary
1001
AC代码:
#include <map> #include <set> #include <cmath> #include <deque> #include <queue> #include <stack> #include <cstdio> #include <cctype> #include <string> #include <vector> #include <cstdlib> #include <cstring> #include <iostream> #include <algorithm> #define LL long long #define INF 0x7fffffff using namespace std; int n, m, p, q; int main() { int T; scanf("%d", &T); while(T --) { scanf("%d %d %d %d", &n, &m, &p, &q); if(q <= p) { int sum = n / m; if(n % m > 0) sum ++; int ans = sum * q; printf("%d\n", ans); } else if(q > p && ((q * 1.0) / m < p) ) { int sum = n / m; int ans = sum * q; if((n % m) * p < q) ans += (n % m) * p; else ans += q; printf("%d\n", ans); } else if(q > p && ((q * 1.0) / m >= p) ) { printf("%d\n", n * p); } } return 0; }
1002
AC代码:
#include <map> #include <set> #include <cmath> #include <deque> #include <queue> #include <stack> #include <cstdio> #include <cctype> #include <string> #include <vector> #include <cstdlib> #include <cstring> #include <iostream> #include <algorithm> #define LL long long #define INF 0x7fffffff using namespace std; const char an[] = "anniversary"; char s[105]; int len; bool dfs(int a, int b, int c) { int tb = b; for(int i = a; i < len && b < 11; i ++) { if(s[i] == an[b]) { int j; for(j = i; j < len && b < 11; j ++, b ++) { if(s[j] != an[b]) break; // cout << s[j]; } // cout << endl; if(b == 11 && c <= 2) return true; if(dfs(j, b, c + 1)) return true; else { b = tb; } } } return false; } int main() { int T; scanf("%d", &T); while(T --) { scanf("%s", s); len = strlen(s); if(dfs(0, 0, 0)) { printf("YES\n"); } else { printf("NO\n"); } } return 0; }