Merge pull request #28 from KiritoTRw/master

Powered By HC TECH : AutoACer Engine
This commit is contained in:
Kirigaya Kazuto 2016-08-12 10:18:08 +08:00 committed by GitHub
commit 72f1f7d810
59 changed files with 2625 additions and 0 deletions

30
HDOJ/1012_autoAC.cpp Normal file
View File

@ -0,0 +1,30 @@
#include <stdio.h>
double Factorical(int n)
{
int ans=1;int i;
double sum=1.0;
for(i=1;i<=n;++i)
{
ans=ans*i;
sum+=(double)1/ans;
}
return sum;
}
int main()
{
int i;
printf("n e\n");
printf("- -----------\n") ;
for(i=0;i<10;i++)
{
if(i==0)
printf("%d %d\n",i,1);
else if(i==1)
printf("%d %d\n",i,2);
else if(i==2)
printf("%d %.1f\n",i,2.5);
else
printf("%d %.9lf\n",i,Factorical(i));
}
return 0;
}

36
HDOJ/1013_autoAC.cpp Normal file
View File

@ -0,0 +1,36 @@
#include<stdio.h>
#include<string.h>
#define MAX 10000
char a[MAX];
void count(int n)
{
int tem,sum=0;
while(n!=0)
{
sum+=n%10;
n/=10;
}
if(sum<10)
{
printf("%d\n",sum);
}
else
{
count(sum);
}
}
int main()
{
int i,num,len;
while(scanf("%s",a)&&a[0]!='0')
{
num=0;
len=strlen(a);
for(i=0;i<len;i++)
{
num+=(a[i]-'0');
}
count(num);
}
return 0;
}

25
HDOJ/1014_autoAC.cpp Normal file
View File

@ -0,0 +1,25 @@
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
unsigned int STEP,MOD;
while(cin>>STEP>>MOD)
{
int count = 1;
int seed = 0;
do
{
seed = (seed + STEP)%MOD;
++count;
} while(seed != 0);
--count;
printf("%10d%10d ",STEP,MOD);
if(count == MOD)
printf("%s\n","Good Choice");
else
printf("%s\n","Bad Choice");
printf("\n");
}
return 0;
}

45
HDOJ/1015_autoAC.cpp Normal file
View File

@ -0,0 +1,45 @@
#include<cmath>
#include<cstdio>
#include<cstdlib>
#include<string>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
char str[20], ans[10];
int vis[20], flag;
bool cmp(char a, char b){return a > b;}
void dfs(int dep, int target, int len){
if(dep == 5){
int sum = 0;
for(int i = 1; i <= 5; i ++)
sum += (int)pow(ans[i-1]-'A'+1., i)*(int)pow(-1., i+1);
if(sum == target){
flag = 1;
printf("%s\n", ans);
}
return ;
}
for(int i = 0; i < len; i ++){
if(!vis[i]){
vis[i] = 1;
ans[dep] = str[i];
dfs(dep+1, target, len);
if(flag) return;
vis[i] = 0;
}
}
}
int main(){
int target;
while(~scanf("%d%s", &target, str) && strcmp(str, "END") && target){
flag = 0;
memset(vis, 0, sizeof(vis));
int len = strlen(str);
sort(str, str+len, cmp);
dfs(0, target, len);
if(!flag) printf("no solution\n");
memset(str, 0, sizeof(str));
}
return 0;
}

54
HDOJ/1016_autoAC.cpp Normal file
View File

@ -0,0 +1,54 @@
#include <iostream>
#include <cstdio>
#include <cstdlib>
using namespace std;
int ans[25];
int f[25];
int n;
int isprime(int x)
{
for(int i=2;i<=x/2;i++)
{
if(x%i==0)
return 0;
}
return 1;
}
void dfs(int k,int now)
{
if(k==n)
{
if(isprime(now+1))
{
ans[k]=now;
for(int i=0;i<n;i++)
{
printf("%d%c",ans[i],i==n-1?'\n':' ');
}
}
return;
}
for(int i=2;i<=n;i++)
{
if(!f[i]&&isprime(now+i))
{
f[i]=1;
ans[k]=i;
dfs(k+1,i);
f[i]=0;
}
}
}
int main()
{
int ncas=1;
while(scanf("%d",&n)!=EOF)
{
printf("Case %d:\n",ncas++);
memset(f,0,sizeof(f));
ans[0]=1;
dfs(1,1);
putchar('\n');
}
return 0;
}

27
HDOJ/1017_autoAC.cpp Normal file
View File

@ -0,0 +1,27 @@
#include <iostream>
using namespace std;
int main()
{
int N;
int n,m;
cin>>N;
int p = 1;
while(p <= N)
{
if(p != 1)
cout<<endl;
int cnt = 1;
while(cin>>n>>m && n||m)
{
int count = 0;
for(int a = 1;a <= n-2;++a)
for(int b = a+1;b <= n-1;++b)
if((a*a + b*b + m)%(a*b) == 0)
++count;
cout<<"Case "<<cnt<<":"<<" "<<count<<endl;
++cnt;
}
++p;
}
return 0;
}

19
HDOJ/1018_autoAC.cpp Normal file
View File

@ -0,0 +1,19 @@
#include<stdio.h>
#include<math.h>
int main(){
int i,temp,N;
int number;
long double member=0;
scanf("%d",&N);
while(N--){
scanf("%d",&number);
member=0;
for(i=1,temp=0;i<=number;i++){
member+=log10(i*1.0);
}
temp=floor(member)+1;
printf("%d\n",temp);
}
getchar();
return 0;
}

36
HDOJ/1019_autoAC.cpp Normal file
View File

@ -0,0 +1,36 @@
#include "stdio.h"
__int64 s[1000];
__int64 hcf(__int64 a,__int64 b)
{
__int64 r=0;
while(b!=0)
{
r=a%b;
a=b;
b=r;
}
return(a);
}
__int64 lcd(__int64 u,__int64 v,__int64 h)
{
return(u*v/h);
}
int main(int argc, char* argv[])
{
int n,m,i;
while(scanf("%d",&n)==1)
{
while(n--)
{
scanf("%d",&m);
for(i=0;i<=m-1;i++)
scanf("%I64d",&s[i]);
for(i=0;i<=m-2;i++)
{
s[i+1]=lcd(s[i],s[i+1],hcf(s[i],s[i+1]));
}
printf("%I64d\n",s[m-1]);
}
}
return 0;
}

42
HDOJ/1020_autoAC.cpp Normal file
View File

@ -0,0 +1,42 @@
#include<stdio.h>
#include<string.h>
#include<ctype.h>
char s[10010];
int main()
{
int n;
scanf("%d",&n);
getchar();
while(n--)
{
int len,i,j,count=1;
memset(s,0,sizeof(s));
scanf("%s",s);
len=strlen(s);
i=0;
j=i+1;
while(j<=len)
{
if(s[i]!=s[j])
{
if(count==1)
{
printf("%c",s[i]);
}
else
{
printf("%d%c",count,s[i]);
}
i=j;
j++;
count=1;
}
else
{
j++;
count++;
}
}
printf("\n");
}
}

12
HDOJ/1021_autoAC.cpp Normal file
View File

@ -0,0 +1,12 @@
#include <iostream>
using namespace std;
int main()
{
int n;
while(cin>>n)
if(n%8 == 2||n%8 == 6)
cout<<"yes"<<endl;
else
cout<<"no"<<endl;
return 0;
}

46
HDOJ/1022_autoAC.cpp Normal file
View File

