您的位置:首页 > 大数据 > 人工智能

USACO training训练题解【1】

2016-12-15 12:34 513 查看
第一章完结

Greedy Gift Givers

/*
ID: tominute
PROG: gift1
LANG: C++
*/
#include
#include
#include

using namespace std;

int main() {
ofstream fout ("gift1.out");
FILE *fp;
fp=fopen("gift1.in","r");
int n,a,b;
fscanf(fp,"%d",&n);
char name[10][20];
char buf[10][20];
char kk[20];
int gift[10][2];
int money[10]={0};
for(int i=0;i


Friday the Thirteenth

/*
ID: tominute
PROG: friday
LANG: C++
*/
#include
#include
#include

using namespace std;

int main() {
ofstream fout ("friday.out");
FILE *fp;
fp=fopen("friday.in","r");
int n,j,k,i,day=3;
fscanf(fp,"%d",&n);
fclose(fp);
int month[12]={31,28,31,30,31,30,31,31,30,31,30,31};
int week[7]={0};
for(i=0;i


Broken Necklace

/*
ID: tominute
PROG: beads
LANG: C++
*/
#include
#include
#include

using namespace std;

int main() {
ofstream fout ("beads.out");
FILE *fp;
fp=fopen("beads.in","r");
int n,k,i;
int r_max=0,l_max=0,rmax=0,lmax=0,sum=0;
char beads[360],bead[360];
fscanf(fp,"%d",&n);
fscanf(fp,"%s",beads);
fclose(fp);
for(i=0;i=rmax)rmax=r_max;
r_max=0;
strcpy(bead,beads);
k=i-1;
if(k==-1)k=n-1;
switch(bead){
case 'b':
if(bead[k]=='w')bead[k]='r';
while(bead[k]=='r'){
k--;l_max++;
if(k==-1)k=n-1;
if(bead[k]=='w')bead[k]='r';
}break;
case 'r':
if(bead[k]=='w')bead[k]='b';
while(bead[k]=='b'){
k--;l_max++;
if(k==-1)k=n-1;
if(bead[k]=='w')bead[k]='b';
}break;
default :break;
}
lmax=l_max;
l_max=0;
if((lmax+rmax)>=sum)sum=lmax+rmax;
if(sum>n)sum=n;
lmax=0;rmax=0;
}
if(sum==0)sum=n;
fout<


Milking Cows

/*
ID: tominute
PROG: milk2
LANG: C++
*/
#include
#include
#include

using namespace std;
int time1[1000000]={0};
int main() {
ofstream fout ("milk2.out");
FILE *fp;
fp=fopen("milk2.in","r");
int n,k,i,milk=0,nomilk=1,max=0,min=
4000
10000;
int max_milk=0,max_nomilk=0;
fscanf(fp,"%d",&n);
int start[5000],end[5000];
for(i=0;imax)max=end[i];
if(start[i]

Transformations

/*
ID: tominute
PROG: transform
LANG: C++
*/
#include
#include
#include
#include
using namespace std;
void ro90(char raw[50][50],int n){
char temp[50][50];
for(int i=0;i

Name That Number

/*
ID: tominute
PROG: namenum
LANG: C++
*/
#include
#include
#include

using namespace std;

int main() {
FILE *fp,*dict,*fout;
int i,n,k=0,state=0;
char t[20],d[20];
int num[20];
int para[20]={0};
char test[20]={'\0'};
char phone[8][4]={"ABC","DEF","GHI","JKL","MNO","PRS","TUV","XYZ"};
fp=fopen("namenum.in","r");
fout=fopen("namenum.out","w");
fscanf(fp,"%s",t);
fclose(fp);
n=strlen(t) ;
for(i=0;i=0){
for(i=0;i=0;k--){
para[k]++;
if(para[k]==3){
para[k]=0;
}
else break;
}
}
k=0;
}
if(state==0)
fprintf(fout,"NONE\n");
fclose(fout);
//cout<


Palindromic Squares

/*
ID: tominute
PROG: palsquare
LANG: C++
*/
#include
#include
#include

using namespace std;
int coun=0;
void conv(int base,int num,char out[20]){
char outnum[20];
int yu;
if(num==0){
coun=1;
out[0]=0;
}
else{
for(int i=0;num!=0;i++){
yu=num%base;
num=num/base;
if(yu<10)
outnum[i]=yu+48;
else
outnum[i]=yu+55;
coun++;
}
for(int i=0;i


Dual Palindromes

/*
ID: tominute
PROG: dualpal
LANG: C++
*/
#include
#include
#include

using namespace std;
int coun=0;
void conv(int base,int num,char out[33]){
char outnum[33];
int yu;
if(num==0){
coun=1;
out[0]=0;
}
else{
for(int i=0;num!=0;i++){
yu=num%base;
num=num/base;
if(yu<10)
outnum[i]=yu+48;
else
outnum[i]=yu+55;
coun++;
}
for(int i=0;i=2){
geshu++;
fprintf(fout,"%d\n",i);
}
k=0;
}
fclose(fout);
getchar();
return 0;
}


Mixing Milk

/*
ID: tominute
PROG: milk
LANG: C++
*/
#include
#include
#include

using namespace std;
long int farmer[5000][2];
int main() {
FILE *fp,*fout;
int i=0,j,m;
long int n,temp,count=0,total=0;
fp=fopen("milk.in","r");
fout=fopen("milk.out","w");
fscanf(fp,"%d %d",&n,&m);
for(i=0;in){
farmer[i][1]=n-count+farmer[i][1];
break;
}
}
for(j=0;j<=i;j++){
total=total+farmer[j][0]*farmer[j][1];
}
//cout<


Barn Repair

/*
ID: tominute
PROG: barn1
LANG: C++
*/
#include
#include
#include

using namespace std;
void test(int *flag,int p,int q,int *START,int *END){
int start,end,len=0;
for(int j=p;j<=q;j++){
if(flag[j-1]==1){
start=j;
j++;
while((flag[j-1]==0)&&(j<=q)){
j++;
}
end=j;
j=start;
if(len<=end-start-1){
*END=end;
*START=start;
len=end-start-1;
}
}
}
}
int main() {
FILE *fp,*fout;
int i=0,j,m,s,c,total=0,END,START,count=0,temp;
int stall[200],mem[50][2];
int flag1[200]={0};
int outflag[200]={1};
fp=fopen("barn1.in","r");
fout=fopen("barn1.out","w");
fscanf(fp,"%d %d %d",&m,&s,&c);
for(i=0;istall[j]){
temp=stall[i];
stall[i]=stall[j];
stall[j]=temp;
}
}
}
for(i=0;i


Prime Cryptarithm

/*
ID: tominute
PROG: crypt1
LANG: C++
*/
#include
#include
#include

using namespace std;
int prime[10];
int test(int *test,int digit,int num){//1 false;0 ture
int flag=0;
for(int k=0;k=0){
for(j=0;j<3;j++){
mul[j]=prime[index[j]];
}
if(mul[2]!=0){
for(j=0;j=1)continue;//test the leading digit
flag=test(temp1,n,3);
if(flag>=1)continue;//test the first partial mul
//cout<=1||(prime[k]==0)))continue;//test the leading digit
flag=test(temp2,n,3);
if(flag>=1)continue;//test the second partial mul
out[0]=temp1[0];
out[1]=(temp1[1]+temp2[0])%10;
flag=(temp1[1]+temp2[0])/10;
out[2]=(temp1[2]+temp2[1]+flag)%10;
flag=(temp1[2]+temp2[1]+flag)/10;
out[3]=(temp2[2]+flag)%10;
flag=(temp2[2]+flag)/10;
if(flag>=1)continue;//test the leading digit
flag=test(out,n,4);
if(flag>=1)continue;//test final mul
count++;
}
}
}
for(i=2;i>=0;i--){
index[i]++;
if(index[i]==n){
index[i]=0;
}
else break;
}
}
fprintf(fout,"%d\n",count);
//cout<


Combination Lock

/*
ID: tominute
PROG: combo
LANG: C++
*/
#include
#include
#include

using namespace std;

int main() {
FILE *fp,*fout;
int i=0,n,count=0,secret1[3],secret2[3],j,flag,up;
int sec1[3][5],sec2[3][5],out[300][3]={0},index[3]={0},temp[3];
fp=fopen("combo.in","r");
fout=fopen("combo.out","w");
fscanf(fp,"%d",&n);
fscanf(fp,"%d %d %d",&secret1 [0],&secret1 [1],&secret1 [2]);
fscanf(fp,"%d %d %d",&secret2 [0],&secret2 [1],&secret2 [2]);
fclose(fp);
if(n<=5)up=n;
else up=5;
for(i=0;i<3;i++){
for(j=0;j=0){
for(j=0;j<3;j++){
out[count][j]=sec1[j][index[j]];
}
count++;
for(i=2;i>=0;i--){
++index[i];
if(index[i]==up)
index[i]=0;
else break;
}
}
i=0;
while(i>=0){
for(j=0;j<3;j++){
temp[j]=sec2[j][index[j]];
}
for(j=0;j=0;i--){
++index[i];
if(index[i]==up)
index[i]=0;
else break;
}
}
fprintf(fout,"%d\n",count);
fclose(fout);
return 0;
}

Wormholes

/*
ID: tominute
PROG: wormhole
LANG: C++
*/
#include
#include
#include

using namespace std;
long all[11000][24]={0},pos[12][2]={0};
int total,flag=0,flag2=0,coun=0;

int getnum(int n){
n--;
if(n<=0)return 1;
else return getnum(n-1)*n;
}

void getpair1(long pos[12][2],int n,long all[][24],int row=0,int tot=0){
int k=tot/(n-1),j;
long temp[12][2];
for(int i=0;i=1)&&(flag<2)){
getpair1(pos,n-2,all,row,k);
}
for(int m=0;m<12;m++){
pos[m][0]=temp[m][0];
pos[m][1]=temp[m][1];
}
flag=0;
coun--;
row=row+k;
}
}

int retest(int nn,int n,long x,long y,long tempx,long tempy){
long tpx=1999999999,tpy=0;
int i=0,flag=0,j=0,flag2=0,jj=0;
for(j=0;jall[nn][2*j]){tpx=all[nn][2*j];tpy=all[nn][2*j+1];jj=j;}
flag2=1;
}
}
if(flag2==1){tempx=tpx;tempy=tpy;}
if(flag2==0)return 0;
flag2=0;
if(jj%2==0)flag=1;
else flag=-1;
tempx=all[nn][2*(jj+flag)];
tempy=all[nn][2*(jj+flag)+1];
if((tempx==x)&&(tempy==y))return 1;
else return retest(nn,n,x,y,tempx,tempy);
}

int main() {
FILE *fp,*fout;
int i=0,n,sum=0,flag=0;
long pair[6][4];
fp=fopen("wormhole.in","r");
fout=fopen("wormhole.out","w");
fscanf(fp,"%d",&n);
for(i=0;i

Ski Course Design

/*
ID: tominute
PROG: skidesign
LANG: C++
*/
#include
#include
#include

using namespace std;

int main(void)
{
int N,i,temp,diff,flag,sum=0;
long out=999999999;
int height[1000]={0};
ifstream fin("skidesign.in");
fin >> N;
for(i=0;i>height[i];
fin.close();
for(i=1;i<=83;i++){
sum=0;
for(int j=0;j(i+17))sum+=(height[j]-i-17)*(height[j]-i-17);
}
if(sum

Arithmetic Progressions

/*
ID: tominute
PROG: ariprog
LANG: C++
*/
#include
#include
#include
#include

using namespace std;
int square(int test,int M){
int i,j,upp=sqrt(test),diff,iii,difff;
if(M=iii;i--){
diff=test-i*i;
if(diff==0)return 1;
difff=sqrt(diff);
if(difff*difff==diff)return 1;
}
return 0;
}
int main(void)
{
int N,i,M,a,b,test,sum=0,m,flag=0,k,n,aa;
ifstream fin("ariprog.in");
fin >> N>>M;
m=M;
M=2*M*M;
k=M/(N-1);
fin.close();
ofstream fout("ariprog.out");
if(((m+N)<20)||(N<15)){
for(b=1;b<=k;b++){
aa=M-(N-1)*b;
for(a=0;a<=aa;a++){
for(i=0;i

Mother's Milk

/*
ID: tominute
PROG: milk3
LANG: C++
*/
#include
#include
#include
#include
#include

using namespace std;

int main(void)
{
int a,b,c,left[21]={0},a1,b1,c1,flag,count=0,out[21]={0},r;
ifstream fin("milk3.in");
FILE *fout;
fout=fopen("milk3.out","w");
fin >>a>>b>>c;
fin.close();
c1=c;a1=0;b1=0;left[c1]=1;
for(int i=0;i<5000000;i++){
r=rand()%6;
switch(r){
case 0:if(c1>(a-a1)){c1=c1-(a-a1);a1=a;}//c->a
else{a1+=c1;c1=0;}
if(a1==0)left[c1]=1;
if(a1>(b-b1)){a1=a1-(b-b1);b1=b;}//a->b
else{b1+=a1;a1=0;}break;
case 1:if(c1>(b-b1)){c1=c1-(b-b1);b1=b;}//c->b
else{b1+=c1;c1=0;}
if(a1==0)left[c1]=1;
if(b1>(a-a1)){b1=b1-(a-a1);a1=a;}//b->a
else{a1+=b1;b1=0;}break;
case 2:	if(a1>(c-c1)){a1=a1-(c-c1);a1=a;}//a->c
else{c1+=a1;a1=0;}
if(a1==0)left[c1]=1;break;
case 3:if(b1>(c-c1)){b1=b1-(c-c1);b1=b;}//b->c
else{c1+=b1;b1=0;}
if(a1==0)left[c1]=1;break;
case 4:	if(a1>(b-b1)){a1=a1-(b-b1);b1=b;}//a->b
else{b1+=a1;a1=0;}break;
case 5:if(b1>(a-a1)){b1=b1-(a-a1);a1=a;}//b->a
else{a1+=b1;b1=0;}break;
}
}
for(int i=0;i<21;i++){
if(left[i]==1){out[count]=i;count++;}
}
for(int i=0;i<(count-1);i++){
fprintf(fout,"%d ",out[i]);
}
fprintf(fout,"%d\n",out[count-1]);
fclose(fout);
//cout<<"end"<


Number Triangles

/*
ID: tominute
PROG: numtri
LANG: C++
*/
#include
#include
#include
#include
#include

using namespace std;
long temp[1010]={0};
long numtri[1010][1010]={0};
int main(void)
{
int n,i,k=1;
ifstream fin("numtri.in");
FILE *fout;
fin >>n;
for(i=1;i<=n;i++){
for(int j=1;j<=i;j++){
fin>>numtri[i][j];
}
}
fin.close();
/*for(i=1;i<=n;i++){
for(int j=0;j[i]=0;j--){
if(temp[j]>=temp[j-1])temp[j]+=numtri[i][j];
else temp[j]=temp[j-1]+numtri[i][j];
}
}
for(i=1;i<=n;i++){
if(temp[i]>temp[0])temp[0]=temp[i];
}
fout=fopen("numtri.out","w");
fprintf(fout,"%ld\n",temp[0]);
fclose(fout);
//getchar();
return 0;
}


Prime Palindromes

/*
ID: tominute
PROG: pprime
LANG: C++
*/
#include
#include
#include
#include

using namespace std;
int num(long a){
int count=0;
while(a>=1){
a=a/10;
count++;
}
return count;
}
int zhishu(long test){
//long k=test/2;
long kk=sqrt(test);
for(long i=3;i<=kk;i+=2)
if(test%i==0)return 1;
return 0;
}
int main(void)
{
int na,nb,i,k=0,index[2][10],ind[8]={5,10,10,10,10,10,10,10},dex[8]={0};
long test,a,b;
for(i=0;i<=9;i++)
index[1][i]=i;
for(i=0;i<=4;i++)
index[0][i]=2*i+1;
ifstream fin("pprime.in");
FILE *fout;
fin >>a>>b;
fin.close();
na=num(a);
nb=num(b);
fout=fopen("pprime.out","w");
for(i=na;i<=nb;i++){
for(int j=0;j<8;j++)dex[j]=0;k=0;
while(k>=0){
if(i%2==0){
test=index[0][dex[0]];
for(int j=2;j<=i/2;j++)
test+=pow(10,j-1)*index[1][dex[j-1]];
for(int j=i/2+1;j<=i-1;j++)
test+=pow(10,j-1)*index[1][dex[i-j]];
test+=pow(10,i-1)*index[0][dex[0]];
}
if(i%2==1){
test=index[0][dex[0]];
if(i>=5){for(int j=2;j<=i/2;j++)
test+=pow(10,j-1)*index[1][dex[j-1]];}
if(i!=1)test+=pow(10,i/2)*index[1][dex[i/2]];
if(i>=5){for(int j=i/2+2;j<=i-1;j++)
test+=pow(10,j-1)*index[1][dex[i-j]];}
if(i!=1)test+=pow(10,i-1)*index[0][dex[0]];
}
if(zhishu(test)==0){
if(i==na){if((test>=a)&&(test<=b))fprintf(fout,"%ld\n",test);}
if((i==nb)&&(na!=nb)){if(test<=b)fprintf(fout,"%ld\n",test);}
if((i!=na)&&(i!=nb))fprintf(fout,"%ld\n",test);
}
for(k=(i+1)/2-1;k>=0;k--){
dex[k]++;
if(dex[k]==ind[k])dex[k]=0;
else break;
}
}
}
//cout<


Superprime Rib

/*
ID: tominute
PROG: sprime
LANG: C++
*/
#include
#include
#include
#include

using namespace std;

int zhishu(long test){
//long k=test/2;
long kk=sqrt(test);
for(long i=3;i<=kk;i+=2)
if(test%i==0)return 1;
return 0;
}
int main(void)
{
int n,i,num1[4]={2,3,5,7},num2[5]={1,3,5,7,9},k=0,index[8]={0},index_max[8]={4,5,5,5,5,5,5,5},flag;
long test;
ifstream fin("sprime.in");
FILE *fout;
fin >>n;
fin.close();
fout=fopen("sprime.out","w");
while(k>=0){
test=num1[index[0]];
flag=0;
for(i=1;i=0;k--){
index[k]++;
if(index[k]==index_max[k])index[k]=0;
else break;
}
}
fclose(fout);
//getchar();
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  usaco acm