Problem A: 回文(签到题)
Description
小王想知道一个字符串是否为ABA’型字符串。ABA’型字符串的定义:S=ABA’,A,B,A’都是原字符串的子串(不能是空串),A’的意思是A的反转串,B不一定要和A或A’不同。符合ABA’型的例如:"aba”,"acbbca”,"abcefgcba”等。"Abcefgcba”是ABA’型,因为它能找到一组对应的A("abc”),B(”efg”)和A’("cba")满足定义。
Input
第一行给测试总数T(T <= 1000),接下来有T组测试数据。
每组测试数据有一行字符串S(1 <= |S| <= 50000),字符串保证只有小写或大写英文字母。
Output
每组测试数据输出一行,如果S是ABA’型字符串,输出"YES”,否则输出"NO"。
Sample Input
5 abA gg Codeforces acmermca myacm
Sample Output
NO NO NO YES YES
Solve:
直接判断字符串长度是否大于3并且首尾字符相等,否则就不是
Code:
1 #include <bits/stdc++.h> 2 using namespace std; 3 static const int MAXN = 5e4 + 10; 4 5 int main() 6 { 7 int t; 8 scanf("%d" , &t); 9 while(t--) 10 { 11 char data[MAXN] = {‘\0‘}; 12 scanf(" %s" , data); 13 int si = strlen(data); 14 if(si <= 2 || data[0] != data[si - 1]) 15 puts("NO"); 16 else 17 puts("YES"); 18 } 19 }
Problem D: 买iphoneTime(数学、中途相遇法)
Description
自从上次仓鼠中了1000万彩票后,彻底变成了土豪了,一群人愿意认他做干爹,仓鼠决定送他的干儿子每人一部iphone。仓鼠今天带了一群人去买iphone,每个人身上都背着一个大背包,只有3种背包,分别能装a,b,c个iphone,仓鼠希望每个人都能用iphone装满自己的背包。仓鼠有n个干儿子,也就是要买n部手机,仓鼠带了k个人去买手机,问是否存在一种情况能让每个买iphone的人的背包都装满
Input
输入包含多组测试数据,每组一行,包含5个整数n, k, a, b, c
(1 <= n, k , a, b, c <= 10000)
abc可以相同
Output
如果存在输出Yes,否则输出No
Sample Input
10 3 3 3 4 20 7 1 1 1 80 3 100 3 3 15 4 3 5 6
Sample Output
Yes No No Yes
HINT
样例一3个人分别带大小为 3 3 4的背包去买手机正好每个人都装满
样例二 很明显只有一种背包,全部都是1也无法买20部iphone
样例四 4个人分别带大小为 3 3 3 6的背包去买手机正好每个人都装满
Code:
1 #include <bits/stdc++.h> 2 using namespace std; 3 int n , k , a , b , c; 4 int main() 5 { 6 while(~scanf("%d" , &n)) 7 { 8 bool flag = 0; 9 scanf("%d%d%d%d" , &k , &a , &b , &c); 10 for(int x = 0 ; x <= k ; ++x) 11 { 12 for(int y = 0 ; k - y - x >= 0 ; ++y) 13 { 14 int z = k - x - y; 15 if(x * a + y * b + z * c == n) 16 { 17 puts("Yes"); 18 flag = 1; 19 break; 20 } 21 } 22 if(flag) 23 break; 24 } 25 26 if(!flag) 27 puts("No"); 28 } 29 }