@ -0,0 +1,46 @@
#include<stdio.h>
int main()
{
int n,i,j,k;
char in[10],out[10];
int flag[20];
while(scanf("%d %s %s",&n,in,out)!=EOF)
{
char stack[1000];
int top=-1;
i=j=k=0;
while(j<n+1&&i<n)
{
if(stack[top]==out[i]&&top!=-1)
{
top--;
flag[k]=0;
k++;
i++;
}
else
{
top++;
flag[k]=1;
k++;
stack[top]=in[j];
j++;
}
}
if(k!=2*n)
printf("No.\n");
else
{
printf("Yes.\n");
for(i=0; i<n*2; i++)
{
if(flag[i])
printf("in\n");
else
printf("out\n");
}
}
printf("FINISH\n");
}
return 0;
}

83
HDOJ/1023_autoAC.cpp Normal file
View File

@ -0,0 +1,83 @@
#include<stdio.h>
#include<string.h>
int res[101][200] = {0};
int temp[200] = {0};
void add(int *x, int *y){
int i, t;
for(i=0; x[i]!=0&&y[i]!=0; i++){
x[i] += y[i] -'0';
}
for(i; y[i]!=0; i++){
x[i] += y[i];
}
for(t=0; x[t]!=0; t++){
if(x[t+1]!=0){
x[t+1] += (x[t]-'0')/10;
}
else{
if((x[t]-'0')/10!=0){
x[t+1] += (x[t]-'0')/10+'0';
}
else{
x[t+1] = 0;
}
}
x[t] = (x[t]-'0')%10+'0';
}
}
int* multiple(int *x, int *y){
int i, j, length;
for(i=0; i<200; i++){
temp[i] = 0;
}
for(i=0; x[i]!=0; i++){
for(j=0; y[j]!=0; j++){
if(temp[i+j]!=0){
temp[i+j] += (x[i]-'0')*(y[j]-'0');
}
else{
temp[i+j] += (x[i]-'0')*(y[j]-'0')+'0';
}
}
}
length = 0;
while(temp[length]!=0){
length++;
}
for(i=0; i<length; i++){
temp[i+1] += (temp[i]-'0')/10;
temp[i] = (temp[i]-'0')%10 + '0';
}
if(temp[length]!=0){
temp[length] += '0';
}
while(temp[length]!=0){
if((temp[length]-'0')/10!=0){
temp[length+1] += temp[length]/10+'0';
}
temp[length] = (temp[length]-'0')%10+'0';
length++;
}
return temp;
}
int main(){
int n, i, j;
res[0][0] = '1';
res[1][0] = '1';
for(i=2; i<=100; i++){
for(j=0; j<i; j++){
add(res[i], multiple(res[j], res[i-j-1]));
}
}
while(scanf("%d", &n) != EOF){
i=199;
while(i>=0){
if(res[n][i] != 0){
printf("%c", res[n][i]);
}
i--;
}
printf("\n");
}
return 0;
}

40
HDOJ/1024_autoAC.cpp Normal file
View File

@ -0,0 +1,40 @@
#include <cstdio>
#include <iostream>
const int MAX = 1000005;
using namespace std;
int num[MAX], pre_max[MAX];
inline int max(int a, int b)
{
return a > b ? a : b;
}
int DP(int n, int m)
{
for(int i = 1; i <= m; ++i)
{
int tmp = 0;
for(int k = 1; k <= i; ++k)
tmp += num[k];
pre_max[n] = tmp;
for(int j = i+1; j <= n; ++j)
{
tmp = max(pre_max[j-1], tmp) + num[j];
pre_max[j-1] = pre_max[n];
pre_max[n] = max(pre_max[n], tmp);
}
}
return pre_max[n];
}
int main()
{
int n, m;
while(~scanf("%d%d", &m, &n))
{
for(int i = 1; i <= n; ++i)
{
scanf("%d", &num[i]);
pre_max[i] = 0;
}
printf("%d\n", DP(n, m));
}
return 0;
}

53
HDOJ/1025_autoAC.cpp Normal file
View File

@ -0,0 +1,53 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int a[500001];
int dp[500001];
int f[500001];
int binary_search(int k, int l, int h)
{
int mid;
while (l <= h)
{
mid = (l + h)/2;
if (f[mid] <= k)
l = mid + 1;
else
h = mid - 1;
}
return h;
}
int main()
{
int n;
int t = 0;
while (scanf("%d", &n) != EOF)
{
++t;
memset(f, -1, sizeof(f));
int i;
int tmp1,tmp2;
for (i = 0; i < n; ++i)
{
scanf("%d %d", &tmp1, &tmp2);
a[tmp1] = tmp2;
}
dp[1] = 1;
f[1] = a[1];
int len = 1;
for (i = 2; i <= n; ++i)
{
int x = binary_search(a[i], 1, len);
dp[i] = x + 1;
if ( f[i] == -1 || a[i] < f[dp[i]] )
f[dp[i]] = a[i];
if (dp[i] > len)
len = dp[i];
}
if (len == 1)
printf("Case %d:\nMy king, at most %d road can be built.\n\n", t, len);
else
printf("Case %d:\nMy king, at most %d roads can be built.\n\n", t, len);
}
return 0;
}

128
HDOJ/1026_autoAC.cpp Normal file
View File

@ -0,0 +1,128 @@
#include <cstdio>
#include <queue>
#include <cstring>
using namespace std;
const int N(103),MAXN(0x6ffffff);
struct point
{
int x,y;
point *next;
};
struct path_node
{
int pre_x,pre_y,time;
};
int maze[N][N];
path_node path[N][N];
point *ans;
bool inq[N][N];
queue<point> q;
int dx[4]={0,0,-1,1},dy[4]={-1,1,0,0};
int n,m;
void init()
{
char x;
getchar();
memset(maze,0,sizeof(maze));
memset(path,0,sizeof(path));
memset(inq,0,sizeof(inq));
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
scanf("%c",&x);
if(x=='X') maze[i][j]=-1;
else if(x!='.') maze[i][j]=x-'0';
else maze[i][j]=0;
path[i][j].time=MAXN;
}
getchar();
}
path[0][0].time=0;
path[0][0].pre_x=-1;
}
inline bool passable(int x,int y)
{
if(x<0||x>n-1||y<0||y>m-1||maze[x][y]==-1)
return false;
return true;
}
void search()
{
point s;
s.x=s.y=0;
q.push(s);
inq[s.x][s.y]=true;
while(!q.empty())
{
point u=q.front();
q.pop();
inq[u.x][u.y]=false;
int nx,ny;
for(int i=0;i<4;i++)
{
nx=u.x+dx[i];
ny=u.y+dy[i];
if(path[nx][ny].time>path[u.x][u.y].time+maze[nx][ny]+1&&passable(nx,ny))
{
path[nx][ny].time=path[u.x][u.y].time+maze[nx][ny]+1;
path[nx][ny].pre_x=u.x;
path[nx][ny].pre_y=u.y;
if(!inq[nx][ny])
{
point np;
np.x=nx,np.y=ny;
q.push(np);
inq[nx][ny]=true;
}
}
}
}
}
void print()
{
if(path[n-1][m-1].time!=MAXN)
{
point *node;
int x=n,y=m,t=0;
while(x!=-1)
{
node=new(point);
if(ans)
node->x=x,node->y=y;
else node->x=n-1,node->y=m-1;
node->next=ans;
ans=node;
x=path[node->x][node->y].pre_x;
y=path[node->x][node->y].pre_y;
}
printf("It takes %d seconds to reach the target position, let me show you the way.\n",
path[n-1][m-1].time);
point *p,*next;
for(p=ans;p;p=next)
{
while(maze[p->x][p->y])
{
printf("%ds:FIGHT AT (%d,%d)\n",++t,p->x,p->y);
maze[p->x][p->y]--;
}
if(p->next)
printf("%ds:(%d,%d)->(%d,%d)\n",++t,p->x,p->y,p->next->x,p->next->y);
next=p->next;
delete p;
}
ans=NULL;
}
else
printf("God please help our poor hero.\n");
printf("FINISH\n");
}
int main()
{
while(scanf("%d%d",&n,&m)!=EOF)
{
init();
search();
print();
}
}

