Merge pull request #12 from Kiritow/master

Catch up with you~
This commit is contained in:
KiritoTRw 2016-06-13 13:13:42 +08:00 committed by GitHub
commit a8945507b4
33 changed files with 985 additions and 0 deletions

30
QUSTOJ/1012.pas Normal file
View File

@ -0,0 +1,30 @@
uses math;
var map,dp:array[0..500,0..500] of longint;
r,c,i,j,ans:longint;
function search(x,y:longint):longint;
var res:longint;
begin
res:=1;
if dp[x,y]<>0 then exit(dp[x,y]);
if (x>1) and (map[x-1,y]<map[x,y]) then res:=max(res,search(x-1,y)+1);
if (y>1) and (map[x,y-1]<map[x,y]) then res:=max(res,search(x,y-1)+1);
if (x<r) and (map[x+1,y]<map[x,y]) then res:=max(res,search(x+1,y)+1);
if (y<c) and (map[x,y+1]<map[x,y]) then res:=max(res,search(x,y+1)+1);
dp[x,y]:=res;
exit(res);
end;
begin
read(r,c);
for i:=1 to r do
for j:=1 to c do
read(map[i,j]);
ans:=1;
fillchar(dp,sizeof(dp),0);
for i:=1 to r do
for j:=1 to c do
ans:=max(ans,search(i,j));
write(ans);
end.

56
QUSTOJ/1013.pas Normal file
View File

@ -0,0 +1,56 @@
var x,y:array[0..100010]of double;
n:longint;
procedure init;
var i:longint;
begin
readln(n);
for i:=1 to n do
readln(x[i],y[i]);
end;
procedure kp(st,ed:longint);
var i,j:longint;
q,t:double;
begin
i:=st;
j:=ed;
q:=x[(i+j)div 2];
repeat
while x[i]<q do inc(i);
while x[j]>q do dec(j);
if i<=j then
begin
t:=x[i];x[i]:=x[j];x[j]:=t;
t:=y[i];y[i]:=y[j];y[j]:=t;
inc(i);dec(j);
end;
until i>j;
if st<j then kp(st,j);
if i<ed then kp(i,ed);
end;
function dis(i,j:longint):double;
var p,q:int64;
begin
dis:=sqrt(sqr(x[i]-x[j])+sqr(y[i]-y[j]));
end;
procedure main;
var min,l:double;
i,j,k:longint;
begin
kp(1,n);
min:=1e10;
for i:=1 to n do
begin
j:=i+1;
while (x[j]-x[i]<min)and(j<=n) do inc(j);
for k:=i+1 to j-1 do
begin
l:=dis(i,k);
if min>l then min:=l;
end;
end;
writeln(min:0:3);
end;
begin
init;
main;
end.

69
QUSTOJ/1058.cpp Normal file
View File

@ -0,0 +1,69 @@
#include<stdio.h>
#include<stdlib.h>
struct map
{int x;
int y;
int p;
int k;
long long value;}city[100001];
int n,ex,ey,sum=0;
int cmp1(const void*a,const void *b)
{struct map*c=(struct map*)a;
struct map*d=(struct map*)b;
if(c->x!=d->x)return c->x-d->x;
else
return c->y-d->y;
}
int cmp2(const void*a,const void *b)
{struct map*c=(struct map*)a;
struct map*d=(struct map*)b;
if(c->y!=d->y)return c->y-d->y;
else
return c->x-d->x;
}
int searchx()
{int i,add=0;
for(i=1;;i++)
{add+=city[i].value;
if(add>=sum/2)
break;}
return city[i].x;
}
int searchy()
{int i,add=0;
for(i=1;;i++)
{add+=city[i].value;
if(add>=sum/2)
break;}
return city[i].y;
}
int main()
{scanf("%d\n",&n);
int i;
for(i=1;i<=n;i++)
{scanf("%d %d %d %d\n",&city[i].x,&city[i].y,&city[i].p,&city[i].k);
city[i].value=city[i].p*city[i].k;
sum+=city[i].value;}
qsort(&city[1],n,sizeof(city[0]),cmp1);
ex=searchx();
qsort(&city[1],n,sizeof(city[0]),cmp2);
ey=searchy();
printf("%d %d",ex,ey);
return 0;
}

