2016年团体程序设计天梯赛-模拟赛

L1-1. N个数求和

/* ***********************************************
Author        :Maltub
Email         :[email protected]
Blog          :htttp://www.xiang578.com
************************************************ */

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
//#include 
#define rep(i,a,n) for(int i=a;i
#define per(i,a,n) for(int i=n-1;i>=a;i--)
#define pb push_back
using namespace std;
typedef vector<int> VI;
typedef long long ll;
const ll mod=1000000007;
const int N=2048;

int main()
{
    int n;
    ll t,ta,a1,tmp;
    ll a[120],b[120];
    scanf("%d",&n);
    for(int i=0;iscanf("%lld/%lld",&a[i],&b[i]);
    }
    if(n>=1)
    {
        t=b[0];
        for(int i=1;i0;
        for(int i=0;iabs(ta),abs(t));
    ta/=tmp;
    t/=tmp;
    if(ta<0&&a1!=0) {ta=-ta;}
    if(a1==0&&ta!=0)
    {
        printf("%lld/%lld\n",ta,t);
    }
    else if(ta==0)
    {
        printf("%lld\n",a1);
    }
    else
    {
        printf("%lld %lld/%lld\n",a1,ta,t);
    }
    return 0;
}

L2-2. 树的遍历

/* ***********************************************
Author        :Maltub
Email         :[email protected]
Blog          :htttp://www.xiang578.top
************************************************ */

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
//#include 
#define rep(i,a,n) for(int i=a;i
#define per(i,a,n) for(int i=n-1;i>=a;i--)
#define pb push_back
using namespace std;
typedef vector<int> VI;
typedef long long ll;
const ll mod=1000000007;
const int N=2048;
struct node {
    int n;
    int l,r;
} p[N];
int n,a[50],b[50],tot;
vector<int>v;

int build(int l,int r,int l2,int r2) {
    if(l>r||l2>r2) return -1;
    int i,t,now;
    now=tot;
    tot++;
    p[now].n=a[r2];
    p[now].l=p[now].r=-1;
    if(l==r) return now;
    for(i=l; i<=r; i++) {
        if(b[i]==a[r2]) break;
    }
    t=i-l;
    p[now].l=build(l,i-1,l2,l2+t-1);
    p[now].r=build(i+1,r,l2+t,r2-1);
    return now;
}

int main() {
    //freopen("in.txt","r",stdin);
    //freopen("out.txt","w",stdout);
    int n,rt,t;
    scanf("%d",&n);
    for(int i=0; iscanf("%d",&a[i]);
    for(int i=0; iscanf("%d",&b[i]);
    tot=0;
    build(0,n-1,0,n-1);
    queue<int>q;
    v.clear();
    q.push(0);
    while(!q.empty()) {
        t=q.front();
        q.pop();
        v.push_back(p[t].n);
        if(p[t].l!=-1) q.push(p[t].l);
        if(p[t].r!=-1) q.push(p[t].r);
    }
    for(int i=0; iif(i) printf(" ");
        printf("%d",v[i]);
    }
    printf("\n");
    return 0;
}

 L3-004. 肿瘤诊断

#include
#include
#include
#include
#include
#include
using namespace std;
int dx[]= {1,-1,0,0,0,0};
int dy[]= {0,0,1,-1,0,0};
int dz[]= {0,0,0,0,1,-1};
int u[70][1300][130];
int a[70][1300][130];
struct node {
    int x,y,z;
} p,w;
int m,n,l;

int bfs(int x,int y,int z) {
    int num=0;
    queueq;
    p.x=x;
    p.y=y;
    p.z=z;
    q.push(p);
    while(!q.empty()) {
        w=q.front();
        num++;
        q.pop();
        for(int i=0; i<6; i++) {
            p.x=w.x+dx[i];
            p.y=w.y+dy[i];
            p.z=w.z+dz[i];
            if(p.x<0||p.x>=l||p.y<0||p.y>=m||p.z<0||p.z>=n) continue;
            if(u[p.x][p.y][p.z]==1||a[p.x][p.y][p.z]==0) continue;
            u[p.x][p.y][p.z]=1;
            q.push(p);
        }
    }
    return num;
}
int main() {
    int t,ans;
    scanf("%d%d%d%d",&m,&n,&l,&t);
    for(int i=0; ifor(int j=0; jfor(int k=0; kscanf("%d",&a[i][j][k]);
    memset(u,0,sizeof(u));
    ans=0;
    for(int i=0; ifor(int j=0; jfor(int k=0; kif(u[i][j][k]==0&&a[i][j][k]==1) {
                    //printf("%d %d %d\n",i,j,k);
                    u[i][j][k]=1;
                    int num=bfs(i,j,k);
                    if(num>=t)
                        ans+=num;
                    //printf("  %d\n",num);
                }
            }
    printf("%d\n",ans);
    return 0;
}

你可能感兴趣的:(pat)