28
HDOJ/1027_autoAC.cpp Normal file
View File

@ -0,0 +1,28 @@
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int a[10000],coun,n,m,i;
int main()
{
while(cin>>n>>m)
{
for(i=0;i<n;i++)
{
a[i] = i+1;
}
vector<int> iv(a,a+n);
coun = 1;
while(next_permutation(iv.begin(),iv.end()))
{
coun++;
if(coun==m)
break;
}
printf("%d",iv[0]);
for(i=1;i<n;i++)
printf(" %d",iv[i]);
printf("\n");
}
return 0;
}

31
HDOJ/1028_autoAC.cpp Normal file
View File

@ -0,0 +1,31 @@
#include <cstdio>
#include <iostream>
using namespace std;
int main()
{
int n;
int c1[125], c2[125];
while(~scanf("%d", &n))
{
for(int i = 0; i <= n; ++i)
{
c1[i] = 1;
c2[i] = 0;
}
for(int i = 2; i <= n; ++i)
{
for(int j = 0; j <= n; ++j)
{
for(int k = 0; k <= n/i*i; k += i)
c2[j+k] += c1[j];
}
for(int j = 0; j <= n; ++j)
{
c1[j] = c2[j];
c2[j] = 0;
}
}
printf("%d\n", c1[n]);
}
return 0;
}

27
HDOJ/1029_autoAC.cpp Normal file
View File

@ -0,0 +1,27 @@
#include<stdio.h>
int main()
{
long n,num,cnt,res;
while(EOF != scanf("%d",&n))
{
cnt = 0;
while(n--)
{
scanf("%d",&num);
if(0 == cnt)
{
res = num;
cnt++;
}
else
{
if(res == num)
cnt++;
else
cnt--;
}
}
printf("%d\n",res);
}
return 0;
}

40
HDOJ/1030_autoAC.cpp Normal file
View File

@ -0,0 +1,40 @@
#include <iostream>
#include <cmath>
using namespace std;
struct Note
{
int x;
int y;
int z;
};
int main()
{
Note a,b;
int m,n;
while(cin>>m>>n)
{
int sa=0;
int sb=0;
int k;
int t=ceil(sqrt(m));
a.x=t;
k=(m-(t-1)*(t-1))/2;
a.y=t-k;
k=((2*t-1)-m+(t-1)*(t-1))/2;
a.z=t-k;
if((2*t-1-m+(t-1)*(t-1))%2==0) sa=1;
if(sa==0) a.z=a.z-1;
t=ceil(sqrt(n));
b.x=t;
k=(n-(t-1)*(t-1))/2;
b.y=t-k;
k=((2*t-1)-n+(t-1)*(t-1))/2;
b.z=t-k;
if((2*t-1-n+(t-1)*(t-1))%2==0) sb=1;;
if(sb==0) b.z=b.z-1;
int ans=0;
ans=abs(a.x-b.x)+abs(a.y-b.y)+abs(a.z-b.z);
cout<<ans<<endl;
}
return 0;
}

52
HDOJ/1031_autoAC.cpp Normal file
View File

@ -0,0 +1,52 @@
#include<iostream>
#include<stdio.h>
#include<fstream>
using namespace std;
struct Node{
int num;
double times;
};
Node T[1000];
int cmp1( const void *a , const void *b )
{
struct Node *c = (Node *)a;
struct Node *d = (Node *)b;
if(c->times != d->times) return d->times - c->times;
}
int cmp2( const void *a , const void *b )
{
struct Node *c = (Node *)a;
struct Node *d = (Node *)b;
return c->num > d->num ? -1 : 1 ;
}
int main()
{
int i,j,k,n,m;
double temp;
while(EOF != scanf("%d %d %d",&n,&m,&k))
{
for(i=0;i<m;i++)
{
T[i].num = i+1 ;
T[i].times = 0;
}
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
scanf("%lf",&temp);
T[j].times += temp;
}
}
qsort(T,m,sizeof(T[0]),cmp1);
qsort(T,k,sizeof(T[0]),cmp2);
for(i=0;i<k;i++)
{
printf("%d",T[i].num);
if(i!= k-1)
printf(" ");
}
printf("\n");
}
return 0;
}

40
HDOJ/1032_autoAC.cpp Normal file
View File

@ -0,0 +1,40 @@
#include <iostream>
using namespace std;
#define MAXNUM 1000000 + 1
int result[MAXNUM];
int main()
{
int beg,end,max,count,temp;
while(cin>>beg>>end)
{
cout<<beg<<" "<<end<<" ";
if(beg > end)
{
temp = beg;beg = end;end = temp;
}
max = count = 0;
for(int t = beg;t <= end;++t)
{
if(result[t])
count = result[t];
else
{
temp = t;
count = 1;
while(temp != 1)
{
if(temp%2 == 0)
temp = temp/2;
else
temp = 3*temp + 1;
++count;
}
result[t] = count;
}
if(count > max)
max = count;
}
cout<<max<<endl;
}
return 0;
}

66
HDOJ/1033_autoAC.cpp Normal file
View File

@ -0,0 +1,66 @@
#include <iostream>
#include <string>
using namespace std;
int main()
{
string input;
while (cin>>input)
{
cout<<"300 420 moveto"<<endl;
cout<<"310 420 lineto"<<endl;
int x=310,y=420;
int len=input.length();
int flag=1;
for(int i=0;i<len;i++)
{
if(input[i]=='A')
{
switch(flag)
{
case 1:
y-=10;
flag=2;
break;
case 2:
x-=10;
flag=3;
break;
case 3:
y+=10;
flag=4;
break;
case 4:
x+=10;
flag=1;
break;
}
cout<<x<<" "<<y<<" lineto"<<endl;
}
else
{
switch(flag)
{
case 1:
y+=10;
flag=4;
break;
case 2:
x+=10;
flag=1;
break;
case 3:
y-=10;
flag=2;
break;
case 4:
x-=10;
flag=3;
break;
}
cout<<x<<" "<<y<<" lineto"<<endl;
}
}
cout<<"stroke\nshowpage"<<endl;
}
return 0;
}

60
HDOJ/1034_autoAC.cpp Normal file
View File

@ -0,0 +1,60 @@
#include<iostream>
using namespace std;
int T[500],T1[500],n;
int check()
{
int temp = T[0];
for(int j=1;j<n;j++)
{
if(temp != T[j])
return -1;
}
return temp;
}
bool isEv(int num)
{
return num%2==0?true:false;
}
int main()
{
int i,k,cnt,res;
while(scanf("%d",&n) && n)
{
for(i=0;i<n;i++)
{
scanf("%d",&T[i]);
}
cnt =0;
res = -1;
while(1)
{
res = check();
if(res != -1)
break;
for(i=0;i<n;i++)
{
T1[i] = T[i]/2;
}
for(i=0;i<n;i++)
{
if(i ==n-1)
{
T1[0] += T[n-1]/2;
}
else
{
T1[i+1] += T[i]/2;
}
}
for(i=0;i<n;i++)
{
if(false == isEv(T1[i]))
T1[i]++;
T[i] = T1[i];
}
cnt++;
}
printf("%d %d\n",cnt,res);
}
return 0;
}

54
HDOJ/1035_autoAC.cpp Normal file
View File

@ -0,0 +1,54 @@
#include <stdio.h>
int maze[11][11];
int r,c,b;
int idx;
void step(int x,int y)
{
int t;
if(x<0||x>=r||y<0||y>=c)
{
printf("%d step(s) to exit\n",idx-999);
return;
}
if(maze[x][y]>=1000)
{
printf("%d step(s) before a loop of %d step(s)\n",maze[x][y]-1000,idx-maze[x][y]+1);
return;
}
t=maze[x][y];
idx++;
maze[x][y]=idx;
switch (t)
{
case 'N':
step(x-1,y);
break;
case 'S':
step(x+1,y);
break;
case 'E':
step(x,y+1);
break;
case 'W':
step(x,y-1);
break;
}
}
int main()
{
int i,j;
while (scanf("%d%d",&r,&c),r||c)
{
scanf("%d",&b);
getchar();
for (i=0;i<r;i++)
{
for (j=0;j<c;j++)
maze[i][j]=getchar();
getchar();
}
idx=999;
step(0,b-1);
}
return 0;
}