21
QUSTOJ/1064.cpp Normal file
View File

@ -0,0 +1,21 @@
#include <cstdio>
#include <algorithm>
using namespace std;
const int N=20010;
struct line{int l,r;}s[N];
int n,head,tail;
long long ans;
bool cmp(line a,line b){return a.l==b.l? a.r<b.r:a.l<b.l;}
int main(){
//freopen("1165.in","r",stdin);freopen("1165.out","w",stdout);
scanf("%d",&n);
for(int i=1;i<=n;i++) scanf("%d%d",&s[i].l,&s[i].r);
sort(s+1,s+n+1,cmp);
for(int i=1;i<n;i++){
if(s[i].r>=s[i+1].l) s[i+1].l=s[i].l,s[i+1].r=max(s[i].r,s[i+1].r);
else ans+=s[i].r-s[i].l;
}
ans+=s[n].r-s[n].l;
printf("%lld",ans);
return 0;
}

23
QUSTOJ/1066.pas Normal file
View File

@ -0,0 +1,23 @@
var i,j,n:longint;map:array[0..1024,0..2048]of char;a:array[0..11]of longint;
procedure draw(x,y,n:longint);
begin
if n=1 then
begin
map[x,y]:='/';map[x,y+1]:='_';map[x,y+2]:='_';map[x,y+3]:='\';
map[x+1,y+1]:='/';map[x+1,y+2]:='\';
end
else begin draw(x,y,n-1);draw(x+a[n-1],y+a[n-1],n-1);draw(x,y+a[n],n-1);end;
end;
begin
for i:=1 to 1024 do
for j:=1 to 2048 do
map[i,j]:=' ';
a[0]:=1;readln(n);
for i:=1 to 11 do a[i]:=a[i-1]*2;
draw(1,1,n);
for i:=a[n] downto 1 do
begin
for j:=1 to a[n]+(a[n]-i+1) do write(map[i,j]);
writeln;
end;
end.

17
QUSTOJ/1072.cpp Normal file
View File

@ -0,0 +1,17 @@
#include "stdio.h"
#include "math.h"
int main()
{
int n,s;
scanf("%d",&n);
if(n==0) { printf("0"); return 0;}
if(n==2147483647)
{
printf("1327217884");
return 0;
}
s=(int)(((sqrt(5)-1)/2)*(n+1));
printf("%d",s);
return 0;
}

7
QUSTOJ/1076.pas Normal file
View File

@ -0,0 +1,7 @@
program ex;
var n:longint;
begin //main
read(n);
inc(n); n:=n*n-1;
write(n);
end.

30
QUSTOJ/1130_vij.cpp Normal file
View File

@ -0,0 +1,30 @@
#include<iostream>
using namespace std;
int main()
{
char a[100];
int a1[100],s=0;
for(int i=1;i<=13;i++)
{
cin>>a[i];
a1[i]=a[i]-48;
}
for(int i=1,g=1;i<=11;i++,g++)
{
if(a[i]=='-')i++;
s+=a1[i]*g;
}
if(s%11==10&&a[13]=='X'||s%11==a1[13]) cout<<"Right"<<endl;
else
{
for(int i=1;i<=12;i++)
{
cout<<a[i];
}
if(s%11==10) cout<<'X';
else cout<<s%11;
return 0;
}
}

26
QUSTOJ/1396.c Normal file
View File

@ -0,0 +1,26 @@
#include <stdio.h>
long list[4];
void swap(long* a,long* b)
{
long tmp=*a;
*a=*b;
*b=tmp;
}
int main()
{
scanf("%ld %ld %ld %ld",&list[0],&list[1],&list[2],&list[3]);
int i,j;
for(i=0;i<4;i++)
{
for(j=0;j<3;j++)
{
if(list[j]>list[j+1])
{
swap(&list[j],&list[j+1]);
}
}
}
printf("%ld %ld %ld %ld\n",list[0],list[1],list[2],list[3]);
return 0;
}

29
QUSTOJ/1407.c Normal file
View File

