毒瘤题,连掉三天分,gank
题意,把n只羊养成一种颜色,要有两只羊同一种颜色才能染成另一种颜色。所以只要有一只羊有两种以上就可以了,还有注意只有一只羊的情况。
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
char s[100010];
int d[100];
int main()
{
int n;cin>>n;
memset(d,0,sizeof(d));
bool flag=0;
for(int i=0;i<n;i++)
{
char c;cin>>c;
d[c-'a']++;
if(d[c-'a']>1)flag=1;
}
if(flag||n==1)puts("Yes");
else puts("No");
return 0;
}
给出n对数字,每对数字选一个,找出他们的公约数。
思路:每对数乘起来,对着n个数找最大公约数gcd,然后简单判断一下这个数是不是给出的某个数字。
规律题,设这串字符串为1~n,看作为首位相连,第一次翻转(无论你在哪个位置),得到的结果首位相连,必然是n~1,
再翻转一次,首位相连,必然是1~n。
分析一下样例,设为 1 2 3 4 5 6 7 8 ,第一次翻转后为6 5 4 3 2 1 8 7,复制一段在后面就有了 6 5 4 3 2 1 8 7 6 5 4 3 2 1 8 7
第二次翻转为6 7 8 1 2 3 4 5 ,复制一段在后面就为6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5
所以只要把原字符串复制一份放在后面,然后遍历一遍找出最长的子串,输出min(n,len) (len为这个子串的长度)