43
HDOJ/1036_autoAC.cpp Normal file
View File

@ -0,0 +1,43 @@
#include <cstdio>
#include <cstring>
using namespace std;
int main()
{
int n;
double d;
char* time = new char[8];
scanf("%d%lf", &n, &d);
int num;
while(scanf("%d", &num) != EOF)
{
int sec = 0;
int flag = 0;
for(int i = 0; i < n; i++)
{
scanf("%s", time);
if(time[0] == '-')
{
flag = 1;
}
else
{
sec += (time[0] - '0') * 3600 + ((time[2] - '0') * 10 + time[3] - '0') * 60 + (time[5] - '0') * 10 + time[6] - '0';
}
}
if(flag == 0)
{
sec = int(sec * 1.0 / d + 0.5);
int minute = sec / 60;
int second = sec % 60;
printf("%3d: %d:", num, minute);
if(second < 10)
printf("0");
printf("%d min/km\n", second);
}
else
{
printf("%3d: -\n", num);
}
}
return 0;
}

14
HDOJ/1037_autoAC.cpp Normal file
View File

@ -0,0 +1,14 @@
#include <iostream>
using namespace std;
int main()
{
int a, b, c, min;
while (cin >> a >> b >> c) {
min = a;
if (b < min) min = b;
if (c < min) min = c;
if (min > 168) cout << "NO CRASH" << endl;
else cout << "CRASH " << min << endl;
}
return 0;
}

20
HDOJ/1038_autoAC.cpp Normal file
View File

@ -0,0 +1,20 @@
#include<iostream>
#include <iomanip>
using namespace std;
int main(){
const float pi = 3.1415927;
float diameter_inch;
int circle;
float time_sec;
int count = 1;
while(cin>>diameter_inch>>circle>>time_sec && circle != 0){
float distance;
float time_hour;
float speed;
distance = pi * diameter_inch * circle / 5280 / 12;
time_hour = time_sec / 3600;
speed = distance / time_hour;
cout<<"Trip #"<<count++<<": ";
cout<<fixed<<setprecision(2)<<distance<<" "<<speed<<endl;
}
}

44
HDOJ/1039_autoAC.cpp Normal file
View File

@ -0,0 +1,44 @@
#include <stdio.h>
#include <string.h>
int isvowel(char c){
if(c=='a'||c=='e'||c=='i'||c=='o'||c=='u')
return 1;
else
return 0;
}
int isA(char str[]){
int i=0,vowel=0,consonant=0,k;
for(k=0;k<strlen(str);k++){
if(isvowel(str[k])){
i=1;
vowel++;
consonant=0;
if(vowel>2)
return 0;
}
else{
consonant++;
vowel=0;
if(consonant>2)
return 0;
}
if(str[k]!='e'&&str[k]!='o'&&str[k]==str[k+1])
return 0;
}
if(!i)
return 0;
else
return 1;
}
int main(){
char str[25];
while(~scanf("%s",str)){
if(!strcmp(str,"end"))
break;
if(isA(str)){
printf("<%s> is acceptable.\n",str);
}
else
printf("<%s> is not acceptable.\n",str);
}
}

23
HDOJ/1040_autoAC.cpp Normal file
View File

@ -0,0 +1,23 @@
#include <iostream>
#include <algorithm>
using namespace std;
int main ()
{
int t, n, i;
int *d;
cin >> t;
while (t--) {
cin >> n;
d = (int *)malloc(sizeof(int)*n);
for (i = 0; i < n; i++) {
cin >> d[i];
}
sort (d, d+n);
cout << d[0];
for (i = 1; i < n; i++) {
cout << " " << d[i];
}
cout << endl;
}
return 0;
}

29
HDOJ/1041_autoAC.cpp Normal file
View File

@ -0,0 +1,29 @@
#include<iostream>
#include<string>
using namespace std;
string add(string s1,string s2){
if(s1.length()<s2.length()){
string temp=s1;
s1=s2;
s2=temp;
}
for(int i=s1.length()-1,j=s2.length ()-1;i>=0;i--,j--){
s1[i]=char(s1[i]+( j>=0 ? s2[j]-'0' : 0));
if(s1[i]-'0'>=10) {
s1[i]=char( (s1[i]-'0')%10+'0' );
if(i) s1[i-1]++;
else s1="1"+s1;
}
}
return s1;
}
string f[1005];
int main(){
int n;
f[1]="0"; f[2]="1"; f[3]="1"; f[4]="3"; f[5]="5"; f[6]="11";
for(int i=7;i<=1004;i++)
f[i]=add( f[i-1], add(f[i-2],f[i-2]) );
while(scanf("%d",&n)==1)
cout<<f[n]<<endl;
return 0;
}

25
HDOJ/1042_autoAC.cpp Normal file
View File

@ -0,0 +1,25 @@
#include<stdio.h>
int main()
{
int a[10000];
int i,j,c,m,n;
while(scanf("%d",&n)!=EOF){
a[0]=1;
m=0;
for(i=1;i<=n;i++)
{
c=0;
for(j=0;j<=m;j++)
{
a[j]=a[j]*i+c;
c=a[j]/10000;
a[j]=a[j]%10000;
}
if(c>0) {m++;a[m]=c;}
}
printf("%d",a[m]);
for(i=m-1;i>=0;i--) printf("%4.4d",a[i]);
printf("\n");
}
return 0;
}

1
HDOJ/1043_autoAC.cpp Normal file
View File

@ -0,0 +1 @@
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 x

149
HDOJ/1044_autoAC.cpp Normal file
View File