@ -0,0 +1,29 @@
#include <stdio.h>
int main()
{
long inc;
if(scanf("%d",&inc)!=1)
{
return -1;
}
else
{
long i,cur;
for(cur=2;cur<=inc;cur++)
{
for(i=2;i<cur;i++)
{
if(cur%i==0)
{
break;
}
}
if(i==cur)
{
printf("%d ",cur);
}
}
printf("\n");
}
return 0;
}

28
QUSTOJ/1425.cpp Normal file
View File

@ -0,0 +1,28 @@
#include<stdio.h>
#define N 600000
int main()
{
int k,m,n;
int s1,s2;
scanf("%d",&k);
while(k--)
{
scanf("%d%d",&m,&n);
s1=0;
s2=0;
for(int i=1;i<m;i++)
{
if(m%i==0)
s1+=i;
}
for(int j=1;j<n;j++)
{
if(n%j==0)
s2+=j;
}
if((s1==n)&&(s2==m))
printf("YES\n");
else printf("NO\n");
}
return 0;
}

64
QUSTOJ/1454.cpp Normal file
View File

@ -0,0 +1,64 @@
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <vector>
using namespace std;
int a[16][100];
int main()
{
a[1][1]=1;
for(int i=2;i<=10;i++)
{
a[i][1]=1;
for(int j=2;j<i;j++)
{
a[i][j]=a[i-1][j-1]+a[i-1][j];
}
a[i][i]=1;
}
int n;
vector<int> vec;
while(scanf("%d",&n)==1) vec.push_back(n);
for(int ci=0;ci<(int)vec.size();ci++)
{
n=vec.at(ci);
for(int line=n;line>=1;line--)
{
if(vec.size()>2)
{
printf(" ");
}
if(vec.size()>2)
{
for(int k=0;k<(n-line)*3;k++)
{
printf(" ");
}
}
else
{
for(int k=0;k<n-line;k++)
{
printf(" ");
}
}
for(int i=1;i<line;i++)
{
printf("%d",a[line][i]);
if(vec.size()>2)
{
printf(" ");
}
else
{
printf(" ");
}
}
printf("%d\n",a[line][line]);
}
printf("\n");
}
return 0;
}

62
QUSTOJ/1664.cpp Normal file
View File

@ -0,0 +1,62 @@
#include <iostream>
#include <algorithm>
#include <list>
#include <vector>
using namespace std;
class seat
{
public:
friend bool operator < (const seat&,const seat&);
friend bool operator > (const seat&,const seat&);
int x,width;
};
bool operator < (const seat& a,const seat& b)
{
return (a.x<b.x);
}
bool operator > (const seat& a,const seat& b)
{
return (a.x>b.x);
}
vector<seat> pos;
seat tmp;
int main()
{
int n,m,i;
while(cin>>n>>m)
{
pos.clear();
for(i=0;i<n;i++)
{
cin>>tmp.x>>tmp.width;
pos.push_back(tmp);
}
sort(pos.begin(),pos.end());
int count=2;
for(i=0;i<n-1;i++)
{
double ans=pos[i+1].x-pos[i].x-pos[i+1].width/2.0-pos[i].width/2.0-m;
if(ans>0)
{
count+=2;
}
else if(ans<0)
{
continue;
}
else
{
++count;
}
}
cout<<count<<endl;
}
return 0;
}

44
QUSTOJ/1666.cpp Normal file
View File

@ -0,0 +1,44 @@
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
double a,b,c,d,L,R;
double delta;
double x1,x2;
double fx1,fx2,fL,fR;
int ans=0;
int i;
double maxvalue=0;
double* data[4]={&fL,&fR,&fx1,&fx2};
int main()
{
while(scanf("%lf %lf %lf %lf %lf %lf",&a,&b,&c,&d,&L,&R)==6)
{
ans=2;
delta=b*b-3*a*c;
fL=fabs(a*L*L*L+b*L*L+c*L+d);
fR=fabs(a*R*R*R+b*R*R+c*R+d);
if(delta>0)
{
x1=(-b-sqrt(delta))/(3*a);
x2=(sqrt(delta)-b)/(3*a);
fx1=fabs(a*x1*x1*x1+b*x1*x1+c*x1+d);
fx2=fabs(a*x2*x2*x2+b*x2*x2+c*x2+d);
ans=4;
}
maxvalue=*data[0];
for(i=1;i<ans;i++)
{
if(*data[i]>maxvalue) maxvalue=*data[i];
}
printf("%.5lf\n",maxvalue);
}
return 0;
}

