From 02f21a718d8fd57d3aee9bb3ed371e1eafd910a6 Mon Sep 17 00:00:00 2001 From: KiritoTRw <3021577574@qq.com> Date: Sat, 13 Aug 2016 10:51:15 +0800 Subject: [PATCH] Powered By HC TECH : AutoACer Engine --- HDOJ/1102_autoAC.cpp | 71 +++++++++++++++ HDOJ/1103_autoAC.cpp | 118 ++++++++++++++++++++++++ HDOJ/1106_autoAC.cpp | 24 +++++ HDOJ/1107_autoAC.cpp | 210 +++++++++++++++++++++++++++++++++++++++++++ HDOJ/1108_autoAC.cpp | 24 +++++ HDOJ/1109_autoAC.cpp | 86 ++++++++++++++++++ HDOJ/1110_autoAC.cpp | 43 +++++++++ HDOJ/1111_autoAC.cpp | 51 +++++++++++ HDOJ/1112_autoAC.cpp | 83 +++++++++++++++++ HDOJ/1113_autoAC.cpp | 51 +++++++++++ HDOJ/1114_autoAC.cpp | 33 +++++++ HDOJ/1115_autoAC.cpp | 29 ++++++ HDOJ/1116_autoAC.cpp | 72 +++++++++++++++ HDOJ/1117_autoAC.cpp | 62 +++++++++++++ HDOJ/1119_autoAC.cpp | 164 +++++++++++++++++++++++++++++++++ HDOJ/1121_autoAC.cpp | 59 ++++++++++++ HDOJ/1123_autoAC.cpp | 90 +++++++++++++++++++ HDOJ/1124_autoAC.cpp | 19 ++++ HDOJ/1128_autoAC.cpp | 17 ++++ HDOJ/1129_autoAC.cpp | 29 ++++++ HDOJ/1130_autoAC.cpp | 50 +++++++++++ HDOJ/1131_autoAC.cpp | 34 +++++++ HDOJ/1133_autoAC.cpp | 63 +++++++++++++ HDOJ/1134_autoAC.cpp | 70 +++++++++++++++ HDOJ/1140_autoAC.cpp | 54 +++++++++++ HDOJ/1141_autoAC.cpp | 49 ++++++++++ HDOJ/1142_autoAC.cpp | 91 +++++++++++++++++++ HDOJ/1143_autoAC.cpp | 25 ++++++ HDOJ/1144_autoAC.cpp | 41 +++++++++ HDOJ/1145_autoAC.cpp | 36 ++++++++ HDOJ/1146_autoAC.cpp | 91 +++++++++++++++++++ HDOJ/1147_autoAC.cpp | 70 +++++++++++++++ HDOJ/1148_autoAC.cpp | 76 ++++++++++++++++ HDOJ/1150_autoAC.cpp | 37 ++++++++ HDOJ/1151_autoAC.cpp | 44 +++++++++ HDOJ/1152_autoAC.cpp | 36 ++++++++ HDOJ/1153_autoAC.cpp | 20 +++++ HDOJ/1154_autoAC.cpp | 169 ++++++++++++++++++++++++++++++++++ HDOJ/1155_autoAC.cpp | 13 +++ HDOJ/1156_autoAC.cpp | 164 +++++++++++++++++++++++++++++++++ HDOJ/1157_autoAC.cpp | 39 ++++++++ HDOJ/1158_autoAC.cpp | 56 ++++++++++++ HDOJ/1159_autoAC.cpp | 34 +++++++ HDOJ/1160_autoAC.cpp | 75 ++++++++++++++++ HDOJ/1161_autoAC.cpp | 16 ++++ HDOJ/1162_autoAC.cpp | 57 ++++++++++++ HDOJ/1163_autoAC.cpp | 9 ++ HDOJ/1164_autoAC.cpp | 22 +++++ HDOJ/1165_autoAC.cpp | 17 ++++ HDOJ/1170_autoAC.cpp | 21 +++++ HDOJ/1171_autoAC.cpp | 49 ++++++++++ HDOJ/1172_autoAC.cpp | 77 ++++++++++++++++ HDOJ/1173_autoAC.cpp | 18 ++++ HDOJ/1174_autoAC.cpp | 35 ++++++++ HDOJ/1175_autoAC.cpp | 67 ++++++++++++++ HDOJ/1176_autoAC.cpp | 30 +++++++ HDOJ/1177_autoAC.cpp | 90 +++++++++++++++++++ HDOJ/1178_autoAC.cpp | 19 ++++ HDOJ/1179_autoAC.cpp | 50 +++++++++++ HDOJ/1180_autoAC.cpp | 137 ++++++++++++++++++++++++++++ HDOJ/1181_autoAC.cpp | 67 ++++++++++++++ HDOJ/1182_autoAC.cpp | 73 +++++++++++++++ HDOJ/1194_autoAC.cpp | 15 ++++ HDOJ/1195_autoAC.cpp | 86 ++++++++++++++++++ HDOJ/1196_autoAC.cpp | 13 +++ HDOJ/1197_autoAC.cpp | 36 ++++++++ HDOJ/1198_autoAC.cpp | 65 ++++++++++++++ HDOJ/1199_autoAC.cpp | 47 ++++++++++ 68 files changed, 3888 insertions(+) create mode 100644 HDOJ/1102_autoAC.cpp create mode 100644 HDOJ/1103_autoAC.cpp create mode 100644 HDOJ/1106_autoAC.cpp create mode 100644 HDOJ/1107_autoAC.cpp create mode 100644 HDOJ/1108_autoAC.cpp create mode 100644 HDOJ/1109_autoAC.cpp create mode 100644 HDOJ/1110_autoAC.cpp create mode 100644 HDOJ/1111_autoAC.cpp create mode 100644 HDOJ/1112_autoAC.cpp create mode 100644 HDOJ/1113_autoAC.cpp create mode 100644 HDOJ/1114_autoAC.cpp create mode 100644 HDOJ/1115_autoAC.cpp create mode 100644 HDOJ/1116_autoAC.cpp create mode 100644 HDOJ/1117_autoAC.cpp create mode 100644 HDOJ/1119_autoAC.cpp create mode 100644 HDOJ/1121_autoAC.cpp create mode 100644 HDOJ/1123_autoAC.cpp create mode 100644 HDOJ/1124_autoAC.cpp create mode 100644 HDOJ/1128_autoAC.cpp create mode 100644 HDOJ/1129_autoAC.cpp create mode 100644 HDOJ/1130_autoAC.cpp create mode 100644 HDOJ/1131_autoAC.cpp create mode 100644 HDOJ/1133_autoAC.cpp create mode 100644 HDOJ/1134_autoAC.cpp create mode 100644 HDOJ/1140_autoAC.cpp create mode 100644 HDOJ/1141_autoAC.cpp create mode 100644 HDOJ/1142_autoAC.cpp create mode 100644 HDOJ/1143_autoAC.cpp create mode 100644 HDOJ/1144_autoAC.cpp create mode 100644 HDOJ/1145_autoAC.cpp create mode 100644 HDOJ/1146_autoAC.cpp create mode 100644 HDOJ/1147_autoAC.cpp create mode 100644 HDOJ/1148_autoAC.cpp create mode 100644 HDOJ/1150_autoAC.cpp create mode 100644 HDOJ/1151_autoAC.cpp create mode 100644 HDOJ/1152_autoAC.cpp create mode 100644 HDOJ/1153_autoAC.cpp create mode 100644 HDOJ/1154_autoAC.cpp create mode 100644 HDOJ/1155_autoAC.cpp create mode 100644 HDOJ/1156_autoAC.cpp create mode 100644 HDOJ/1157_autoAC.cpp create mode 100644 HDOJ/1158_autoAC.cpp create mode 100644 HDOJ/1159_autoAC.cpp create mode 100644 HDOJ/1160_autoAC.cpp create mode 100644 HDOJ/1161_autoAC.cpp create mode 100644 HDOJ/1162_autoAC.cpp create mode 100644 HDOJ/1163_autoAC.cpp create mode 100644 HDOJ/1164_autoAC.cpp create mode 100644 HDOJ/1165_autoAC.cpp create mode 100644 HDOJ/1170_autoAC.cpp create mode 100644 HDOJ/1171_autoAC.cpp create mode 100644 HDOJ/1172_autoAC.cpp create mode 100644 HDOJ/1173_autoAC.cpp create mode 100644 HDOJ/1174_autoAC.cpp create mode 100644 HDOJ/1175_autoAC.cpp create mode 100644 HDOJ/1176_autoAC.cpp create mode 100644 HDOJ/1177_autoAC.cpp create mode 100644 HDOJ/1178_autoAC.cpp create mode 100644 HDOJ/1179_autoAC.cpp create mode 100644 HDOJ/1180_autoAC.cpp create mode 100644 HDOJ/1181_autoAC.cpp create mode 100644 HDOJ/1182_autoAC.cpp create mode 100644 HDOJ/1194_autoAC.cpp create mode 100644 HDOJ/1195_autoAC.cpp create mode 100644 HDOJ/1196_autoAC.cpp create mode 100644 HDOJ/1197_autoAC.cpp create mode 100644 HDOJ/1198_autoAC.cpp create mode 100644 HDOJ/1199_autoAC.cpp diff --git a/HDOJ/1102_autoAC.cpp b/HDOJ/1102_autoAC.cpp new file mode 100644 index 0000000..858cf19 --- /dev/null +++ b/HDOJ/1102_autoAC.cpp @@ -0,0 +1,71 @@ +#include +#include +#include +#define max 0x7fffffff +using namespace std; +struct edge +{ + int v1; + int v2; + int w; +}e[6000]; +int cmp(const void *a,const void *b) +{ + struct edge *aa=(struct edge *)a; + struct edge *bb=(struct edge *)b; + if(aa->w != bb->w) + return aa->w - bb->w; + else + return aa->v1 - bb->v1; +} +int main() +{ + int n,q,a,b,map[101][101],vis[101],i,j,k,min;//map璁板绘ョ╅碉vis涓洪《硅剧疆蹇 + while(scanf("%d",&n)!=EOF) + { + min=0; + for(i=1;i<=n;i++) vis[i]=i; + for(i=1;i<=n;i++) + { + for(j=1;j<=n;j++) + { + scanf("%d",&map[i][j]); + } + map[i][i]=max; + } + scanf("%d",&q); + for(i=1;i<=q;i++) + { + scanf("%d%d",&a,&b); + map[a][b]=map[b][a]=0; + } + for(i=1,k=1;i<=n;i++) + { + for(j=1;j<=i;j++) + { + e[k].v1=i; + e[k].v2=j; + e[k].w=map[i][j]; + k++; + } + } + qsort(&e[1],k-1,sizeof(e[1]),cmp); + for(i=1,j=1;jvis[e[i].v2] ? vis[e[i].v2] : vis[e[i].v1]; + int M=vis[e[i].v1]>vis[e[i].v2] ? vis[e[i].v1] : vis[e[i].v2]; + for(int ii=1;ii<=n;ii++) + { + if(vis[ii]==M) + vis[ii]=m; + } + min+=e[i].w; + j++; + } + } + printf("%d\n",min); + } + return 0; +} diff --git a/HDOJ/1103_autoAC.cpp b/HDOJ/1103_autoAC.cpp new file mode 100644 index 0000000..d52322e --- /dev/null +++ b/HDOJ/1103_autoAC.cpp @@ -0,0 +1,118 @@ +#include +#include +#include +using namespace std; +int main() +{ + int two,four,six,twotime[10000],threetime[10000]; + int fourtime[10000],map[10000][3]; + int a,b,c,d,i,j,k1,k2,k3,num,z,min,flash; + char str1[20]; + while(~scanf("%d%d%d",&two,&four,&six)) + { + if(two==0&&six==0&&four==0) break; + scanf("%s",str1); + for(i=1;str1[0]!='#';i++) + { + scanf("%d",&d); + a=(str1[0]-48)*10+str1[1]-48; + b=(str1[3]-48)*10+str1[4]-48; + map[i][1]=a*60+b; + map[i][2]=d; + scanf("%s",str1); + } + num=0; + for(j=1;j<=two;j++) + twotime[j]=0; + for(j=1;j<=four;j++) + threetime[j]=0; + for(j=1;j<=six;j++) + fourtime[j]=0; + for(j=1;j=twotime[z]) + { + num+=map[j][2]; + twotime[z]=map[j][1]+30; + flash=1; + break; + } + if(flash==0) + { + min=99999; + for(z=1;z<=two;z++) + if(twotime[z]-map[j][1]2&&map[j][2]<=4) + { + flash=0; + for(z=1;z<=four;z++) + if(map[j][1]>=threetime[z]) + { + num+=map[j][2]; + threetime[z]=map[j][1]+30; + flash=1; + break; + } + if(flash==0) + { + min=99999; + for(z=1;z<=four;z++) + if(threetime[z]-map[j][1]=fourtime[z]) + { + num+=map[j][2]; + fourtime[z]=map[j][1]+30; + flash=1; + break; + } + if(flash==0) + { + min=99999; + for(z=1;z<=six;z++) + if(fourtime[z]-map[j][1] +#include +#include +char s[1005]; +int a[1005]; +char * temp; +int cmp(const void *p1,const void *p2){ + return *(int *)p1-*(int *)p2; +} +int main(){ + int c; + while(gets(s)){ + a[0]=atoi(strtok(s,"5")); + c=1; + while(temp=strtok(NULL,"5")){ + a[c++]=atoi(temp); + } + qsort(a,c,sizeof a[0],cmp); + for(int i=0;i +#include +int w,s,e; +struct sl +{ + int neili,wuyi,hp,dps,x,y,flag,fang; +}cuns[1005]; +struct em +{ + int neili,wuyi,hp,dps,x,y,flag,fang; +}cune[1005]; +struct wd +{ + int neili,wuyi,hp,dps,x,y,flag,fang; +}cunw[1005]; +struct map +{ + int sll,emm,wdd,slll,emmm,wddd; +}mmap[13][13]; +void shaolingzou() +{ + for(int i=0;i +using namespace std; +int main(){ + int a,b; + while(cin>>a>>b){ + int aa,bb,tmp; + if(a +#include +#include +#include +#include +#include +#include +#include +#include +#include +using namespace std; +const int NUM=20; +const int RAD=1000; +struct point +{ + double x,y,val; + point(){} + point(double _x,double _y):x(_x),y(_y){} +}p[10001],May[NUM],e1,e2; +int n; +double X,Y; +double dis(point a,point b) +{ + return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y)); +} +double judge(point t) +{ + double len; + len=1LL<<45; + for(int i=0;i0.01) + { + for(int i=0;iMay[i].val) + { + May[i]=tmp; + } + } + D*=0.9; + } + point ans; + ans.val=0; + for(int i=0;ians.val) + ans=May[i]; + printf("The safest point is (%.1f, %.1f).\n",ans.x,ans.y); +} +int main() +{ + srand(time(0)); + e2=point(0,0); + int Case; + scanf("%d",&Case); + while(Case--) + { + scanf("%lf%lf%d",&X,&Y,&n); + for(int i=0;i +#include +using namespace std; +int main() +{ + double a,b,x,y;int n; + cin>>n; + while(n--) + { + cin>>a>>b>>x>>y; + if(ax&&b>y) + cout<<"Escape is possible."<x&&b<=y)) + cout<<"Box cannot be dropped."<y) + { + int flog=0; + for(double i=0;i<=90;i=i+0.2) + { + double rad=3.1415926*i/180; + if(x*cos(rad)+y*sin(rad) +using namespace std; +int xr,xi,br,bi,con; +int flag,t; +int a[105]; +void dfs(int n) +{ + int x,y,i; + if(n>100) return; + if(xr==0&&xi==0) + { + flag=1; + t=n; + return; + } + for(i=0;i*i>T; + while(T--) + { + cin>>xr>>xi>>br>>bi; + con=br*br+bi*bi; + flag=0; + dfs(0); + if(!flag) + cout<<"The code cannot be decrypted."<=0;i--) + cout<<','< +#include +#include +using namespace std; +bool key[109][109],s[11009][1009],visit[11009][1009]; +int n,m; +int nm,mm; +bool in(int y) +{ +if(y>=0&&y0&&!visit[i][j-1]) +j-=2; +} +} +} +if(!flag) +break; +} +if(i>=nm) +printf("The key can fall through.\n"); +else +printf("The key falls to depth %d.\n",i-1); +} +return 0; +} diff --git a/HDOJ/1113_autoAC.cpp b/HDOJ/1113_autoAC.cpp new file mode 100644 index 0000000..797d6c2 --- /dev/null +++ b/HDOJ/1113_autoAC.cpp @@ -0,0 +1,51 @@ +#include +#include +#include +#include +#include +using namespace std; +int power[26] = {1}, dic[105], p = 0; +char source[105][7], rem[105][7]; +bool comp (const int x, const int y) { + return strcmp (rem[x], rem[y]) < 0; +} +int main () { + int len; + char tmp[7]; + for (int i = 1; i < 26; i++) + power[i] = power[i-1]*2; + while (true) { + dic[++p] = 0; + scanf ("%s", tmp); + if (strcmp (tmp, "XXXXXX") == 0) + break; + strcpy (source[p], tmp); + len = strlen (tmp); + for (int i = 0; i < len; i++) + dic[p] += power[tmp[i]-'a']; + } + while (true) { + int value = 0, pm = 0, situ[105]; + sizeof (rem, '\0', sizeof (rem)); + scanf ("%s", tmp); + if (strcmp (tmp, "XXXXXX") == 0) + break; + len = strlen (tmp); + for (int i = 0; i < len; i++) + value += power[tmp[i]-'a']; + for (int i = 1; i <= p; i++) + if (value == dic[i]) + strcpy (rem[++pm], source[i]); + if (pm == 0) { + printf ("NOT A VALID WORD\n******\n"); + continue; + } + for (int i = 1; i <= pm; i++) + situ[i] = i; + sort (situ+1, situ+pm+1, comp); + for (int i = 1; i <= pm; i++) + printf ("%s\n", rem[situ[i]]); + printf ("******\n"); + } + return 0; +} diff --git a/HDOJ/1114_autoAC.cpp b/HDOJ/1114_autoAC.cpp new file mode 100644 index 0000000..fbc78d3 --- /dev/null +++ b/HDOJ/1114_autoAC.cpp @@ -0,0 +1,33 @@ +#include +#define maxn 2222222 +int bag[11111]={0},p[555],w[555]; +int main() +{ + int t,e,f,n,realw,i,j; + while(scanf("%d",&t)==1) + { + while(t--) + { + scanf("%d %d",&e,&f); + realw=f-e; + scanf("%d",&n); + for(i=1;i<=n;i++) + scanf("%d %d",&p[i],&w[i]); + for(i=1;i<=realw;i++) + bag[i]=maxn; + for(i=1;i<=n;i++) + { + for(j=w[i];j<=realw;j++) + { + if(bag[j]>bag[j-w[i]]+p[i]) + bag[j]=bag[j-w[i]]+p[i]; + } + } + if(bag[realw]==maxn) + printf("This is impossible.\n"); + else + printf("The minimum amount of money in the piggy-bank is %d.\n",bag[realw]); + } + } + return 0; +} diff --git a/HDOJ/1115_autoAC.cpp b/HDOJ/1115_autoAC.cpp new file mode 100644 index 0000000..1a8fb07 --- /dev/null +++ b/HDOJ/1115_autoAC.cpp @@ -0,0 +1,29 @@ +#include +#include +struct p{ + double x,y; +}; +double cross(p a,p b,p c){ + return (b.x-a.x)*(c.y-a.y)-(c.x-a.x)*(b.y-a.y); +} +int main(){ + int t; + scanf("%d",&t); + while(t--){ + int n; + p p1,p2,tp; + double res=0,s,tx=0,ty=0; + scanf("%d",&n); + scanf("%lf%lf%lf%lf",&p1.x,&p1.y,&p2.x,&p2.y); + for(int i=3;i<=n;++i){ + scanf("%lf%lf",&tp.x,&tp.y); + s=cross(p1,p2,tp); + res+=s; + tx+=(p1.x+p2.x+tp.x)*s; + ty+=(p1.y+p2.y+tp.y)*s; + p2.x=tp.x;p2.y=tp.y; + } + printf("%.2lf %.2lf\n",tx/(3*res),ty/(3*res)); + } + return 0; +} diff --git a/HDOJ/1116_autoAC.cpp b/HDOJ/1116_autoAC.cpp new file mode 100644 index 0000000..8958ca0 --- /dev/null +++ b/HDOJ/1116_autoAC.cpp @@ -0,0 +1,72 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#define ll long long +#define eps 1e-5 +#define oo 1000000007 +#define pi acos(-1.0) +#define MAXN 100005 +#define MAXM 500005 +using namespace std; +int P[2][26],father[26]; +bool used[26]; +char s[1005]; +int getfather(int x) +{ + if (father[x]==x) return x; + return father[x]=getfather(father[x]); +} +int main() +{ + int i,cases,n,m,x,y,t1,t2; + scanf("%d",&cases); + while (cases--) + { + scanf("%d",&n); + memset(used,false,sizeof(used)); + memset(P,0,sizeof(P)); + for (i=0;i<26;i++) father[i]=i; + for (i=1;i<=n;i++) + { + scanf("%s",s+1); + x=s[1]-'a',y=s[strlen(s+1)]-'a'; + P[0][x]++,P[1][y]++; + father[getfather(x)]=getfather(y); + used[x]=used[y]=true; + m=getfather(x); + } + if (n==1) + { + printf("Ordering is possible.\n"); + continue; + } + for (i=0;i<26;i++) + if (used[i] && getfather(i)!=m) break; + if (i<26) + { + printf("The door cannot be opened.\n"); + continue; + } + t1=t2=0; + for (i=0;i<26;i++) + { + if (P[0][i]==P[1][i]) continue; + if (P[0][i]+1==P[1][i]) t1++; + else + if (P[1][i]+1==P[0][i]) t2++; + else break; + } + if (i<26 || !(t1==1 && t2==1 || !t1 && !t2)) + printf("The door cannot be opened.\n"); + else + printf("Ordering is possible.\n"); + } + return 0; +} diff --git a/HDOJ/1117_autoAC.cpp b/HDOJ/1117_autoAC.cpp new file mode 100644 index 0000000..3ca2fb3 --- /dev/null +++ b/HDOJ/1117_autoAC.cpp @@ -0,0 +1,62 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +using namespace std; +typedef long long ll; +using namespace std; +#define INF 10000000 +int a[54][2]; +int main() +{ + int n; + while(scanf("%d",&n)!=EOF && n) + { + memset(a,0,sizeof(a)); + if(n==1) + { + printf("Printing order for %d pages:\n", n); + printf("Sheet 1, front: Blank, 1\n"); + continue; + } + int i,j,k = n/4; + if(n%4!=0 ) k++; + for(i=1;i<=2*k;i++) + a[i][0] =i; + for(i=2*k,j=i+1;i>=1;i--,j++) + { + if(j<=n) + a[i][1]=j; + } + printf("Printing order for %d pages:\n",n); + char s[2][10]={"front","back "}; + char *p; + for(i=1;i<=2*k;i++) + { + if(a[i][0]==0 && a[i][0]==0 )continue; + j=i/2; + if( i&1 ) + { + p=s[0]; + j++; + } + else + p=s[1]; + printf("Sheet %d, %s:",j,p); + if( i&1 ) + swap(a[i][0],a[i][1]); + for(int m=0;m<2;m++) + { + if(a[i][m] ) printf(" %d",a[i][m]); + else printf(" Blank"); + if(!m) putchar(','); + } + printf("\n"); + } + } +} diff --git a/HDOJ/1119_autoAC.cpp b/HDOJ/1119_autoAC.cpp new file mode 100644 index 0000000..b7f1a33 --- /dev/null +++ b/HDOJ/1119_autoAC.cpp @@ -0,0 +1,164 @@ +#include +#include +#include +#define max(x,y) ((x)>(y)?(x):(y)) +using namespace std; +char s1[510],s2[510],s[1010]; +int t; +void Add(int A[],int a,int B[],int b,int C[],int &c) +{ + int i,j,k,*p,*q; + if(a=1;j--,i--) C[i]+=q[j]; + for(i=a;i>=0;i--)C[i-1]+=C[i]/10,C[i]%=10; + if(C[0]) for(c++,i=c;i>=1;i--) C[i]=C[i-1]; + for(i=1;!C[i]&&i<=c;i++); + k=i,c-=i-1; + for(i=1;i<=c;i++) C[i]=C[k+i-1]; + if(c<=0) c=1,C[1]=0; +} +void add() +{ + int A[510],a,B[510],b,C[510],c,i; + a=strlen(s1); + for(i=0;iB[i])flag=1; + if(A[i]b) flag=1; + if(a=1;j--,i--) + { + if(C[i]>=q[j]) + C[i]-=q[j]; + else C[i]=C[i]+10-q[j],C[i-1]--; + } + for(;i>=1&&C[i]<0;i--) C[i]+=10,C[i-1]--; + for(i=1;!C[i]&&i<=a;i++); + k=i,c=a-i+1; + for(i=1;i<=c;i++) C[i]=C[k+i-1]; + C[0]=flag; +} +void sub() +{ + int A[510],a,B[510],b,C[510],c,i; + a=strlen(s1); + for(i=0;i=1;i--) + for(j=b;j>=1;j--) + C[i+j]+=A[i]*B[j]; + for(i=a+b;i>1;i--)C[i-1]+=C[i]/10,C[i]%=10; + for(i=0;!C[i]&&i<=a+b;i++); + k=i,c=a+b-i+1; + for(i=1;i<=c;i++) C[i]=C[k+i-1]; + if(c<=0) c=1,C[1]=0; +} +int C[510][1010]; +void mul() +{ + int A[510],a,B[510],b,ans[1010],x,c[510],temp,i,j,t=0,k; + a=strlen(s1); + for(i=0;i=0;i--) + { + for(j=1;j<=t-(temp-1-i+c[i]);j++) putchar(' '); + for(j=1;j<=c[i];j++) printf("%d",C[i][j]);puts(""); + } + if(temp>1) + { + for(i=1;i<=t-max(k,x);i++) putchar(' '); + for(i=1;i<=max(k,x);i++) putchar('-');puts(""); + for(i=1;i<=t-x;i++) putchar(' '); + for(i=1;i<=x;i++) printf("%d",ans[i]);puts(""); + } +} +int main() +{ + for(scanf("%d",&t);t--;) + { + scanf("%s",s); + int i,len=strlen(s); + for(i=0;i +int main() +{ + int n; + scanf("%d",&n); + while(n--) + { + int x,y; + scanf("%d%d",&x,&y); + int a[1000]; + int b[1000]; + int c[1000]; + for(int i=0;i=0;i--) + { + c[0]+=b[i]; + for(int j=1;j +#include +#define len 251 +char post[len],s[len]; //post 涓哄缂琛ㄨ揪寮 +int priority[len],n; //priority 涓鸿绠绗浼绾 +void postfix(){ + int p,ep,i; +char expresion[len]; + for(i=p=ep=0;i +#include +int main() +{ + int t,n,sum; + scanf("%d",&t); + while(t--) + { + scanf("%d",&n); + sum=0; + while(n!=0) + { + n=n/5; + sum+=n; + } + printf("%d\n",sum); + } + return 0; +} diff --git a/HDOJ/1128_autoAC.cpp b/HDOJ/1128_autoAC.cpp new file mode 100644 index 0000000..2b1e9f5 --- /dev/null +++ b/HDOJ/1128_autoAC.cpp @@ -0,0 +1,17 @@ +#include +using namespace std; +bool a[1000001]={false}; +int main() +{ + int i,j,sum=0; + for(i=1;i<=1000000;i++) + { + j=i; + for(sum=j;j;j/=10) + sum+=j%10; + a[sum]=true; + if(!a[i]) + printf("%d\n",i); + } + return 0; +} diff --git a/HDOJ/1129_autoAC.cpp b/HDOJ/1129_autoAC.cpp new file mode 100644 index 0000000..15f0333 --- /dev/null +++ b/HDOJ/1129_autoAC.cpp @@ -0,0 +1,29 @@ +#include +#include +char c[28]={'_','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','.'}; +int plaincode[71]; +int main(){ + int k,i,n; + char ch[71]; + while(scanf("%d",&k),k){ + scanf("%s",ch); + n=strlen(ch); + for(i=0;i='a'&&ch[i]<='z'){ + plaincode[(k*i)%n]=((ch[i]-96)+i)%28; + //printf("%d ",(int)(ch[i]-96)); + } + else if(ch[i]=='_'){ + plaincode[(k*i)%n]=((ch[i]-95)+i)%28; + } + else{ + plaincode[(k*i)%n]=((ch[i]-19)+i)%28; + } + } + for(i=0;i +#include +#include +using namespace std; +#define base 10000 +#define maxx 100 +void multiply(int a[],int max,int b) +{ + int i,array=0; + for(i=max-1;i>=0;i--) + { + array+=b*a[i]; + a[i]=array%base; + array/=base; + } +} +void divide(int a[],int max,int b) +{ + int i,div=0; + for(i=0;i +#include +#include +int a[1001]; +void mul(int a[],int b) +{ + int i; + for(i=0;i<1001;i++) + a[i]*=b; + for(i=0;i<1000;i++) + if(a[i]>=10) + { + a[i+1]+=a[i]/10; + a[i]%=10; + } +} +int main() +{ + int n; + while(scanf("%d",&n)!=EOF,n) + { + int i; + for(i=0;i<1001;i++) + a[i]=0; + a[0]=1; + for(i=n+2;i<=2*n;i++) + mul(a,i); + for(i=1000;!a[i]&&i>0;i--); + for(;i>0;i--) + printf("%d",a[i]); + printf("%d\n",a[0]); + } + return 0; +} diff --git a/HDOJ/1133_autoAC.cpp b/HDOJ/1133_autoAC.cpp new file mode 100644 index 0000000..26d3187 --- /dev/null +++ b/HDOJ/1133_autoAC.cpp @@ -0,0 +1,63 @@ +#include +#include +#include +#include +#include +const int MAX=501; +int s[MAX]; +using namespace std; +int main() +{ + int n,m,q,p=1,c,sum,k,temp,t,i,j; + while(cin>>m>>n&&(m||n)) + { + cout<<"Test #"<=1;j--) + { + if(s[j]!=0) + break; + } + for(i=j,sum=0,t=0;j>=1;j--) + { + temp=sum*10+s[j]; + if(t==0) + { + if(temp/(m+1)>0) + { + t=1; + cout< +#include +int record[110][110]; +int a1[110],weishu[110]; +void cheng(int a) +{ + int i,m,c,chushu,temp; + m=weishu[a-1]; + c=0; + for(i=0;i<=m;++i) + { + a1[i]=a1[i]*(4*a-2)+c; + c=a1[i]/10000; + a1[i]%=10000; + } + if(c>0) + { + ++m; + a1[m]=c; + } + chushu=a+1,temp=a1[m]; + if(m==0) + a1[0]/=chushu; + else + { + for(i=m;i>=0;--i) + { + if(temp=0;--i) + { + printf("%.4d",record[n][i]); + } + printf("\n"); + } +} diff --git a/HDOJ/1140_autoAC.cpp b/HDOJ/1140_autoAC.cpp new file mode 100644 index 0000000..bbb9f02 --- /dev/null +++ b/HDOJ/1140_autoAC.cpp @@ -0,0 +1,54 @@ +#include +#include +#define maxn 102 +#define eps 1e-8 +using namespace std; +int m,k,i,j,n,ans,cnt[maxn]; +struct point +{ + friend inline istream & operator >> (istream & in, point &p) + { + in>>p.x>>p.y>>p.z; + return in; + } + point& operator -(point& b) + { + point a; + a.x=x-b.x; + a.y=y-b.y; + a.z=z-b.z; + return a; + } + double x,y,z; +}; +bool equal(double a,double b) +{ + return fabs(a-b)>k>>m&&(m||k)) + { + o.x=0,o.y=0,o.z=0; + ans=0; + memset(cnt,0,sizeof(cnt)); + for(i=0;i>sate[i]; + for(i=0;i>trop[i]; + for(i=0;i +#include +using namespace std; +int x[21]; +void make() +{ + int i,j; + double k=log(4.0); + for(i=196;i<=216;++i) + { + k*=2; + double f=0; + for(j=1;f>year&&year) + cout< +#include +using namespace std; +int x[21]; +void make() +{ + int i,j; + double k=log(4.0); + for(i=196;i<=216;++i) + { + k*=2; + double f=0; + for(j=1;f>year&&year) + cout< +#include +#include +using namespace std; +const int inf = 1000000000; +int map[1010][1010]; +int n, p; +bool flag[1010]; +int dis[1010]; +void spfa() +{ + for(int i = 1; i <= n ;++i) + { + flag[i] = false; + dis[i] = inf; + } + dis[2] = 0; + flag[2] = true; + queue que; + que.push(2); + while(!que.empty()) + { + int now = que.front(); + que.pop(); + flag[now] = false; + for(int i = 1; i <= n ;++i) + { + if(dis[i] > dis[now] + map[now][i]) + { + dis[i] = dis[now] + map[now][i]; + if(!flag[i]) + { + flag[i] = true; + que.push(i); + } + } + } + } +} +int cou[1010]; +void dfs(int now) +{ + if(now == 2) + { + cou[2] = 1; + return; + } + int result(0); + for(int i = 1; i <= n ;++i) + { + if(map[now][i] != inf && dis[i] < dis[now]) + { + if(cou[i] >= 0) + { + result += cou[i]; + } + else + { + dfs(i); + result += cou[i]; + } + } + } + cou[now] = result; +} +int main() +{ + int a, b, dist; + while(scanf("%d", &n) != EOF) + { + if(!n) + break; + scanf("%d", &p); + for(int i = 0; i <= n; ++i) + for(int j = 1; j <= n;++j) + map[i][j] = inf; + for(int i= 0; i < p; ++i) + { + scanf("%d %d %d", &a, &b, &dist); + map[a][b] = map[b][a] = dist; + } + spfa(); + for(int i = 1; i <= n;++i) + { + cou[i] = -1; + } + dfs(1); + printf("%d\n", cou[1]); + } + return 0; +} diff --git a/HDOJ/1143_autoAC.cpp b/HDOJ/1143_autoAC.cpp new file mode 100644 index 0000000..b20dcc6 --- /dev/null +++ b/HDOJ/1143_autoAC.cpp @@ -0,0 +1,25 @@ +#include +#include +#include +#include +const int MAX=31; +int s[MAX]; +using namespace std; +int main() +{ + int i,n; + s[0]=1; + s[2]=3; + for(i=4;i>n,n>=0) + { + if(n&1) + cout<<0< +#include +#include +using namespace std; +int main() +{ + int k , m , data , c, t; + while(cin >> k && k && cin >> m) + { + vector course; + bool pass = true; + while(k --) + { + cin >> data; + course.push_back(data); + } + while(m --) + { + cin >> c >> t; + if(pass) + { + int cnt = 0; + while(c--) + { + cin >> data; + if(find(course.begin() , course.end() , data) != course.end()) + {++cnt;} + } + if(cnt < t) + {pass = false;} + } + else + { + while(c --) + {cin >> data;} + } + } + cout << (pass ? "yes" : "no") << endl; + } + return 0; +} diff --git a/HDOJ/1145_autoAC.cpp b/HDOJ/1145_autoAC.cpp new file mode 100644 index 0000000..e7c9121 --- /dev/null +++ b/HDOJ/1145_autoAC.cpp @@ -0,0 +1,36 @@ +#include +#include +#include +#include +using namespace std; +double ex[30+5]={0.0}; +double mon[30+5]={0.0}; +double t=0.0; +int n=0; +double bp=0.0; +int main() +{ + mon[0]=1; + for(int i=1;i<=30;i++) + { + mon[i]=mon[i-1]*2; + } + while(scanf("%d%lf",&n,&t)!=EOF&&(n>0)) + { + ex[n]=mon[n]; + for(int i=n-1;i>=0;i--) + { + bp=mon[i]/ex[i+1]; + if(bp<=t) + { + ex[i]=(1+t)/2 * ex[i+1]; + } + else + { + ex[i]=(bp-t)/(1-t) * mon[i] + (1-bp)/(1-t) * (1+bp)/2 * ex[i+1]; + } + } + printf("%.3lf\n",ex[0]); + } + return(0); +} diff --git a/HDOJ/1146_autoAC.cpp b/HDOJ/1146_autoAC.cpp new file mode 100644 index 0000000..7de769b --- /dev/null +++ b/HDOJ/1146_autoAC.cpp @@ -0,0 +1,91 @@ +#include +#include +using namespace std; +int main() +{ + int t, c, n, m, i, time, ln[2], lt[2], ont, bt, temp, llt; + bool bleft, tleft; + char ch[10]; + cin >> c; + while (c--) + { + ln[0] = ln[1] = lt[0] = lt[1] = 0, bleft = 1, ont = 0, bt = 0; + cin >> n >> t >> m; + for (i = 0; i < m; i++) + { + scanf("%d%s", &time, ch); + if (ch[0] == 'l') + tleft = 1; + else + tleft = 0; + if (bt + ont <= time) + { + bleft = (bleft + ont / t) % 2; + bt = time; + if (bleft == tleft) + { + ln[tleft] = 0; + ont = t; + } + else + { + ln[tleft] = 1; + ont = 2 * t; + } + ln[(tleft + 1) % 2] = 0; + lt[0] = lt[1] = 0; + printf("%d\n", bt + ont); + } + else + { + llt = 0; + if (time >= bt + t) + { + temp = (time - bt) / t; + bt += temp * t; + ont -= temp * t; + bleft = (bleft + temp) % 2; + if (temp % 2) + lt[bleft]--; + lt[0] -= temp / 2; + lt[1] -= temp / 2; + lt[bleft] -= temp % 2; + lt[bleft]++; + if (lt[0] < 0) + { + ln[0] = 0; + lt[0] = 0; + } + if (lt[1] < 0) + { + ln[1] = 0; + lt[1] = 0; + } + } + if (time > bt) + llt = 2 * t; + ln[tleft]++; + if (bleft == tleft) + { + cout << bt + 2 * t * lt[tleft] + t + llt << endl; + if (2 * t * lt[tleft] + t + llt > ont) + ont = 2 * t * lt[tleft] + t + llt; + } + else + { + cout << bt + 2 * t + 2 * t * lt[tleft] << endl; + if (2 * t * lt[tleft] + 2 * t > ont) + ont = 2 * t * lt[tleft] + 2 * t; + } + if (ln[tleft] == n) + { + ln[tleft] = 0; + lt[tleft]++; + } + } + } + if (c) + printf("\n"); + } + return 0; +} diff --git a/HDOJ/1147_autoAC.cpp b/HDOJ/1147_autoAC.cpp new file mode 100644 index 0000000..3baef3a --- /dev/null +++ b/HDOJ/1147_autoAC.cpp @@ -0,0 +1,70 @@ +#include +#include +#include +#include +#include +using namespace std; +const int N = 100009; +struct Point{ + double x, y; +}; +struct Line { + Point p1, p2; +}; +Line line[N]; +vector v; +bool vis[N]; +double direction (Point p0, Point p1, Point p2) { + return ((p2.x - p0.x)*(p1.y - p0.y) - (p1.x - p0.x)*(p2.y - p0.y)); +} +bool on_segment (Point p0, Point p1, Point p2) { + double minx, maxx, miny, maxy; + minx = min(p0.x, p1.x); + maxx = max(p0.x, p1.x); + miny = min(p0.y, p1.y); + maxy = max(p0.y, p1.y); + if (p2.x >= minx && p2.x <= maxx && p2.y >= miny && p2.y <= maxy) + return true; + else + return false; +} +bool segments_intersect (Point p1, Point p2, Point p3, Point p4) { + double d1, d2, d3, d4; + d1 = direction(p3, p4, p1); + d2 = direction(p3, p4, p2); + d3 = direction(p1, p2, p3); + d4 = direction(p1, p2, p4); + if (((d1 < 0 && d2 > 0) || (d1 > 0 && d2 < 0)) && ((d3 < 0 && d4 > 0) || (d3 > 0 && d4 < 0))) + return true; + else + return false; +} +int main() +{ + int i, j, n; + while (scanf("%d", &n)!=EOF && n) { + v.clear(); + memset(vis, 0, sizeof(vis)); + for (i = 1; i <= n; ++i) + scanf("%lf %lf %lf %lf", &line[i].p1.x, &line[i].p1.y, &line[i].p2.x, &line[i].p2.y); + v.push_back(n); + for (j = n-1; j >= 1; j--) { + if (vis[j]) + continue; + for (i = n; i > j; --i) { + if (vis[i]) + continue; + if (segments_intersect(line[j].p1, line[j].p2, line[i].p1, line[i].p2)) + break; + } + if (i <= j) + v.push_back(j); + } + int len = (int)v.size(); + printf("Top sticks: "); + for (i = len -1; i > 0; --i) + printf("%d, ", v[i]); + printf("%d.\n", v[0]); + } + return 0; +} diff --git a/HDOJ/1148_autoAC.cpp b/HDOJ/1148_autoAC.cpp new file mode 100644 index 0000000..f5e95ba --- /dev/null +++ b/HDOJ/1148_autoAC.cpp @@ -0,0 +1,76 @@ +#include +#include +#include +#include +#include +using namespace std; +int dec(char *a,char *b) +{ + int a1,b1; + a1=strcmp(a,"rock"); + b1=strcmp(b,"rock"); + if(a1>0) + { + if(b1>0) + return 0; + else if(b1<0) + return 1; + else + return -1; + } + else if(a1<0) + { + if(b1>0) + return -1; + else if(b1<0) + return 0; + else return 1; + } + else + { + if(b1>0) + return 1; + else if(b1<0) + return -1; + else + return 0; + } +} +int main() +{ + char s1[10],s2[10]; + double win[1000]={0},lose[1000]={0}; + int m,n,i,j,k,a,b; + k=1; + while(cin>>m&&m) + { + if(k!=1) + cout<>n; + for(i=0;i>a>>s1>>b>>s2; + if(dec(s1,s2)==1) + { + win[a]++; + lose[b]++; + } + else if(dec(s1,s2)==-1) + { + win[b]++; + lose[a]++; + } + } + for(j=1;j +#include +#include +#include +using namespace std; +#define M 1005 +int map[M][M], vis[M], yy[105], x, y, n, cnt; +int getOne(int i){ + for(int j=0; j +#include +#include +using namespace std; +int const maxn=122; +int n,m; +bool mat[maxn][maxn]; +bool vis[maxn]; +int mac[maxn]; +bool match(int x) +{ + for(int i=1;i<=m;i++) + { + if(mat[x][i]&&!vis[i]){ + vis[i]=1; + if(!mac[i]||match(mac[i])){ + mac[i]=x; + return 1; + } + } + } + return 0; +} +int main(){ + int a,b; + int test; + scanf("%d",&test); + while(test--){ + scanf("%d%d",&m,&n); + memset(mat,0,sizeof(mat)); + memset(mac,0,sizeof(mac)); + for(int i=0;i +#include +#include +using namespace std; +const int maxn=200005; +struct node +{ + int x,y; +} p[maxn]; +int main() +{ + int n; + int i; + while(scanf("%d",&n),n) + { + for(i=1; i<=n; i++) + { + scanf("%d%d",&p[i].x,&p[i].y); + } + int sum=0; + int ans=0; + for(i=1; i<=n; i++) + { + if((p[i].xp[n/2+1].y)||(p[i].x>p[n/2+1].x&&p[i].yp[n/2+1].x&&p[i].y>p[n/2+1].y)) + { + ans++; + } + } + cout< +using namespace std; +long long p; +int a[100010]; +int main() +{ + while(cin >> p) + { + if(p==0)break; + if(p==2)cout << "Impossible" << endl; + else + { + for(int i=1;i +#include +#include +#include +#include +using namespace std; +#define maxn 1200 +#define eps 1e-8 +struct point +{ + double x; + double y; +}po[maxn],rec[maxn]; +struct line +{ + point a; + point b; +}temp,temp1; +double xmulit(point &a,point &b,point &c) +{ + return (a.x-b.x)*(a.y-c.y)-(a.y-b.y)*(a.x-c.x); +} +bool across(point &a,point &b,point &c,point &d) +{ +double p=xmulit(a,b,c),p1=xmulit(a,b,d); +if( fabs(p1) <= eps || fabs(p) <= eps ) return true; +if( p*p1 < -eps ) +return true; +return false; +} +bool one_line(point &a,point &b,point &c,point &d) +{ +double p=xmulit(a,b,c),p1=xmulit(a,b,d); +if( fabs(p1) < eps && fabs(p) < eps ) return true; +return false; +} +bool is_equal(point &a,point &b) +{ +return (fabs(a.x-b.x) <= eps) && (fabs(a.y-b.y) <=eps); +} +point intersection(line &u,line &v) +{ +point ret=u.a; +double t=((u.a.x-v.a.x)*(v.a.y-v.b.y) - (u.a.y-v.a.y)*(v.a.x-v.b.x))/((u.a.x-u.b.x)*(v.a.y-v.b.y)-(u.a.y-u.b.y)*(v.a.x-v.b.x)); +ret.x+=(u.b.x-u.a.x)*t; +ret.y+=(u.b.y-u.a.y)*t; +return ret; +} +int n,m; +double dis(point &a,point &b) +{ + return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y)); +} +int cmp(point a, point b) +{ + if(fabs(a.x-b.x)=min(pi.x,pj.x)&&pk.x<=max(pi.x,pj.x)&&pk.y>=min(pi.y,pj.y)&&pk.y<=max(pi.y,pj.y)) + return true; + } + return false; +} +bool segments_intersect(point p1,point p2,point p3,point p4) +{ + double d1=xmulit(p3,p4,p1); + double d2=xmulit(p3,p4,p2); + double d3=xmulit(p1,p2,p3); + double d4=xmulit(p1,p2,p4); + if(d1*d2<0&&d3*d4<0) + return true; + else if(d1==0&&on_segment(p3,p4,p1)) + return true; + else if(d2==0&&on_segment(p3,p4,p2)) + return true; + else if(d3==0&&on_segment(p1,p2,p3)) + return true; + else if(d4==0&&on_segment(p1,p2,p4)) + return true; + return false; +} +int inpoto(point a) +{ + int i; + point b,c,d; + b.y=a.y; + b.x=1e15; + int flag=0; + int count=0; + for(i=0;id.y) + count++; + } + else if(on_segment(a,b,d)) + { + if(d.y>c.y) + count++; + } + else if(segments_intersect(a,b,c,d)) + count++; + } + return count%2; +} +point mid(point &a,point &b) +{ + point c; + c.x=(a.x+b.x)/2; + c.y=(a.y+b.y)/2; + return c; +} +double find_ans() +{ + point a,b; + int i,j,k,pos=0; + double ans=0; + po[n]=po[0]; + for(i=0;i +int main() +{ + double k,l,s,w; + while(scanf("%lf%lf%lf%lf",&k,&l,&s,&w),k||l||s||w) + if(s=0){ + if(2*9.81*s-(s>=l)*k*(s-l)*(s-l)/w<=100) + puts("James Bond survives."); + else + puts("Killed by the impact."); + } + else + puts(Stuck in diff --git a/HDOJ/1156_autoAC.cpp b/HDOJ/1156_autoAC.cpp new file mode 100644 index 0000000..9b63720 --- /dev/null +++ b/HDOJ/1156_autoAC.cpp @@ -0,0 +1,164 @@ +#include +#include +#include +#include +#include +#include +using namespace std; +struct node{ + int l, r, num; +}; +bool cmp(pair p1, pair p2) +{ + if (p1.first != p2.first) + return p1.first < p2.first; + else + return p1.second < p2.second; +} +node nodes[2][500000]; +vector> posp; +vector posy; +map pysum; +vector posx[200010]; +int ress; +vector reso; +void init(int i,int l,int r) +{ + for (int j = 0; j < 2; j++) + { + nodes[j][i].l = l; + nodes[j][i].r = r; + nodes[j][i].num = 0; + } + if (l == r) + return; + else + { + int mid = (l + r) / 2; + init(i * 2, l, mid); + init(i * 2 + 1, mid+1, r); + } +} +void update(int t,int i, int y,int k)//k:0-add,1-nim +{ + if (k == 0) + nodes[t][i].num++; + else + nodes[t][i].num--; + if (nodes[t][i].l == nodes[t][i].r) + return; + else + { + int mid = (nodes[t][i].l + nodes[t][i].r) / 2; + if (posy[mid-1] >= y) + update(t, i * 2, y,k); + else + update(t, i * 2 + 1, y,k); + } +} +int query_down(int i, int y) +{ + if (posy[nodes[0][i].r-1] < y) + return nodes[0][i].num; + else if (nodes[0][i].l==nodes[0][i].r) + return 0; + else + { + int mid = (nodes[0][i].l + nodes[0][i].r) / 2; + int res = query_down(i*2,y); + if (y > posy[mid-1]) + res += query_down(i * 2 + 1, y); + return res; + } +} +int query_up(int i, int y) +{ + if (y < posy[nodes[1][i].l-1]) + return nodes[1][i].num; + else if (nodes[1][i].l == nodes[1][i].r) + return 0; + else + { + int mid = (nodes[1][i].l + nodes[1][i].r) / 2; + int res = query_up(i * 2 + 1, y); + if (y <= posy[mid-1]) + res += query_up(i * 2, y); + return res; + } +} +int main() +{ + int n; + while (cin >> n&&n) + { + posp.clear(); + posy.clear(); + for (int i = 0; i < n; i++) + { + int x, y; + cin >> x >> y; + posp.push_back(make_pair(x,y)); + posy.push_back(y); + } + sort(posp.begin(), posp.end(),cmp); + sort(posy.begin(), posy.end()); + int cx = posp[0].first; + int mx = 0; + for (int i = 0; i < n; i++) + posx[i].clear(); + pysum.clear(); + for (int i = 0; i < n; i++) + { + if (posp[i].first != cx) + { + mx++; + cx = posp[i].first; + } + posx[mx].push_back(posp[i].second); + pysum[posp[i].second]++; + } + vector::iterator i=unique(posy.begin(), posy.end()); + posy.erase(i, posy.end()); + init(1, 1, posy.size()); + for (int i = 0; i < n; i++) + update(1, 1, posp[i].second, 0); + ress = -1; + reso.clear(); + for (int i = 0; i <= mx; i++) + { + int tress = 999999, treso = -1; + for (int j = 0; j < posx[i].size(); j++) + update(1, 1, posx[i][j], 1); + for (int j = 0; j < posx[i].size(); j++) + { + int ld = query_down(1, posx[i][j]); + int ru = query_up(1, posx[i][j]); + if (tress > ld + ru) + tress = ld + ru; + treso=max(treso,int(n - tress - pysum[posx[i][j]] - posx[i].size() + 1)); + } + for (int j = 0; j < posx[i].size(); j++) + update(0, 1, posx[i][j], 0); + if (tress > ress) + { + ress = tress; + reso.clear(); + reso.push_back(treso); + } + else if (tress == ress) + { + reso.push_back(treso); + } + } + cout << "Stan: " << ress << "; Ollie:"; + sort(reso.begin(), reso.end()); + vector::iterator j=unique(reso.begin(), reso.end()); + reso.erase(j, reso.end()); + for (int i = 0; i < reso.size(); i++) + { + cout <<" "< +int Division(int a[100000],int left , int right) +{ + int base; + base = a[left]; + while(left < right) + { + while(left=base) + right--; + a[left]=a[right]; + while(left +#include +#include +#include +using namespace std; +int dp[15][99999]; +int main() +{ + int n,i,j,salary,hire,fire,num[15],Min,Max,k,a,b; + while(~scanf("%d",&n),n) + { + scanf("%d%d%d",&hire,&salary,&fire); + Min=99999; + Max=0; + for(i=1;i<=n;i++) + { + scanf("%d",&num[i]); + if(num[i]Max) Max=num[i]; + } + for(i=0;i<=n;i++) + for(j=Min;j<=Max;j++) + {if(i==0)dp[i][j]=0;else dp[i][j]=546548;} + for(i=1;i<=n;i++) + { + for(j=num[i];j<=Max;j++) + { + if(i==1) + { + dp[i][j]=dp[i-1][j]+j*(hire+salary); + } + else + { + for(k=num[i-1];k<=Max;k++) + { + a=dp[i-1][k]; + b=j*salary; + if(j>=k) + { + dp[i][j]=min(dp[i][j],a+(j-k)*hire+b); + } + else + { + dp[i][j]=min(dp[i][j],a+(k-j)*fire+b); + } + } + } + } + } + a=546548; + for(i=num[n];i<=Max;i++) + if(dp[n][i] +#include +char a[10009],b[10009]; +int c[10009][10009]; +int max(int x,int y) +{ + if(x>y) + return x; + else + return y; + } +int main() +{ + int i,j,x,y; + while(scanf("%s %s",a,b)!=EOF) + { + x=strlen(a); + y=strlen(b); + for(i=0;i<=x;i++) + c[0][i]=0; + for(i=0;i +#include +#include +#include +#include +const int MAX=10010; +int DP[MAX]; +int rem[MAX]; +using namespace std; +typedef struct Mouse +{ + int weight; + int speed; + int num; +}mice; +mice s[MAX]; +bool cmp(mice x,mice y) +{ + if(x.weight==y.weight) + return x.speedy.weight; +} +int main() +{ + int n,m,maxn,i,j,k,t,mark; + for(i=1;is[j].speed) + { + if(maxn +#include +#include +int main() +{ + int i,len; + char s[1000]; + while(gets(s)) + { + len = strlen(s); + for(i=0;i +#include +#include +#include +#include +using namespace std; +int father[10005], Enums, Count; +double MinL; +struct Point{ + int begin; + int end; + double Dis; +}P[10005]; +int Find(int k){ + return father[k]==k?k:father[k]=Find(father[k]); +} +int Cmp(Point a, Point b){ + return a.Dis>N){ + for(int i=0; i>x[i]>>y[i]; + } + MinL = 0.0; + Count=0; + for(int i=0; i +int main() +{ + int n; + char s[20]="149429719159479789"; + while(~scanf("%d",&n),n) + printf("%c\n",s[(n-1)%18]); + return 0; +} diff --git a/HDOJ/1164_autoAC.cpp b/HDOJ/1164_autoAC.cpp new file mode 100644 index 0000000..29bf034 --- /dev/null +++ b/HDOJ/1164_autoAC.cpp @@ -0,0 +1,22 @@ +#include +#include +int main() +{ + long int x; + int k,i; + while(scanf("%ld",&x)!=EOF) + { + k=sqrt((double)x); + for(i=2;i<=k;i++) + { + if(x%i==0) + { + x=x/i; + printf("%d*",i); + i=1; + k=sqrt((double)x); + } + } + printf("%d\n",x); + } +} diff --git a/HDOJ/1165_autoAC.cpp b/HDOJ/1165_autoAC.cpp new file mode 100644 index 0000000..a43459b --- /dev/null +++ b/HDOJ/1165_autoAC.cpp @@ -0,0 +1,17 @@ +#include +long int A(long int,long int); +int main() +{ + long int n,m; + while(scanf("%ld%ld",&m,&n)!=EOF) + printf("%ld\n",A(m,n)); + return 0; +} +long int A(long int m,long int n) +{ + if(n==0) return A(m-1,1); + else if(m==0)return n+2; + else if(m==1) return n+2; + else if(m==2) return 2*n+3; + else if(m==3)return A(m,n-1)*2+3; +} diff --git a/HDOJ/1170_autoAC.cpp b/HDOJ/1170_autoAC.cpp new file mode 100644 index 0000000..35993c7 --- /dev/null +++ b/HDOJ/1170_autoAC.cpp @@ -0,0 +1,21 @@ +#include +int main() +{ + int n,a,b; + char c; + scanf("%d",&n); + while(n--) + { + getchar(); + scanf("%c%d%d",&c,&a,&b); + if(c=='+') + printf("%d\n",a+b); + else if(c=='-') + printf("%d\n",a-b); + else if(c=='*') + printf("%d\n",a*b); + else + a%b?printf("%.2lf\n",a*1.0/b):printf("%d\n",a/b); + } + return 0; +} diff --git a/HDOJ/1171_autoAC.cpp b/HDOJ/1171_autoAC.cpp new file mode 100644 index 0000000..cf7d672 --- /dev/null +++ b/HDOJ/1171_autoAC.cpp @@ -0,0 +1,49 @@ +#include +#include +#include +using namespace std; +#include +int dp[1000010]; +int v[1000],m[1000]; +void zoreone(int v1,int m1,int sum) +{ + for(int i=sum;i>=m1;i--) + dp[i]=max(dp[i],dp[i-m1]+v1); +} +void complete(int v1,int m1,int sum) +{ + for(int i=m1;i<=sum;i++) + dp[i]=max(dp[i],dp[i-m1]+v1); +} +void multiple(int v1,int m1,int sum,int num) +{ + if(m1*num>sum) + complete( v1, m1, sum); + else + { + for(int k=1;k=0)) + { + sum=0; + for(int i=1;i<=n;i++) + { + scanf("%d%d",&v[i],&m[i]); + sum+=v[i]*m[i]; + } + sum1=sum/2; + memset(dp,0,sizeof(dp)); + for(int i=1;i<=n;i++) + multiple(v[i],v[i],sum1,m[i]); + printf("%d %d\n",sum-dp[sum/2],dp[sum/2]); + } + return 0; +} diff --git a/HDOJ/1172_autoAC.cpp b/HDOJ/1172_autoAC.cpp new file mode 100644 index 0000000..3aeef2a --- /dev/null +++ b/HDOJ/1172_autoAC.cpp @@ -0,0 +1,77 @@ +#include +#include +#include +using namespace std; +struct num +{ + char a[5]; + int b; + int c; +}st[102]; +int main() +{ + int i,j,k,key,v; + int n; + int a[4]; + char c[5]; + while(cin>>n&&n) + { + int count=0; + for(v=0;v>st[v].a>>st[v].b>>st[v].c; + } + for(v=3585;v<=9999;v++) + { + a[0]=v/1000; + a[1]=v%1000/100; + a[2]=v%100/10; + a[3]=v%10; + int flag=0; + for(i=0;i +#include +using namespace std; +#include +double x[1000002],y[1000002]; +int main() +{ + int n; + while(scanf("%d",&n)&&n) + { + for(int i=0;i +#include +using namespace std; +int main() +{ + int T; + double h1,r1,x1,y1,z1; + double h2,r2,x2,y2,z2,x3,y3,z3; + while(cin>>T) + { + while(T--) + { + cin>>h1>>r1>>x1>>y1>>z1; + cin>>h2>>r2>>x2>>y2>>z2>>x3>>y3>>z3; + double x4,y4,z4; + x4 = x1 - x2; + y4 = y1 - y2; + z4 = z1 + h1 - r1 - (0.9*h2 + z2 - r2 ); + double m,m1,m2; + m = x3*x4 + y3*y4 + z3*z4; + m1 = sqrt(x3*x3 + y3*y3 + z3*z3); + m2 = sqrt(x4*x4 + y4*y4 + z4*z4); + double dcos; + dcos = m/(m1*m2); + if(dcos<0) { cout<<"NO";continue;} + else + { + double d = m2*sqrt(1 - dcos*dcos); + if( d <= r1 ) cout<<"YES"< +# include +int map[1100][1100],vist[1100][1100],move[4][2]={1,0,0,1,-1,0,0,-1}; +int a,b,c,d,flag; +void dfs(int x,int y,int t,int p) +{ + int i,x1,y1; + if(t>3)return; + if(x==c&&y==d) + { + flag=1;return; + } + vist[x][y]=1; + if(t!=0) + { + if(map[x][y]!=0)return; + for(i=0;i<4&&!flag;i++) + { + x1=x+move[i][0]; + y1=y+move[i][1]; + if(vist[x1][y1]==1)continue; + if(p==i) + dfs(x1,y1,t,p); + else + dfs(x1,y1,t+1,i); + vist[x1][y1]=0; + } + } + else + for(i=0;i<4&&!flag;i++) + { + x1=x+move[i][0]; + y1=y+move[i][1]; + if(vist[x1][y1]==1)continue; + dfs(x1,y1,t+1,i); + vist[x1][y1]=0; + } +} +int main() +{ + int n,m,i,j,t; + while(scanf("%d%d",&n,&m),n&&m) + { + memset(map,1,sizeof(map)); + for(i=1;i<=n;i++) + for(j=1;j<=m;j++) + scanf("%d",&map[i][j]); + scanf("%d",&t); + while(t--) + { + flag=0; + scanf("%d%d%d%d",&a,&b,&c,&d); + if(map[a][b]!=map[c][d] || map[a][b]==0 || a<1||c<1||b<1||d<1||a>n||c>n||b>m||d>m) + printf("NO\n"); + else + { + memset(vist,0,sizeof(vist)); + dfs(a,b,0,-1); + if(flag) + printf("YES\n"); + else + printf("NO\n"); + } + } + } + return 0; +} diff --git a/HDOJ/1176_autoAC.cpp b/HDOJ/1176_autoAC.cpp new file mode 100644 index 0000000..4b0c84d --- /dev/null +++ b/HDOJ/1176_autoAC.cpp @@ -0,0 +1,30 @@ +#include +#include +int a[100008][13]; +int max(int a,int b,int c) +{ + if(afuck) fuck=t; + a[t][x+1]++; + } + for(i=fuck-1;i>0;i--) + for(j=1;j<=11;j++) + a[i][j]+=max(a[i+1][j],a[i+1][j-1],a[i+1][j+1]); + printf("%d\n",max(a[1][5],a[1][6],a[1][7])); + } + return 0; + } diff --git a/HDOJ/1177_autoAC.cpp b/HDOJ/1177_autoAC.cpp new file mode 100644 index 0000000..c7c803b --- /dev/null +++ b/HDOJ/1177_autoAC.cpp @@ -0,0 +1,90 @@ +#include +#include +#include +using namespace std; +struct person{ + int completed; + int hour; + int minute; + int second; + int judge; +}; +int main() +{ + int n=0,g=0,s=0,c=0,m=0; + struct person person[131]; + int isEarly(struct person[],int a,int b); + while(scanf("%d%d%d%d%d",&n,&g,&s,&c,&m)&&(n||g||s||c||m)) + { + for(int i=1;i<=n;i++) + { + scanf("%d %d:%d:%d",&person[i].completed,&person[i].hour,&person[i].minute,&person[i].second); + } + for(int i=1;i<=n;i++) + { + if(i!=m) person[i].judge=0; + else person[i].judge=1; + } + int index=0; + struct person cordinator; + for(int i=1;i +#include +int main() +{ + int n,i,k; + double s; + while(scanf("%d",&n),n) + { + s=1.0*(n+1)*n/6.0*(n+2); + k=0; + while(s>=10) + { + s=s/10; + k++; + } + printf("%.2lfE%d\n",s,k); + } + return 0; +} diff --git a/HDOJ/1179_autoAC.cpp b/HDOJ/1179_autoAC.cpp new file mode 100644 index 0000000..37be9a9 --- /dev/null +++ b/HDOJ/1179_autoAC.cpp @@ -0,0 +1,50 @@ +#include +#include +int map[110][110],last_y[110],hav[110],N,M; +int findmax(int m); +int main() +{ + int i,j,a,b,Sum; + while(scanf("%d %d",&N,&M)!=EOF) + { + memset(map,0,sizeof(map)); + memset(last_y,-1,sizeof(last_y)); + Sum=0; + for(i=1;i<=M;i++) + { + scanf("%d",&a); + for(j=0;j +#include +#include +#include +#define v 21 +#include +using namespace std; +char mapp[21][21]; +int x1,x2,y1,y2; +int dir[4][2]={{1,0},{0,-1},{-1,0},{0,1}}; +int used2[21][21]; +int m,n; +int ans;int used[21][21]; +int check(int y,int x) +{ + if(y>m||y<1||x>n||x<1) + { + return 1; + } + if(mapp[y][x]=='*'||used[y][x]==1) + return 1; + return 0; +} +struct node{ + int x,y,time; + bool friend operator<(node n1,node n2) + { + return n1.time>n2.time; + } +}; +int bfs() +{ + priority_queueq; + node pre; + int i,X,Y; + pre.x=x1;pre.y=y1; + pre.time=0; + q.push(pre); + while(!q.empty()) + { + pre=q.top(); + q.pop(); + if(pre.x==x2&&pre.y==y2) + { + return pre.time; + } + node next; + if(mapp[pre.y][pre.x]=='.'||mapp[pre.y][pre.x]=='S') + { + if(!used2[pre.y][pre.x]) + { + used2[pre.y][pre.x]=1; + next.x=pre.x;next.y=pre.y;next.time=pre.time+1; + q.push(next); + } + } + for(i=0;i<4;i++) + { + X=pre.x+dir[i][0];Y=pre.y+dir[i][1]; + if(check(Y,X)) + continue; + if(mapp[Y][X]=='.') + { + next.x=X;next.y=Y;next.time=pre.time+1; + used[Y][X]=1; + q.push(next); + } + else if(mapp[Y][X]=='|') + { + if(pre.time%2==0&&(dir[i][1]==1||dir[i][1]==-1)) + { + if(check(Y+dir[i][1],X)) + continue; + Y+=dir[i][1]; + used[Y][X]=1; + next.x=X;next.y=Y;next.time=pre.time+1; + q.push(next); + } + if(pre.time%2==1&&(dir[i][0]==1||dir[i][0]==-1)) + { + if(check(Y,X+dir[i][0])) + continue; + X+=dir[i][0];used[Y][X]=1; + next.x=X;next.y=Y;next.time=pre.time+1; + q.push(next); + } + } + else if(mapp[Y][X]=='-') + { + if(pre.time%2==0&&(dir[i][0]==1||dir[i][0]==-1)) + { + X+=dir[i][0]; + if(check(Y,X)) + continue; + used[Y][X]=1; + next.x=X;next.y=Y;next.time=pre.time+1; + q.push(next); + } + else if(pre.time%2==1&&(dir[i][1]==1||dir[i][1]==-1)) + { + Y+=dir[i][1]; + if(check(Y,X))continue;used[Y][X]=1; + next.x=X;next.y=Y;next.time=pre.time+1; + q.push(next); + } + } + } + } + return -1; +} +int main() +{ + while(scanf("%d%d",&m,&n)!=EOF) + { + int i,j; + memset(used,0,sizeof(used)); + memset(used2,0,sizeof(used2)); + for(i=1;i<=m;i++) + for(j=1;j<=n;j++) + { + cin>>mapp[i][j]; + if(mapp[i][j]=='T') + { + y2=i;x2=j; + mapp[i][j]='.'; + } + if(mapp[i][j]=='S') + { + mapp[i][j]='.'; + y1=i;x1=j; + } + } + ans=bfs(); + printf("%d\n",ans); + } + return 0; +} diff --git a/HDOJ/1181_autoAC.cpp b/HDOJ/1181_autoAC.cpp new file mode 100644 index 0000000..7477a84 --- /dev/null +++ b/HDOJ/1181_autoAC.cpp @@ -0,0 +1,67 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +using namespace std; +int main () +{ + char com[100][100]; + int vis[10000]; + int i,j,k=0,flag,fk,cot; + while(gets(com[k])) + { + flag=0; + while(com[k][0]!='0') + { + int num=strlen(com[k]); + if(com[k][0]=='b'){flag++;fk=k;} + if(com[k][num-1]=='m')flag++; + k++; + gets(com[k]); + } + if(flag<2) + cout<<"No."<s; + string t; + vis[fk]=1; + s.push(com[fk]); + while(!s.empty()) + { + t=s.front(); + s.pop(); + int num=t.length(); + char c=t[num-1]; + if(c=='m') + { + flag=1; + break; + } + else + { + for(i=0;i +#include +void chessmove(char (*board)[8], char vert1, char hori1, char vert2, char hori2); +void printboard(char (*board)[8]); +int main() +{ + char inputbuffer[1000]; + char board_buffer[8][8] = + { + {'r', 'n', 'b', 'q', 'k', 'b', 'n', 'r'}, + {'p', 'p', 'p', 'p', 'p', 'p', 'p', 'p'}, + {' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '}, + {' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '}, + {' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '}, + {' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '}, + {'P', 'P', 'P', 'P', 'P', 'P', 'P', 'P'}, + {'R', 'N', 'B', 'Q', 'K', 'B', 'N', 'R'} + }; + char board[8][8]; + char vert1, hori1, vert2, hori2; + int end = 1; + while(1) + { + memcpy(board,board_buffer,sizeof(board)); + while(1) + { + if(scanf("%d",&end)==EOF) + return 0; + if(end==-1) break; + gets(inputbuffer); + if (sscanf(inputbuffer,"%*c%*c%c%c%*c%c%c", &vert1, &hori1, &vert2, &hori2) != 4) + continue; + chessmove(board, vert1, hori1, vert2, hori2); + if (sscanf(inputbuffer+7,"%*c%*c%c%c%*c%c%c", &vert1, &hori1, &vert2, &hori2) != 4) + continue; + chessmove(board, vert1, hori1, vert2, hori2); + } + printboard(board); + } + return 0; +} +void chessmove(char (*board)[8], char vert1, char hori1, char vert2, char hori2) +{ + int v1 = vert1 - 'a', h1 = 7 - hori1 + '1'; + int v2 = vert2 - 'a', h2 = 7 - hori2 + '1'; + char chessman = board[h1][v1]; + board[h1][v1] = ' '; + board[h2][v2] = chessman; +} +void printboard(char (*board)[8]) +{ + int i, j, cnt; + for (i = 0; i < 8; ++i) + { + for (j = 0; j < 8; ) + { + cnt = 0; + while (board[i][j] == ' ' && j < 8) + { + ++cnt; + ++j; + } + if (cnt > 0) + printf("%d", cnt); + else + printf("%c", board[i][j++]); + } + if (i < 7) + printf("/"); + else + printf("\n"); + } +} diff --git a/HDOJ/1194_autoAC.cpp b/HDOJ/1194_autoAC.cpp new file mode 100644 index 0000000..ded2360 --- /dev/null +++ b/HDOJ/1194_autoAC.cpp @@ -0,0 +1,15 @@ +#include +int main () +{ + int n,s,d; + scanf ("%d",&n); + while (n--) + { + scanf ("%d%d",&s,&d); + if ((s+d)%2==0&&(s-d)%2==0&&(s+d)/2>=0&&(s-d)/2>=0) + printf ("%d %d",(s+d)/2,(s-d)/2); + else printf ("impossible"); + printf ("\n"); + } + return 0; +} diff --git a/HDOJ/1195_autoAC.cpp b/HDOJ/1195_autoAC.cpp new file mode 100644 index 0000000..0a9c43e --- /dev/null +++ b/HDOJ/1195_autoAC.cpp @@ -0,0 +1,86 @@ +#include +#include +using namespace std; +struct note +{ + int num[4]; + int count; +}; +bool mark[10][10][10][10] = { false }; +void bfs(note dd, note b1) +{ + queue q; + note now, next; + now = dd; + now.count = 0; + q.push(now); + while (!q.empty()) + { + now = q.front(); + q.pop(); + if (now.num[0] == b1.num[0] && now.num[1] == b1.num[1] && now.num[2] == b1.num[2] && now.num[3] == b1.num[3]) + { + cout << now.count << endl; + return; + } + for (int i = 0; i<4; i++) + { + next = now; + next.num[i]++; + if (next.num[i] == 10) + next.num[i] = 1; + if (mark[next.num[0]][next.num[1]][next.num[2]][next.num[3]] != true) + { + mark[next.num[0]][next.num[1]][next.num[2]][next.num[3]] = true; + next.count++; + q.push(next); + } + } + for (int i = 0; i<4; i++) + { + next = now; + next.num[i]--; + if (next.num[i] == 0) + next.num[i] = 9; + if (mark[next.num[0]][next.num[1]][next.num[2]][next.num[3]] != true) + { + mark[next.num[0]][next.num[1]][next.num[2]][next.num[3]] = true; + next.count++; + q.push(next); + } + } + for (int i = 0; i<3; i++) + { + next = now; + int temp = next.num[i]; + next.num[i] = next.num[i + 1]; + next.num[i + 1] = temp; + if (mark[next.num[0]][next.num[1]][next.num[2]][next.num[3]] != true) + { + mark[next.num[0]][next.num[1]][next.num[2]][next.num[3]] = true; + next.count++; + q.push(next); + } + } + } +} +int main() +{ + int size; + cin >> size; + for (int i = 0; i> a >> b; + note a1, b1; + for (int i = 3; i >= 0; i--) + { + a1.num[i] = a % 10; + a /= 10; + b1.num[i] = b % 10; + b /= 10; + } + bfs(a1, b1); + } +} diff --git a/HDOJ/1196_autoAC.cpp b/HDOJ/1196_autoAC.cpp new file mode 100644 index 0000000..a5f21bf --- /dev/null +++ b/HDOJ/1196_autoAC.cpp @@ -0,0 +1,13 @@ +#include +using namespace std; +int lowbit(int x) +{ + return x&-x; +} +int main() +{ + int n; + while(cin>>n&&n) + cout< +int check(int n) +{ + int sum1=0,sum2=0,sum3=0; + int m; + m=n; + while(m) + { + sum1+=m%10; + m/=10; + } + m=n; + while(m) + { + sum2+=m%12; + m/=12; + } + m=n; + while(m) + { + sum3+=m%16; + m/=16; + } + if(sum1==sum2&&sum2==sum3) + return 1; + return 0; +} +int main() +{ + int m=2992; + for(;m<=9999;m++) + { if(check(m)) + printf("%d\n",m); + } + return 0; +} diff --git a/HDOJ/1198_autoAC.cpp b/HDOJ/1198_autoAC.cpp new file mode 100644 index 0000000..6cf0a32 --- /dev/null +++ b/HDOJ/1198_autoAC.cpp @@ -0,0 +1,65 @@ +#include +#include +#include +using namespace std; +const int maxn = 52; +int n,m; +int cnt; +int dir[4][2] = {-1,0,0,-1,1,0,0,1}; +int arr[11][4] = {{1,1,0,0},{1,0,0,1},{0,1,1,0},{0,0,1,1}, + {1,0,1,0},{0,1,0,1},{1,1,0,1},{1,1,1,0},{0,1,1,1}, + {1,0,1,1},{1,1,1,1}}; +int flag[maxn][maxn]; +char Map[maxn][maxn]; +void dfs(int x,int y) +{ + flag[x][y] = 1; + for(int i = 0; i < 4; i++) + { + if(arr[Map[x][y]-'A'][i]) + { + int nx = x+dir[i][0]; + int ny = y+dir[i][1]; + if(nx < 0 || ny < 0 || nx >= m || ny >= n) + continue; + switch(i) + { + case 0:if(arr[Map[nx][ny]-'A'][2] && !flag[nx][ny]) + dfs(nx,ny); + break; + case 1:if(arr[Map[nx][ny]-'A'][3] && !flag[nx][ny]) + dfs(nx,ny); + break; + case 2:if(arr[Map[nx][ny]-'A'][0] && !flag[nx][ny]) + dfs(nx,ny); + break; + case 3:if(arr[Map[nx][ny]-'A'][1] && !flag[nx][ny]) + dfs(nx,ny); + break; + } + } + } +} +int main() +{ + while(~scanf("%d%d",&m,&n) && m>0 && n>0) + { + memset(flag,0,sizeof(flag)); + for(int i = 0; i < m; i++) + scanf("%s",Map[i]); + cnt = 0; + for(int i = 0; i < m; i++) + { + for(int j = 0; j < n; j++) + { + if(!flag[i][j]) + { + cnt++; + dfs(i,j); + } + } + } + printf("%d\n",cnt); + } + return 0; +} diff --git a/HDOJ/1199_autoAC.cpp b/HDOJ/1199_autoAC.cpp new file mode 100644 index 0000000..0bc6a47 --- /dev/null +++ b/HDOJ/1199_autoAC.cpp @@ -0,0 +1,47 @@ +#include +using namespace std; +char a[100002]; +int main() +{ + int n,x,y; + char ch; + while(cin>>n) + { + memset(a,'b',sizeof(a)); + int maxnum=0,minnum=2e31-1; + for(int i=0;i>x>>y>>ch; + if(y>maxnum) + maxnum=y; + if(xmax1) + { + max1=sum; + minpos=beg; + maxpos=end; + } + sum=0; + continue; + } + if(sum==0) + beg=i; + sum++; + end=i; + } + if(max1==0) + cout<<"Oh, my god"<