@ -0,0 +1,149 @@
#include<iostream>
#include<queue>
using namespace std;
char map[50][50];
int distan[12][12];
int jewels[12][3];
int mark[50][50];
int visit[12];
int sx,sy,ex,ey,dijige,youjige,cancollect,maxjewels,jieshu;
int u,n,m,t,zhubao,flag;
struct node
{
int x,y,step;
}w,p;
int dir[4][2]={1,0,-1,0,0,1,0,-1};
int bfs(int qx,int qy,int mx,int my)
{
queue<node> q;
w.x=qx;w.y=qy;w.step=0;
while(!q.empty())
q.pop();
q.push(w);
while(!q.empty())
{
p=q.front();
q.pop();
if(p.x==mx&&p.y==my)
return p.step;
for(int i=0;i<4;i++)
{
w.x=p.x+dir[i][0];
w.y=p.y+dir[i][1];
w.step=p.step+1;
if(w.x>=0&&w.x<n&&w.y>=0&&w.y<m&&map[w.x][w.y]!='*'&&mark[w.x][w.y]==0)
{
mark[w.x][w.y]=1;
q.push(w);
}
}
}
return 1000001;
}
void dfs(int weizhi,int step,int jewel)
{
if(step<0) return;
if(jieshu==1) return;
if(jewel==cancollect&&step>=0&&weizhi==zhubao+1)
{
maxjewels=jewel;
flag=1;
jieshu=1;
return;
}
if(weizhi==zhubao+1&&step>=0)
{
flag=1;
if(jewel>maxjewels)
maxjewels=jewel;
return;
}
for(int i=0;i<zhubao+2;i++)
{
if(visit[i]==0)
{
visit[i]=1;
dfs(i,step-distan[weizhi][i],jewel+jewels[i][2]);
visit[i]=0;
}
}
return;
}
int main()
{
cin>>u;
youjige=u;
dijige=1;
while(u--)
{
memset(jewels,0,sizeof(jewels));
cin>>m>>n>>t>>zhubao;
for(int i=0;i<zhubao;i++)
cin>>jewels[i][2];
memset(distan,1000001,sizeof(distan));
memset(mark,0,sizeof(mark));
memset(visit,0,sizeof(visit));
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
cin>>map[i][j];
if(map[i][j]=='@')
{
sx=i;
sy=j;
}
if(map[i][j]=='<')
{
ex=i;
ey=j;
}
if(map[i][j]>='A'&&map[i][j]<='J')
{
jewels[map[i][j]-'A'][0]=i;
jewels[map[i][j]-'A'][1]=j;
}
}
}
cancollect=0;
for(int i=0;i<zhubao;i++)
{
distan[zhubao][i]=bfs(sx,sy,jewels[i][0],jewels[i][1]);
memset(mark,0,sizeof(mark));
distan[zhubao+1][i]=bfs(ex,ey,jewels[i][0],jewels[i][1]);
memset(mark,0,sizeof(mark));
distan[i][zhubao]=distan[zhubao][i];
distan[i][zhubao+1]=distan[zhubao+1][i];
if(distan[zhubao][i]!=1000001)
cancollect+=jewels[i][2];
}
distan[zhubao][zhubao+1]=bfs(sx,sy,ex,ey);
memset(mark,0,sizeof(mark));
distan[zhubao+1][zhubao]=distan[zhubao][zhubao+1];
for(int i=0;i<zhubao;i++)
for(int j=0;j<zhubao;j++)
{
if(i<j)
{
distan[i][j]=bfs(jewels[i][0],jewels[i][1],jewels[j][0],jewels[j][1]);
memset(mark,0,sizeof(mark));
}
else
distan[i][j]=distan[j][i];
}
visit[zhubao]=1;
maxjewels=0;
flag=0;
jieshu=0;
dfs(zhubao,t,0);
cout<<"Case "<<dijige<<':'<<endl;
if(flag==1)
cout<<"The best score is "<<maxjewels<<'.'<<endl;
else
cout<<"Impossible"<<endl;
if(dijige<youjige)
cout<<endl;
dijige++;
}
return 0;
}

47
HDOJ/1045_autoAC.cpp Normal file
View File

@ -0,0 +1,47 @@
#include <stdio.h>
char maze[6][6];
int num,result;
bool placeable(int row,int col)
{
int i;
i=col-1;
while(i>=0&&maze[row][i]!='X')
if(maze[row][i--]=='*') return false;
i=row-1;
while(i>=0&&maze[i][col]!='X')
if(maze[i--][col]=='*') return false;
return true;
}
void dfs(int cnt,int max)
{
int row,col;
if(cnt==num*num)
{
max>result?result=max:1;
return;
}
else
{
row=cnt/num;
col=cnt%num;
if(maze[row][col]=='.'&&placeable(row,col))
{
maze[row][col]='*';
dfs(cnt+1,max+1);
maze[row][col]='.';
}
dfs(cnt+1,max);
}
}
int main()
{
while(scanf("%d",&num)!=EOF&&num)
{
for(int i=0;i<num;i++)
scanf("%s",maze[i]);
result=0;
dfs(0,0);
printf("%d\n",result);
}
return 0;
}

23
HDOJ/1046_autoAC.cpp Normal file
View File

@ -0,0 +1,23 @@
#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <cmath>
using namespace std;
int main(void)
{
int n;
scanf("%d", &n);
for (int i = 1; i < n + 1; ++i)
{
printf("Scenario #%d:\n", i);
int s, t;
scanf("%d%d",&s,&t);
double sum;
sum = s*t;
if ((s*t)%2)
printf("%.2f\n", sum+sqrt(2)-1);
else printf("%.2f\n", (double)sum);
printf("\n");
}
return 0;
}

41
HDOJ/1047_autoAC.cpp Normal file
View File

@ -0,0 +1,41 @@
#include<iostream>
#include<cstring>
#include<string>
#define maxn 300
using namespace std;
int numx[maxn],numy[maxn],n;
string str,tmp;
string Add(string x,string y){
string res="";
memset(numx,0,sizeof(numx));
memset(numy,0,sizeof(numy));
int lenx=x.size(),leny=y.size();
int maxlen=lenx>leny ? lenx:leny;
for(int i=0;i<lenx;i++)numx[lenx-i-1]=x[i]-'0';
for(int i=0;i<leny;i++)numy[leny-i-1]=y[i]-'0';
for(int i=0;i<=maxlen;i++){
numx[i]+=numy[i];
if(numx[i]>9){
numx[i+1]+=numx[i]/10;
numx[i]%=10;
}
}
int i=maxlen+2;
for(;i>0&&!numx[i];)i--;
for(;i>=0;i--)res+=numx[i]+'0';
return res;
}
int main()
{
while(cin>>n){
while(n--){
string sum="0";
while(cin>>str&&str!="0"){
sum=Add(sum,str);
}
cout<<sum<<endl;
if(n)cout<<endl;
}
}
return 0;
}

34
HDOJ/1048_autoAC.cpp Normal file
View File

@ -0,0 +1,34 @@
#include <iostream>
#include <string>
using namespace std;
const int LEN = 210;
char engChars[30] = {"ABCDEFGHIJKLMNOPQRSTUVWXYZ"};
char aLine[LEN];
void decipher()
{
for (int i = 0;i < strlen(aLine);i ++)
{
if (isalpha(aLine[i]))
{
int offset = (aLine[i] - 'A' + 26 - 5) % 26;
aLine[i] = engChars[offset];
}
}
}
int main ()
{
while (gets(aLine))
{
if (strcmp(aLine,"ENDOFINPUT") == 0)
break;
while (1)
{
gets(aLine);
if (strcmp(aLine,"END") == 0)
break;
decipher();
printf("%s\n",aLine);
}
}
return 0;
}

7
HDOJ/1049_autoAC.cpp Normal file
View File

@ -0,0 +1,7 @@
#include<stdio.h>
int main(){
int n,u,d,t;
while(scanf("%d%d%d",&n,&u,&d)!=-1&&n)
printf("%d\n",(n-u)%(u-d)?(2*((n-u)/(u-d)+1)+1):(2*((n-u)/(u-d))+1));
return 0;
}

30
HDOJ/1050_autoAC.cpp Normal file
View File

@ -0,0 +1,30 @@
#include <iostream>
#include <algorithm>
using namespace std;
int f[201];
int main()
{
int t, n, i, j, s, e;
cin >> t;
while( t-- ){
memset( f, 0, sizeof(f) );
cin >> n;
for( i=0; i<n; i++ ){
cin >> s >> e;
s = (s+1)/2;
e = (e+1)/2;
if( s > e ){
int temp = s;
s = e;
e = temp;
}
for( j=s; j<=e; j++)
f[j]++;
}
int consume = 0;
for( i=1; i<=200; i++ )
consume = max( consume, f[i] );
cout << consume*10 << endl;
}
return 0;
}

61
HDOJ/1051_autoAC.cpp Normal file
View File

@ -0,0 +1,61 @@
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <cstring>
#include <algorithm>
#include <map>
#define MAXINT 99999999
#define MININT -1
using namespace std;
struct Node{
int l;
int w;
}node[5000+4];
int vis[5000+4];
bool cmp(Node x,Node y)
{if(x.l<y.l)
return true;
else if(x.l==y.l)
{if(x.w<=y.w)
return true;
}
return false;
}
int main()
{
int n;
int m;
int i,j,k;
scanf("%d",&m);
while(m--)
{
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d%d",&node[i].l,&node[i].w);
}
sort(node,node+n,cmp);
for(i=0;i<n;i++)
{vis[i]=0;}
int countn=0;
for(i=0;i<n;i++)
{
if(vis[i])
continue;
vis[i]=1;
countn++;
int pre=i;
for(j=i+1;j<n;j++)
{
if(vis[j]==0)
{
if(node[j].w>=node[pre].w)
{vis[j]=1;pre=j;}
}
}
}
cout<<countn<<endl;
}
return 0;
}