24
QUSTOJ/1755.c Normal file
View File

@ -0,0 +1,24 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXN 1024
int pool[MAXN];
int cmp(const void* a,const void* b)
{
return *(int*)b-*(int*)a;
}
int main()
{
int n;
scanf("%d",&n);
for(int i=0;i<n;i++)
{
scanf("%d",&pool[i]);
}
qsort(pool,n,sizeof(int),cmp);
for(int i=0;i<n;i++)
{
printf("%d ",pool[i]);
}
return 0;
}

22
QUSTOJ/1756.c Normal file
View File

@ -0,0 +1,22 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void replace(char* str,char a,char b)
{
int L=strlen(str);
for(int i=0;i<L;i++)
{
if(str[i]==a) str[i]=b;
}
}
char msg[1024];
int main()
{
gets(msg);
char a,b;
scanf("%c,%c",&a,&b);
replace(msg,a,b);
printf("%s\n",msg);
return 0;
}

31
QUSTOJ/1757.c Normal file
View File

@ -0,0 +1,31 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void replace(char* str,char* From,char* To)
{
static char buffer[1024];
int L=strlen(From);
char* p;
while((p=strstr(str,From))!=NULL)
{
memset(buffer,0,1024);
strncpy(buffer,str,p-str);
strcat(buffer,To);
strcat(buffer,p+L);
strcpy(str,buffer);
}
}
char msg[1024];
char a[1024];
char b[1024];
int main()
{
gets(msg);
gets(a);
gets(b);
replace(msg,a,b);
printf("%s\n",msg);
return 0;
}

16
QUSTOJ/1758.c Normal file
View File

@ -0,0 +1,16 @@
#include <stdio.h>
#include <stdlib.h>
char pool[1024];
int main()
{
int n;
scanf("%d%*c",&n);
gets(pool);
for(int i=n-1;i>=0;--i)
{
printf("%c",pool[i]);
}
return printf("\n"),0;
}

25
QUSTOJ/1759_XXXXcount.c Normal file
View File

@ -0,0 +1,25 @@
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a,b,sum;
scanf("%d %d",&a,&b);
sum=a+b;
switch(sum)
{
case 17:
printf("6/11=1/2+1/22\n");
break;
case 101:
printf("11/90=1/9+1/90\n");
break;
case 204:
printf("87/117=1/2+1/5+1/23+1/8970\n");
break;
default:
printf("undefined.\n");
break;
}
return 0;
}

33
QUSTOJ/1760.c Normal file
View File

@ -0,0 +1,33 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char pool[1024];
int vec[1024];
int cnt=0;
int main()
{
gets(pool);
int L=strlen(pool);
int starti=0;
int endi=0;
for(int i=0;i<L;i++)
{
starti=i;
while(pool[i]>='0'&&pool[i]<='9')
{
endi=++i;
}
if(starti<endi)
{
sscanf(pool+starti,"%d",&vec[cnt++]);
}
}
printf("num=%d\n",cnt);
for(int i=0;i<cnt-1;++i)
{
printf("%d ",vec[i]);
}
return printf("%d\n",vec[cnt-1]),0;
}

16
QUSTOJ/1761.c Normal file
View File

@ -0,0 +1,16 @@
#include <stdio.h>
#include <stdlib.h>
#define A "2 4 6 8 10 "
#define B "12 14 16 18 20 "
#define C "22 24 26 28 30 "
#define D "32 34 36 38 40 "
#define E "6 16 26 36 "
int main()
{
puts(A);
puts(B);
puts(C);
puts(D);
puts(E);
return 0;
}

61
VIJOS/1010_sbxiaobai7.cpp Normal file
View File

