周赛链接:点这里 密码:ACM7114
代码:
----------Problem A HDU 2087 剪花布条-------------------
#include<iostream>
#include<string>
using namespace std;
int main()
{
char a[1000];
char b[1000];
while(cin>>a&&(a[0]!='#'))
{
cin>>b;
int n,m,k,num(0),t,temp;
n=strlen(a);m=strlen(b);
for(int i=0;i<=n-m;i++)
{
t=0;
if(a[i]==b[0])
{
k=0;
for(int j=1;j<m;j++)
{
if(b[j]==a[i+j])
{k++;}
}
if(k==(m-1))
{num++;t=1;}
}
if(t==1)
{i=i+m-1;}
}
cout<<num<<endl;
}
return 0;
}
--------Problem B CodeForces 733A B--------------------
#include <stdio.h>
#include <string.h>
int main()
{
char a[1001];
while(~scanf("%s",a+1))
{
a[0]='E';
int len=strlen(a),sum=1,q=0;
a[len]='E';
int i,j;
for(int k=1; k<len; k++)
{
if(a[k]=='A'||a[k]=='E'||a[k]=='I'||a[k]=='O'||a[k]=='U'||a[k]=='Y')
q++;
}
for(i=0; i<=len; i++)
{
if(a[i]=='A'||a[i]=='E'||a[i]=='I'||a[i]=='O'||a[i]=='U'||a[i]=='Y')
{
for(j=i; j<=len; j++)
{
if(a[j]=='A'||a[j]=='E'||a[j]=='I'||a[j]=='O'||a[j]=='U'||a[j]=='Y')
{
if(j-i>sum)
sum=j-i;
i=j;
continue;
}
}
}
}
if(q!=0)
printf("%d\n",sum);
else
{
printf("%d\n",len);
}
}
return 0;
}
------Problem C HDU 2206 IP的计算-----------
#include<stdio.h>
#include<string.h>
int main()
{
char s[110];
int n,m,i,a,b,t;
int sum[10],str[10];
while(gets(s))
{
memset(sum,0,sizeof(sum));
memset(str,0,sizeof(str));
n=strlen(s);
m=1;
if(n>15||s[n-1]=='.'||s[0]=='.') m=0;
else
{
for(a=b=i=0;i<n;i++)
{
if(s[i]==s[i+1]&&s[i]=='.') break;
if(s[i]=='.') a++;
else if(s[i]>'9'||s[i]<'0') b++;
}
if(a!=3||b>0) m=0;
else{
for(t=i=0;i<n;i++)
if(s[i]!='.') {sum[t]=sum[t]*10+s[i]-'0';str[t]++;}
else t++;
for(i=0;i<=t;i++)
if(sum[i]>255||str[i]>3) break;
if(i>t) m=1;
else m=0;
}
}
if(m==0) printf("NO\n");
else printf("YES\n");
}
return 0;
}
<span style="color:#ff0000;">//附上一个别人的高清重置代码</span>
<span style="color:#ff0000;"></span><pre name="code" class="cpp">#include<stdio.h>
#include<string.h>
int main()
{
char a[110];
while(gets(a))
{
int i,la,flag=1,t=0;
la=strlen(a);
if(a[0]=='.'||a[la-1]=='.'||la>15)
flag=0;//筛去字符太长或前后是点的
for(i=0; i<la; i++)
if(a[i]==a[i+1]&&a[i]=='.')
{
flag=0;
break;//筛去连续点的
}
for(i=0; i<la; i++)
if(a[i]=='.')
t++;
if(t!=3)//筛去点不是3个的
flag=0;
else
{
for(i=0; i<la; i++)
{
if(a[i]!='.')
{
if(a[i]>'9'||a[i]<'0')//筛去不合格字符
flag=0;
}
}
for(i=0; i<la; i++)
{
int sum=0,k=0;
while(a[i]!='.'&&i!=la)
{
sum=sum*10+a[i]-'0';
k++;
i++;
}
if(sum>255||k>3)
{
flag=0;//筛去大于255或者.与.之间大于3个字符的
}
}
}
if(flag)
printf("YES\n");
else
printf("NO\n");
}
return 0;
}
\
</pre><pre name="code" class="cpp">---------Problem D HDU 2537 8球胜负-------------------
#include <stdio.h>
int main()
{
while(1)
{
int n;
scanf("%d",&n);
if(n==0)break;
char a[100];
scanf("%s",a);
int numr=0,numy=0;
for(int i=0; i<n; i++)
{
if(a[i]=='Y')
numy++;
if(a[i]=='R')
numr++;
if(a[i]=='B'&&numr<7)
printf("Yellow\n");
if(a[i]=='L'&&numy<7)
printf("Red\n");
if(a[i]=='B'&&numr==7)
printf("Red\n");
if(a[i]=='L'&&numy==7)
printf("Yellow\n");
}
}
return 0;
}
-----------Problem E HDU 2550 百步穿杨---------------
#include <stdio.h>
#include <algorithm>
using namespace std;
struct j
{
int chang;
int num;
} a[100];
bool cmp(j x,j y)
{
return x.chang<y.chang;
}
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int n;
scanf("%d",&n);
for(int i=0; i<n; i++)
{
scanf("%d %d",&a[i].chang,&a[i].num);
}
sort(a,a+n,cmp);
for(int i=0;i<n;i++)
{
for(int k=0;k<a[i].num;k++)
{
printf(">+");
for(int l=0;l<a[i].chang-2;l++)
{
printf("-");
}
printf("+>");
printf("\n");
}
printf("\n");
}
}
return 0;
}
-----------Problem F HDU 1859 最小长方形---------
#include <iostream>
using namespace std;
int main()
{
int x,y,max_x,min_x,max_y,min_y;
while(cin >> x >> y)
{
if(!x && !y)
break;
max_x = min_x = x;
max_y = min_y = y;
while(cin >> x >> y)
{
if(!x && !y)
break;
if(x>max_x)
max_x = x;
else if(x<min_x)
min_x = x;
if(y>max_y)
max_y = y;
else if(y<min_y)
min_y = y;
}
cout << min_x << " " << min_y << " " << max_x << " " << max_y << endl;
}
return 0;
}
----Problem G CodeForces 731A Night at the Museum------
#include<algorithm>
#include<math.h>
#include <stdio.h>
#include <cstring>
using namespace std;
int main(int argc, char** argv)
{
char ch[110];
while(scanf("%s",ch)!=EOF)
{
int ans=0;
ans=min(abs(ch[0]-'a'),abs(26-(ch[0]-'a')));
for(int i=1; i<strlen(ch); i++)
{
ans+=min(abs(ch[i]-ch[i-1]),26-abs(ch[i]-ch[i-1]));
}
printf("%d\n",ans);
}
return 0;
}
-----------Problem H CodeForces 702A Maximum Increase--
#include<cstdio>
int a[100005];
int main()
{
int n,i,c,ans,p;
while(scanf("%d",&n)!=EOF)
{
for(i=0; i<n; i++)
{
scanf("%d",&a[i]);
}
ans=1;
c=1;
for(i=1; i<n; i++)
{
if(a[i]>a[i-1])
{
c++;
}
else
{
if(c>ans)
{
ans=c;
}
c=1;
}
}
if(c>ans)
{
ans=c;
}
printf("%d\n",ans);
}
return 0;
}
ps:存存代码,万一有用呢