61
HDOJ/1052_autoAC.cpp Normal file
View File

@ -0,0 +1,61 @@
#include<stdio.h>
#include<algorithm>
using std::sort;
int cmp( int a, int b )
{
if( a < b ) return true;
return false;
}
int main()
{
int t[1005], k[1005], n, i, j, c;
while( scanf( "%d", &n ), n )
{
c = 0;
for( i = 0; i < n; i ++ )
scanf( "%d", &t[i] );
sort( t, t+n, cmp );
for( i = 0; i < n; i ++ )
scanf( "%d", &k[i] );
sort( k, k + n, cmp );
i= j = 0;
int flag1= n-1, flag2 = n-1;
while( i <= flag1 )
{
if( t[flag1] > k[flag2] )
{
++c;
--flag1;
--flag2;
}
else if( t[flag1] == k[flag2] )
{
if( t[i]>k[j] )
{
++c;
++i;
++j;
}
else if( t[i] == k[j] )
{
if( t[i] < k[flag2] ) --c;
++i;
--flag2;
}
else if( t[i] < k[j] )
{
--c;
++i;
--flag2;
}
}
else
{
--c;
++i;
--flag2;
}
}
printf( "%d\n", c*200 );
}
}

104
HDOJ/1053_autoAC.cpp Normal file
View File

@ -0,0 +1,104 @@
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<queue>
using namespace std;
int cmp(const void *a, const void *b)
{
return *(char*)a - *(char*)b;
}
class TreeNode
{
public:
char ch;
int count;
int depth;
TreeNode *leftChild, *rightChild;
TreeNode()
{
ch = '\0';
count = 0;
depth = 0;
leftChild = NULL;
rightChild = NULL;
}
friend bool operator<(const TreeNode &a, const TreeNode &b)
{
return a.count > b.count;
}
};
priority_queue<TreeNode> que;
queue<TreeNode> q;
int res;
void hoffman()
{
TreeNode *root, *a, *b, *c, newNode;
while(que.size() > 1){
a = new TreeNode;
*a = que.top();
que.pop();
b = new TreeNode;
*b = que.top();
que.pop();
c = new TreeNode;
c->count = a->count + b->count;
c->leftChild = a;
c->rightChild = b;
que.push(*c);
}
root = new TreeNode;
*root = que.top();
root->depth = 0;
que.pop();
q.push(*root);
while(!q.empty()){
newNode = q.front();
q.pop();
if(newNode.leftChild){
newNode.leftChild->depth = newNode.depth + 1;
q.push(*newNode.leftChild);
}
if(newNode.rightChild){
newNode.rightChild->depth = newNode.depth + 1;
q.push(*newNode.rightChild);
}
if(!newNode.leftChild && !newNode.rightChild){
res += newNode.depth * newNode.count;
}
}
}
int main()
{
int i, j, len, count;
char str[1005];
while(scanf("%s", str)!=EOF && strcmp("END", str)!=0){
len = strlen(str);
qsort(str, len, sizeof(char), cmp);
TreeNode t;
count = 1;
t.ch = str[0];
for(i=1; i<len; i++){
if(str[i-1] == str[i]){
count++;
}
else{
t.count = count;
que.push(t);
t.ch = str[i];
count = 1;
}
}
t.count = count;
que.push(t);
res = 0;
if(que.size() == 1){
printf("%d %d 8.0\n", 8*len, len);
que.pop();
}
else{
hoffman();
printf("%d %d %.1lf\n", 8*len, res, 8*len*1.0/res);
}
}
return 0;
}

63
HDOJ/1054_autoAC.cpp Normal file
View File

@ -0,0 +1,63 @@
#include<iostream>
#include<vector>
#include<string.h>
using namespace std;
bool used[1510];
int con[1510];
vector<int> edges[1510];
bool find(int x)
{
for (int i = 0; i < edges[x].size(); i++)
{
if (!used[edges[x][i]])
{
used[edges[x][i]] = true;
if (con[edges[x][i]] == -1 || find(con[edges[x][i]]))
{
con[edges[x][i]] = x;
return true;
}
}
}
return false;
}
int match(int n)
{
int res = 0;
memset(con, -1, sizeof(con));
for (int i = 0; i < n; i++)
{
memset(used, false, sizeof(used));
if (find(i))
res++;
}
return res;
}
int main()
{
int n;
while (cin >> n)
{
memset(used, false, sizeof(used));
for (int i = 0; i < n; i++)
edges[i].clear();
for (int i = 0; i < n; i++)
{
int no;
cin >> no;
char c;
cin >> c >> c;
int en;
cin >> en >> c;
for (int j = 0; j < en; j++)
{
int p;
cin >> p;
edges[no].push_back(p);
edges[p].push_back(no);
}
}
cout << (match(n)/2) << endl;
}
return 0;
}

43
HDOJ/1055_autoAC.cpp Normal file
View File

@ -0,0 +1,43 @@
#include "stdio.h"
#include "string"
#define maxn 1001
struct H{
int val;
int cost;
int time;
void clear() {
val = cost = time = 0;
}
}hh[maxn];
int father[maxn];
int main() {
int n,r,i;
while(scanf("%d%d",&n,&r),n+r) {
for(i =1 ; i <= n ; i ++) {
scanf("%d",&hh[i].cost);
hh[i].val = hh[i].cost;
hh[i].time = 1;
}
for(i = 1; i < n ; i ++) {
int a,b;
scanf("%d%d",&a,&b);
father[b] = a;
}
while(true) {
int idx = 0;
for(i = 1 ; i <= n ; i ++) {
if(i != r && hh[i].time && (idx == 0 || hh[idx].val * hh[i].time < hh[i].val * hh[idx].time)) {
idx = i;
}
}
if(idx == 0) break;
int f = father[idx];
hh[f].cost += hh[idx].cost + hh[idx].val * hh[f].time;
hh[f].val += hh[idx].val;
hh[f].time += hh[idx].time;
hh[idx].clear();
}
printf("%d\n",hh[r].cost);
}
return 0;
}

24
HDOJ/1056_autoAC.cpp Normal file
View File

@ -0,0 +1,24 @@
#include <cstdlib>
#include <iostream>
using namespace std;
int main()
{
double examples[300],enter;
int numDenominator=3,circleA;
examples[0]=1.0/2.0;
for(circleA=1;circleA<280;circleA++){
examples[circleA]=examples[circleA-1]+1.0/(double)(numDenominator++);
}
while(cin>>enter){
if(0.00==enter){
break;
}
for(circleA=0;circleA<280;circleA++){
if(examples[circleA]>=enter){
cout<<circleA+1<<" card(s)"<<endl;
break;
}
}
}
return 0;
}

48
HDOJ/1057_autoAC.cpp Normal file
View File

@ -0,0 +1,48 @@
#include <iostream>
using namespace std;
const int Dir[][2]={{-1,0},{1,0},{0,-1},{0,1}};
const char density[]=".!X#";
int D[16];
int Map[20][20],tmp[20][20];
int main()
{
int T,day,i,j,k,d,x,y,index;
cin>>T;
for(int t=1;t<=T;++t)
{
cin>>day;
for(i=0;i<16;++i) cin>>D[i];
for(i=0;i<20;++i)
for(j=0;j<20;++j)
cin>>Map[i][j];
for(k=0;k<day;++k)
{
for(i=0;i<20;++i)
for(j=0;j<20;++j)
{
index=Map[i][j];
for(d=0;d<4;++d)
{
x = i+Dir[d][0];
y = j+Dir[d][1];
if(x>=0&&x<20&&y>=0&&y<20)
index += Map[x][y];
}
tmp[i][j] = Map[i][j]+D[index];
if(tmp[i][j]>3) tmp[i][j]=3;
else if(tmp[i][j]<0) tmp[i][j]=0;
}
for(i=0;i<20;++i)
for(j=0;j<20;++j)
Map[i][j] = tmp[i][j];
}
for(i=0;i<20;++i)
{
for(j=0;j<20;++j)
cout<<density[Map[i][j]];
cout<<endl;
}
if(t<T)cout<<endl;
}
return 0;
}

