A
题意:给出长度相等的两个字符串,s,t,问能否找到字典序比字符串s大同时比字符串t小的字符串。
因为要找到符合题意的字符串,则应该让这个字符串尽可能和s相似,即为比s的字典序多1.
1 #include2 #include 3 #include 4 #include 5 using namespace std; 6 7 char s[105],t[105]; 8 9 int main()10 {11 int i;12 cin>>s>>t;13 int len=strlen(s);14 for(i=len-1;i>=0;i--)15 {16 if(s[i]=='z') s[i]='a';17 else18 {19 s[i]++;20 break;21 }22 }23 if(strcmp(s,t)>=0) printf("No such string\n");24 else printf("%s\n",s);25 }
题意:给出两个字符串,如果两个字母相同,且大小写相同,称为"YAY" 两个字母相同,但是大小写不同,称为"WHOOP",在保证得到的YAY最大的情况下,求YAY,WHOOP的个数。
分别统计每个串中出现的字母的个数
1 #include2 #include 3 #include 4 #include 5 using namespace std; 6 7 char a[200005],b[200005]; 8 int s[100],w[100]; 9 10 int main()11 {12 int len1,len2,i,j,ans=0,tmp=0,cnt=0;13 cin>>a;14 cin>>b;15 memset(s,0,sizeof(s));16 memset(w,0,sizeof(w));17 len1=strlen(a);18 len2=strlen(b);19 for( i=0;i 26)39 cnt+=min(s[i],w[i-32]);40 else41 cnt+=min(s[i],w[i+32]); 42 }43 printf("%d %d\n",ans,cnt); 44 }
C
题意:给出n个app,给出要启动的软件m,给出每一页放置app的个数,每启动一个软件之后,将它与前面的软件换位置,(位置已经是1的时候不用换)问按键的总数。
用一个数组将app的位置存下来,再模拟--
1 #include2 #include 3 #include 4 #include 5 using namespace std; 6 7 int a[100005],pos[100005]; 8 9 int main()10 {11 int n,m,k,i,j,t,u;12 long long ans=0;13 scanf("%d %d %d",&n,&m,&k);14 for(i=0;i
D是概率dp==先占坑= =
哎= =默默地0题滚粗--A题不知道写到哪儿去了(还是-做得不够啊--)
B题在已经问到思路的情况下还是木有写出来--因为用的是s[a[i]-64]来统计个数,然后是52个字母,i<52= =(后来才查表在大写的Z和小写的a之间的ASCII码不是连续的) 把i改成<100就过了
c题都木有看题,后来自己写的时候,被换位置搞晕了= =
加油加油---go--go--