mirror of
https://github.com/Kiritow/OJ-Problems-Source.git
synced 2024-03-22 13:11:29 +08:00
Merge pull request #28 from KiritoTRw/master
Powered By HC TECH : AutoACer Engine
This commit is contained in:
commit
72f1f7d810
30
HDOJ/1012_autoAC.cpp
Normal file
30
HDOJ/1012_autoAC.cpp
Normal 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
36
HDOJ/1013_autoAC.cpp
Normal 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
25
HDOJ/1014_autoAC.cpp
Normal 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
45
HDOJ/1015_autoAC.cpp
Normal 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
54
HDOJ/1016_autoAC.cpp
Normal 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
27
HDOJ/1017_autoAC.cpp
Normal 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
19
HDOJ/1018_autoAC.cpp
Normal 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
36
HDOJ/1019_autoAC.cpp
Normal 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
42
HDOJ/1020_autoAC.cpp
Normal 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
12
HDOJ/1021_autoAC.cpp
Normal 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
46
HDOJ/1022_autoAC.cpp
Normal 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
83
HDOJ/1023_autoAC.cpp
Normal 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
40
HDOJ/1024_autoAC.cpp
Normal 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
53
HDOJ/1025_autoAC.cpp
Normal 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
128
HDOJ/1026_autoAC.cpp
Normal 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
28
HDOJ/1027_autoAC.cpp
Normal 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
31
HDOJ/1028_autoAC.cpp
Normal 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
27
HDOJ/1029_autoAC.cpp
Normal 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
40
HDOJ/1030_autoAC.cpp
Normal 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
52
HDOJ/1031_autoAC.cpp
Normal 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
40
HDOJ/1032_autoAC.cpp
Normal 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
66
HDOJ/1033_autoAC.cpp
Normal 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
60
HDOJ/1034_autoAC.cpp
Normal 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
54
HDOJ/1035_autoAC.cpp
Normal 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
43
HDOJ/1036_autoAC.cpp
Normal 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
14
HDOJ/1037_autoAC.cpp
Normal 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
20
HDOJ/1038_autoAC.cpp
Normal 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
44
HDOJ/1039_autoAC.cpp
Normal 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
23
HDOJ/1040_autoAC.cpp
Normal 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
29
HDOJ/1041_autoAC.cpp
Normal 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
25
HDOJ/1042_autoAC.cpp
Normal 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
1
HDOJ/1043_autoAC.cpp
Normal 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
149
HDOJ/1044_autoAC.cpp
Normal 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
47
HDOJ/1045_autoAC.cpp
Normal 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
23
HDOJ/1046_autoAC.cpp
Normal 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
41
HDOJ/1047_autoAC.cpp
Normal 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
34
HDOJ/1048_autoAC.cpp
Normal 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
7
HDOJ/1049_autoAC.cpp
Normal 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
30
HDOJ/1050_autoAC.cpp
Normal 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
61
HDOJ/1051_autoAC.cpp
Normal 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
61
HDOJ/1052_autoAC.cpp
Normal 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
104
HDOJ/1053_autoAC.cpp
Normal 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
63
HDOJ/1054_autoAC.cpp
Normal 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
43
HDOJ/1055_autoAC.cpp
Normal 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
24
HDOJ/1056_autoAC.cpp
Normal 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
48
HDOJ/1057_autoAC.cpp
Normal 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
39
HDOJ/1058_autoAC.cpp
Normal 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
46
HDOJ/1059_autoAC.cpp
Normal 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
20
HDOJ/1060_autoAC.cpp
Normal 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
32
HDOJ/1061_autoAC.cpp
Normal 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
42
HDOJ/1062_autoAC.cpp
Normal 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
76
HDOJ/1063_autoAC.cpp
Normal 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
14
HDOJ/1064_autoAC.cpp
Normal 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
17
HDOJ/1065_autoAC.cpp
Normal 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
43
HDOJ/1066_autoAC.cpp
Normal 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
143
HDOJ/1067_autoAC.cpp
Normal 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
45
HDOJ/1068_autoAC.cpp
Normal 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
58
HDOJ/1069_autoAC.cpp
Normal 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
42
HDOJ/1070_autoAC.cpp
Normal 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;
|
||||
}
|
Loading…
Reference in New Issue
Block a user