39
HDOJ/1058_autoAC.cpp Normal file
View File

@ -0,0 +1,39 @@
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int min(int a,int b)
{
if(a>b) return b;
else return a;
}
int main()
{
long int a[5888];
long int s1,s2,s3,s4,t,n;
s1 = s2 = s3 = s4 =1;
a[1] = 1;
for(int i=2;i<5888;i++)
{
t = min(min(min(a[s1]*2,a[s2]*3),a[s3]*5),a[s4]*7);
if(t == a[s1]*2) s1++;
if(t == a[s2]*3) s2++;
if(t == a[s3]*5) s3++;
if(t == a[s4]*7) s4++;
a[i] = t;
}
while(scanf("%ld",&n))
{
if(n==0)
break;
if(n%10==1&&n%100!=11)
printf("The %ldst humble number is %ld.\n",n,a[n]);
else if(n%10==2&&n%100!=12)
printf("The %ldnd humble number is %ld.\n",n,a[n]);
else if(n%10==3&&n%100!=13)
printf("The %ldrd humble number is %ld.\n",n,a[n]);
else
printf("The %ldth humble number is %ld.\n",n,a[n]);
}
return 0;
}

46
HDOJ/1059_autoAC.cpp Normal file
View File

@ -0,0 +1,46 @@
#include<stdio.h>
#include<limits.h>
#define maxn 444444//(1+2+3+4+5+6)*20000=420000
int bag[maxn]={0};
int main()
{
int w[111],n[7],cnt=1;//2^15(>20000)*6=90
while(scanf("%d%d%d%d%d%d",&n[1],&n[2],&n[3],&n[4],&n[5],&n[6])&&(n[1]||n[2]||n[3]||n[4]||n[5]||n[6]))
{
int i,j,k=1,sum=0;
printf("Collection #%d:\n",cnt++);
for(i=1;i<=6;i++)
{
int tmp=1;
sum+=n[i]*i;
while(n[i]>tmp)
{
w[k++]=tmp*i;
n[i]-=tmp;
tmp<<=1;
}
w[k++]=n[i]*i;
}
if(sum&1)
{
printf("Can't be divided.\n\n");
continue;
}
sum/=2;
for(i=1;i<=sum;i++)
bag[i]=INT_MIN;
for(i=1;i<k;i++)
{
for(j=sum;j>=w[i];j--)
{
if(bag[j]<bag[j-w[i]]+w[i])
bag[j]=bag[j-w[i]]+w[i];
}
}
if(bag[sum]>=0)
printf("Can be divided.\n\n");
else
printf("Can't be divided.\n\n");
}
return 0;
}

20
HDOJ/1060_autoAC.cpp Normal file
View File

@ -0,0 +1,20 @@
#include <iostream>
#include <math.h>
using namespace std;
int main()
{
int t;
while(cin>>t)
{
while(t--)
{
unsigned long n;
cin>>n;
double x=n*log10(n*1.0);
x-=(__int64)x;
int a=pow(10.0, x);
cout<<a<<endl;
}
}
return 0;
}

32
HDOJ/1061_autoAC.cpp Normal file
View File

@ -0,0 +1,32 @@
#include <iostream>
#include <stdio.h>
using namespace std;
bool l[10];
int r[10];
int main()
{
int t;
while(cin>>t)
{
while(t--)
{
memset(l,0,sizeof(l));
memset(r,0,sizeof(r));
unsigned long n;
cin>>n;
int a=n%10;
int b=a;
int i=1;
l[b]=true;r[0]=b;
b=(b*a)%10;
while(!l[b])
{
l[b]=true;
r[i++]=b;
b=(b*a)%10;
}
cout<<r[(n-1)%i]<<endl;
}
}
return 0;
}

42
HDOJ/1062_autoAC.cpp Normal file
View File

@ -0,0 +1,42 @@
#include<iostream>
#include<string.h>
#include<stdio.h>
using namespace std;
const int Max = 1000 + 10;
char str[Max];
char w[Max];
int main()
{
int cases;
cin >> cases;
char c = getchar();
while(cases--)
{
gets(str);
int pos = 0;
int len = strlen(str);
for(int i=0; i<=len; i++)
{
if(str[i] == ' ')
{
w[pos++] = '\0';
strrev(w);
printf("%s ", w);
pos = 0;
}
else if(str[i] == '\0')
{
w[pos++] = '\0';
strrev(w);
printf("%s", w);
pos = 0;
}
else
{
w[pos++] = str[i];
}
}
printf("\n");
}
return 0;
}

76
HDOJ/1063_autoAC.cpp Normal file
View File

@ -0,0 +1,76 @@
#include <iostream>
using namespace std;
const int MAX_LEN=1000;
int temp[1000];
void mul(char* z,char* x,char* y)
{
int lenx=strlen(x);
int leny=strlen(y);
int i,j;
memset(temp,0,1000*4);
for(i=0;i<lenx;i++)
for(j=0;j<leny;j++)
temp[i+j]+=(x[lenx-1-i]-'0')*(y[leny-1-j]-'0');
memset(z,0,1000);
for(i=0;(i<lenx+leny-1) || temp[i]>9;i++)
{
if(temp[i]>9)
temp[i+1]+=temp[i]/10;
z[i]=temp[i]%10+'0';
}
z[i]=temp[i]+'0';
z[i+1]=0;
while(z[i]=='0' && i)
z[i--]=0;
_strrev(z);
}
int main()
{
char t[1000];
char s[7];
int i,n,dot,len,integer;
while(cin>>s>>n)
{
dot=-1;
integer=0;
for(i=0;i<6;i++)
if(s[i]=='.')
{
dot=i;
for(;i<6;i++)
{
s[i]=s[i+1];
if(s[i]==0)
break;
}
while(s[--i]=='0' && i>=dot)
s[i]=0;
dot=strlen(s)-dot;
if(dot==0)
integer=1;
break;
}
if(dot==-1)
integer=1;
memset(t,0,1000);
t[0]='1';
for(i=0;i<n;i++)
mul(t,t,s);
len=int(strlen(t))-dot*n;
if(integer)
cout<<t<<endl;
else if(len>0)
{
for(i=0;i<len;i++)
cout<<t[i];
cout<<'.'<<t+len<<endl;
}
else
{
cout<<'.';
for(i=0;i<-len;i++)
cout<<'0';
cout<<t<<endl;
}
}
}

14
HDOJ/1064_autoAC.cpp Normal file
View File

@ -0,0 +1,14 @@
#include<stdio.h>
int main()
{
double avg,cache;
int i;
avg=cache=0;
for(i=0;i<12;i++)
{
scanf("%lf",&cache);
avg+=cache;
}
printf("$%.2lf\n",avg/12);
return 0;
}

17
HDOJ/1065_autoAC.cpp Normal file
View File

@ -0,0 +1,17 @@
#include<iostream>
#include<math.h>
#define PI 3.1415926
using namespace std;
int main(){
int m;
double x, y;
cin>>m;
for(int i = 0; i < m; i++){
cin>>x>>y;
double s = PI * (x * x + y * y);
int count = s / 100 + 1;
cout<<"Property "<<i + 1<<
": This property will begin eroding in year "<<count<<"."<<endl;
}
cout<<"END OF OUTPUT."<<endl;
}

43
HDOJ/1066_autoAC.cpp Normal file
View File