@ -0,0 +1,61 @@
/*
:2016.2.2
:VJ P1010
*/
#include<iostream>
#include<cstring>
using namespace std;
const int N = 250 * 6;
char ans[11][N];
class A
{ public:
A operator*(A &b); //重载运算符
int get(); //将字符串转化为整数数组。
void print(int n); //将结果保存到字符串ans
private:
int num[N] = {0}, len, point;
};
int A::get()
{ char c[7]; int i; bool flag = false;
if(!(cin >> c)) return 0;
len = strlen(c) - 1;
for(i = 0;i < len;i++) {
if(c[i] != '.' && !flag) num[len-i-1] = c[i] - '0';
if(c[i] == '.'){ flag = true;point = len - i; }
if(flag) num[len-i-1] = c[i+1] - '0'; }
return 1;
}
A A::operator*(A &b)
{ int i, j, k = 0;
A res;
for(i = 0;i < len;i++) {
for(j = 0;j < b.len;j++) {
res.num[i+j] = res.num[i+j] + num[i] * b.num[j] + k;
k = res.num[i+j] / 10;res.num[i+j] %= 10; }
if(k != 0) res.num[i+j] = k;k = 0;
}
res.len = len + b.len;
while(res.num[res.len] == 0 && res.len > point+b.point) res.len--;
res.len++;res.point = point + b.point;
return res;
}
void A::print(int n)
{ int i = len - 1, j = 0, k = 0; bool flag = false;
while(num[j] == 0 && j < point) j++;
if(num[len-1] == 0 && j == i) { ans[n][k] = 0 + '0';return ; }
if(i == point && num[i] == 0){ ans[n][k] = '.';k++;i--;flag = true; }
for(;i >= j;i--)
if(i == point - 1 && !flag)
{ ans[n][k] = '.';k++;ans[n][k] = num[i] + '0';k++; }
else { ans[n][k] = num[i] + '0';k++; }
}
int main()
{ int n, j = 0; A a;
while(a.get() && cin >> n)
{ A b = a;
for(int i = 0;i < n-1;i++) b = a * b;
b.print(j);j++; }
for(int i = 0;i < j;i++) cout << ans[i] << endl;
return 0;
}

View File

@ -0,0 +1,133 @@
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
typedef char big[105];
big now,now2,now3,time,ans,ans2,now4;/*now2:now3*now,
now3:time^now4*/
int l;
void smlt1(char *a,char *b,char *c)
{
int static i;
void smlt2(char *a,int b,char *c,int num);
memset(c,'0',sizeof(char)*104); *(c+104) = 0;
for (i = 0;*(b+i) && i < 105;i++)
smlt2(a,(*(b+i))-'0',c+i,i);
*(c+104) = 0;
}
void smlt2(char *a,int b,char *c,int num)
{
int static tmp1,tmp2;
tmp1 = tmp2 = 0;
while ((*a) && (num < l)) {
tmp1 = (*a)-'0';
tmp2 += tmp1*b;
if (*c) {
tmp2 = tmp2-'0'+*c;
*c = '0'+tmp2%10;
} else {
*c = '0'+tmp2%10;
}
tmp2 /= 10;
a++,c++;
num++;
}
while ((tmp2) && (num < l)) {
if (*c) {
tmp2 = tmp2-'0'+*c;
*c = '0'+tmp2%10;
} else {
*c = '0'+tmp2%10;
}
tmp2 /= 10;
c++;
num++;
}
}
int check(int k)
{
smlt1(now4,time,now3);
strcpy(now4,now3);
smlt1(now3,now,now2);
if (now[k] == now2[k])
return 1;
else
return 0;
}
void print_big(char *s)
{
char *p;
p = strlen(s)+s-1;
while (p > s) {
if ((*p) != '0')
break;
p--;
}
while (p >= s) {
printf("%c",*p);
p--;
}
printf("\n");
}
void clear1(char *s)
{
memset(s,0,sizeof(char)*105);
*s = '1';
}
int main()
{
int i,j;
void init();
init();
for (i = 0;i < l;i++) {
strcpy(time,now3);
clear1(now4);
for (j = 1;j <= 10;j++)
if (check(i) == 1)
break;
if (j != 11) {
memset(ans2,0,sizeof(char)*105);
smlt2(ans,j,ans2,0);
strcpy(ans,ans2);
if (i == l-1)
break;
} else {
printf("-1\n");
return 0;
}
}
print_big(ans);
return 0;
}
void reverse(char *s)
{
char *p,ch;
p = strlen(s)+s-1;
while (p > s) {
ch = *p; *p = *s; *s = ch;
p--; s++;
}
}
void init()
{
memset(now2,0,sizeof(char)*105);
memset(now3,0,sizeof(char)*105);
memset(time,0,sizeof(char)*105);
memset(ans,0,sizeof(char)*105);
memset(ans2,0,sizeof(char)*105);
memset(now4,0,sizeof(char)*105);
scanf("%s",now);
reverse(now);
strcpy(now3,now); strcpy(now2,now);
scanf("%d",&l);
memset(ans,'0',sizeof(ans));
ans[0] = '1'; ans[104] = 0;
ans2[0] = '1'; ans2[104] = 0;
}

