Souvenir
2 1 2 2 1 1 2 3 4
1 3
有点贪心的意味,整套买省钱的尽量整套买,不能整套买的,看一整套与单个买哪个省钱。然而终测没过,然后交,并没有终测数据。。。


#include <iostream> #include <cstring> #include <algorithm> #include <cstdio> using namespace std; int main() { int T; cin >> T; int n, m, p, q; int ans; while(T--) { ans = 0; cin >> n >> m >> p >> q; int zu = n / m; int yu = n % m; if(zu == 0) { ans = min(yu*p, q); } else { if(yu == 0) { ans = min(zu * q, n * p); } else { ans = min(zu * q + yu * p, min((zu + 1)* q , n * p)); } } cout << ans << endl; } return 0; }
Hidden String
Today is the 1st anniversary of BestCoder. Soda, the contest manager, gets a string ss of length nn. He wants to find three nonoverlapping substrings s[l_1..r_1]s[l1..r1], s[l_2..r_2]s[l2..r2], s[l_3..r_3]s[l3..r3] that:
-
1 le l_1 le r_1 < l_2 le r_2 < l_3 le r_3 le n1≤l1≤r1<l2≤r2<l3≤r3≤n
-
The concatenation of s[l_1..r_1]s[l1..r1], s[l_2..r_2]s[l2..r2], s[l_3..r_3]s[l3..r3] is "anniversary".
There are multiple test cases. The first line of input contains an integer TT (1 le T le 100)(1≤T≤100), indicating the number of test cases. For each test case:
There's a line containing a string ss (1 le |s| le 100)(1≤∣s∣≤100) consisting of lowercase English letters.
For each test case, output "YES" (without the quotes) if Soda can find such thress substrings, otherwise output "NO" (without the quotes).
2 annivddfdersewwefary nniversarya
YES NO


#include <cstdio> #include <iostream> #include <algorithm> #include <cstring> using namespace std; char str[110]; char const s[] = "anniversary"; int vis[110]; int len, h; bool dfs(int a, int b) { h++; int i, j, k; for(i = a; i < len; ++i) { k = b; if(str[i] == s[k]) { k++; for(j = i+1; j < len; ++j) { if(str[j] != s[k]) break; k++; } if(s[k] == '' && h<=3) return true; if(dfs(j, k)) { return true; } } } h--; return false; } int main() { int T; scanf("%d%*c", &T); while(T--) { gets(str); len = strlen(str); h = 0; if(dfs(0, 0)) cout << "YES" << endl; else cout << "NO" << endl; } return 0; }