@ -0,0 +1,43 @@
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
const int Lib[4]={6,2,4,8};
const int fact[10]={1,1,2,6,4,2,2,4,2,8};
char s[200];
int a[200];
void todigit(char s[],int a[])
{
a[2]=0;
a[0]=strlen(s);
for (int i=0; i<a[0]; i++) a[a[0]-i]=s[i]-'0';
}
void mult(int a[],int x)
{
int j=0;
for (int i=a[0]; i>0; i--)
{
int k1=(j*10+a[i])/x;
j=(j*10+a[i])%x;
a[i]=k1;
}
while (a[0]>1 && a[a[0]]==0) a[0]--;
}
int last_nunzero(int a[])
{
if (a[0]==1) return fact[a[1]];
int x1=fact[a[1]%5];
mult(a,5);
int x2=Lib[(a[2]*10+a[1])%4];
int ret=(x1*x2*last_nunzero(a))%10;
return ret;
}
int main()
{
while (gets(s))
{
todigit(s,a);
printf("%d\n",last_nunzero(a));
}
return 0;
}

143
HDOJ/1067_autoAC.cpp Normal file
View File

@ -0,0 +1,143 @@
#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<string.h>
#include<queue>
#define ll __int64
#define MAX 1000009
using namespace std;
ll has[1000009];
ll b[4][8],op[32];
ll endval,start;
struct lmx{
ll arr[4][8];
ll val;
ll step;
ll blankx[4];
ll blanky[4];
};
ll a[4][8]=
{
{11,12,13,14,15,16,17},
{21,22,23,24,25,26,27},
{31,32,33,34,35,36,37},
{41,42,43,44,45,46,47}
};
ll _cnt(ll c[][8])
{
ll s=0,i,j;
for(i=0;i<4;i++)
{
for(j=0;j<8;j++)
{
s+=c[i][j]*op[8*i+j];
}
}
return s;
}
void exchange(ll c[][8])
{
ll i,j;
for(i=0;i<4;i++)
{
for(j=1;j<8;j++)
{
if(c[i][j]==11) swap(c[0][0],c[i][j]);
else if(c[i][j]==21) swap(c[1][0],c[i][j]);
else if(c[i][j]==31) swap(c[2][0],c[i][j]);
else if(c[i][j]==41) swap(c[3][0],c[i][j]);
}
}
}
bool ihash(ll val)
{
ll p=val%MAX;
while(has[p]!=-1&&has[p]!=val)
{
p=(p+20)%MAX;
}
if(has[p]==-1){has[p]=val;return true;}
return false;
}
void input()
{
int i,j;
for(i=0;i<4;i++)
{
for(j=1;j<8;j++)
{
scanf("%I64d",&b[i][j]);
}
b[i][0]=0;
}
}
lmx s,h,t;
queue<lmx> q;
ll bfs()
{
ll i,j,cnt=0,k,f=0,v,pos1,pos2,xx,yy;
if(start==endval) return 0;
while(!q.empty()) q.pop();
for(i=0;i<4;i++)
{
for(j=0;j<8;j++)
{
if(b[i][j]==0) {s.blankx[cnt]=i;s.blanky[cnt]=j;cnt++;}
}
}
memcpy(s.arr,b,sizeof(b));
s.step=0;
s.val=_cnt(b);
has[s.val%MAX]=s.val;
q.push(s);
while(!q.empty())
{
h=q.front();
q.pop();
for(i=0;i<4;i++)
{
t=h;
xx=h.blankx[i];
yy=h.blanky[i];
for(j=0;j<4;j++)
{
for(k=0;k<8;k++)
{
if(h.arr[xx][yy-1]+1==h.arr[j][k])
{
pos1=j;pos2=k;
swap(t.arr[pos1][pos2],t.arr[xx][yy]);
v=_cnt(t.arr);
t.blankx[i]=pos1;
t.blanky[i]=pos2;
if(ihash(v))
{
t.step=h.step+1;
t.val=v;
if(v==endval) return t.step;
q.push(t);
}
}
}
}
}
}
return -1;
}
int main()
{
ll i,j,n;
scanf("%I64d",&n);
op[0]=2;
for(i=1;i<32;i++) op[i]=op[i-1]<<1;
while(n--)
{
input();
exchange(b);
endval=_cnt(a);
start=_cnt(b);
memset(has,-1,sizeof(has));
printf("%I64d\n",bfs());
}
return 0;
}

45
HDOJ/1068_autoAC.cpp Normal file
View File

@ -0,0 +1,45 @@
#include <iostream>
using namespace std;
const int MAX = 500;
bool visited[MAX];
bool linked[MAX][MAX];
int arossPath[MAX];
int n;
bool search(int u) {
for (int i = 0; i < n; i++) {
if (!visited[i]&& linked[i][u]) {
visited[i] = true;
if (arossPath[i] == -1 || search(arossPath[i])) {
arossPath[i] = u;
return true;
}
}
}
return false;
}
int maxMatch() {
int count = 0;
memset(arossPath, -1, sizeof(arossPath));
for (int i = 0; i < n; i++) {
memset(visited, false, sizeof(visited));
if (search(i))
count++;
}
return count;
}
int main()
{
int k, a, b;
while (scanf("%d", &n) != EOF) {
memset(linked, false, sizeof(linked));
for (int i = 0; i < n; i++) {
scanf("%d: (%d)", &a, &k);
while (k--) {
scanf("%d", &b);
linked[a][b] = true;
}
}
cout << (n - maxMatch()/2) << endl;
}
return 0;
}

58
HDOJ/1069_autoAC.cpp Normal file
View File

@ -0,0 +1,58 @@
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct{
int x;
int y;
int z;
}block;
block blocks[100];
int dp[100];
int cmp(const void *a, const void *b)
{
return (*(block*)a).x * (*(block*)a).y - (*(block*)b).x * (*(block*)b).y;
}
int isFeasible(const block a, const block b)
{
if((a.x>b.x && a.y>b.y) || (a.x>b.y && a.y>b.x)){
return 1;
}
else{
return 0;
}
}
int main()
{
int n, i, j;
int x, y, z;
int cas, max;
cas = 0;
while(scanf("%d", &n)!=EOF && n!=0){
cas++;
for(i=0; i<3*n; i++){
scanf("%d%d%d", &x, &y, &z);
blocks[i].x = x; blocks[i].y = y; blocks[i].z = z; i++;
blocks[i].x = y; blocks[i].y = z; blocks[i].z = x; i++;
blocks[i].x = z; blocks[i].y = x; blocks[i].z = y;
}
qsort(blocks, 3*n, sizeof(block), cmp);
memset(dp, 0, sizeof(dp));
dp[0] = blocks[0].z;
max = dp[0];
for(i=1; i<3*n; i++){
dp[i] = blocks[i].z;
for(j=i-1; j>=0; j--){
if(isFeasible(blocks[i], blocks[j])){
if(dp[i] < dp[j] + blocks[i].z){
dp[i] = dp[j] + blocks[i].z;
}
}
}
if(dp[i] > max){
max = dp[i];
}
}
printf("Case %d: maximum height = %d\n", cas, max);
}
return 0;
}

42
HDOJ/1070_autoAC.cpp Normal file
View File

@ -0,0 +1,42 @@
#include <iostream>
#include <string>
using namespace std;
int main()
{
int T, n, money, v, day;
int vmin;
double imin, temp;
string brand, strmin;
cin >> T;
while (T--) {
cin >> n;
imin = -1.0;
vmin = -1;
while (n--) {
cin >> brand >> money >> v;
if (v < 200) continue;
else {
day = (v >= 1000) ? 5 : v / 200;
temp = money*1.0/day;
if (imin == -1.0) {
imin = money*1.0/day;
vmin = v;
strmin = brand;
}
if (temp < imin) {
strmin = brand;
imin = money*1.0/day;
vmin = v;
}
else if (temp-imin > -0.000001 && temp-imin < 0.000001) {
if (vmin < v) {
strmin = brand;
vmin = v;
}
}
}
}
cout << strmin << endl;
}
return 0;
}