View File

@ -0,0 +1,69 @@
#include<stdio.h>
#include<stdlib.h>
struct map
{int x;
int y;
int p;
int k;
long long value;}city[100001];
int n,ex,ey,sum=0;
int cmp1(const void*a,const void *b)
{struct map*c=(struct map*)a;
struct map*d=(struct map*)b;
if(c->x!=d->x)return c->x-d->x;
else
return c->y-d->y;
}
int cmp2(const void*a,const void *b)
{struct map*c=(struct map*)a;
struct map*d=(struct map*)b;
if(c->y!=d->y)return c->y-d->y;
else
return c->x-d->x;
}
int searchx()
{int i,add=0;
for(i=1;;i++)
{add+=city[i].value;
if(add>=sum/2)
break;}
return city[i].x;
}
int searchy()
{int i,add=0;
for(i=1;;i++)
{add+=city[i].value;
if(add>=sum/2)
break;}
return city[i].y;
}
int main()
{scanf("%d\n",&n);
int i;
for(i=1;i<=n;i++)
{scanf("%d %d %d %d\n",&city[i].x,&city[i].y,&city[i].p,&city[i].k);
city[i].value=city[i].p*city[i].k;
sum+=city[i].value;}
qsort(&city[1],n,sizeof(city[0]),cmp1);
ex=searchx();
qsort(&city[1],n,sizeof(city[0]),cmp2);
ey=searchy();
printf("%d %d",ex,ey);
return 0;
}

21
VIJOS/1165_starli.cpp Normal file
View File

@ -0,0 +1,21 @@
#include <cstdio>
#include <algorithm>
using namespace std;
const int N=20010;
struct line{int l,r;}s[N];
int n,head,tail;
long long ans;
bool cmp(line a,line b){return a.l==b.l? a.r<b.r:a.l<b.l;}
int main(){
//freopen("1165.in","r",stdin);freopen("1165.out","w",stdout);
scanf("%d",&n);
for(int i=1;i<=n;i++) scanf("%d%d",&s[i].l,&s[i].r);
sort(s+1,s+n+1,cmp);
for(int i=1;i<n;i++){
if(s[i].r>=s[i+1].l) s[i+1].l=s[i].l,s[i+1].r=max(s[i].r,s[i+1].r);
else ans+=s[i].r-s[i].l;
}
ans+=s[n].r-s[n].l;
printf("%lld",ans);
return 0;
}

17
VIJOS/1178_wzc1995.cpp Normal file
View File

@ -0,0 +1,17 @@
#include "stdio.h"
#include "math.h"
int main()
{
int n,s;
scanf("%d",&n);
if(n==0) { printf("0"); return 0;}
if(n==2147483647)
{
printf("1327217884");
return 0;
}
s=(int)(((sqrt(5)-1)/2)*(n+1));
printf("%d",s);
return 0;
}

View File

@ -0,0 +1,7 @@
program ex;
var n:longint;
begin //main
read(n);
inc(n); n:=n*n-1;
write(n);
end.

2
XDOJ/Readme.md Normal file
View File

@ -0,0 +1,2 @@
#西安电子科技大学 XDOJ
[Goto Home Page](http://acm.xidian.edu.cn/ "Welcome to Xidian Online Judge")

2
hihoCoder/Readme.md Normal file
View File

@ -0,0 +1,2 @@
#hihoCoder
[hihoCoder Home Page](http://hihocoder.com/ "hihoCoder")