zoukankan      html  css  js  c++  java
  • Gym 101630(NEERC 17) D.Designing the Toy

    题目大意:给出三视图方向上分别能看到的正方形数a,b,c(1<=a,b,c<=100),在-100<=x,y,z<=100的范围内构造出满足情况的一种正方体的摆放方式

    做法很简单,首先找到a,b,c中的最大值,如果最大值满足小于等于另两个值的乘积,则有解,否则无解;明确这一点之后,便可以将所有正方体平铺在最大值所在的平面上进行构造。

      1 #include<bits/stdc++.h>
      2 using namespace std;
      3 
      4 typedef long long ll;
      5 const int mod=1e9+7;
      6 const int maxn=1e5+10;
      7 const int inf=0x3f3f3f3f;
      8 const double eps=1e-14;
      9 const double pi=acos(-1.0);
     10 #define mem(s,v) memset(s,v,sizeof(s))
     11 #define pdd pair<double,double>
     12 #define pii pair<int,int>
     13 
     14 struct node{
     15     int num,id;
     16 };
     17 node a[3];
     18 
     19 int cmp(node x,node y){
     20     return x.num<y.num;
     21 }
     22 
     23 int mp[111][111];
     24 
     25 int main(){
     26     while(~scanf("%d%d%d",&a[0].num,&a[1].num,&a[2].num)){
     27         memset(mp,0,sizeof(mp));
     28         for(int i=0;i<3;++i) a[i].id=i+1;
     29         sort(a,a+3,cmp);
     30         if(a[2].num>a[0].num*a[1].num){
     31             puts("-1");
     32             continue;
     33         }
     34         int j=0;
     35         for(int i=0;i<a[1].num;++i){
     36             if(j<a[0].num){
     37                 mp[i][j]=1;
     38                 j++;
     39             }
     40             else{
     41                 mp[i][j-1]=1;
     42             }
     43         }
     44         int t=a[2].num-a[1].num;
     45         for(int i=0;i<t;++i){
     46             int flag=1;
     47             for(int k=0;k<a[1].num;++k){
     48                 for(int j=0;j<a[0].num;++j){
     49                     if(!mp[k][j]){
     50                         mp[k][j]=1;
     51                         flag=0;
     52                         break;
     53                     }
     54                 }
     55                 if(!flag) break;
     56             }
     57         }
     58         printf("%d
    ",a[2].num);
     59         int x,y,z;
     60         if(a[2].id==1){
     61             z=0;
     62             if(a[1].id==2){
     63                 for(int i=0;i<a[1].num;++i){
     64                     for(int j=0;j<a[0].num;++j){
     65                         if(mp[i][j]) printf("%d %d %d
    ",i,j,z);
     66                     }
     67                 }
     68             }
     69             else if(a[1].id==3){
     70                 for(int i=0;i<a[1].num;++i){
     71                     for(int j=0;j<a[0].num;++j){
     72                         if(mp[i][j]) printf("%d %d %d
    ",j,i,z);
     73                     }
     74                 }
     75             }
     76         }
     77         else if(a[2].id==2){
     78             y=0;
     79             if(a[1].id==1){
     80                 for(int i=0;i<a[1].num;++i){
     81                     for(int j=0;j<a[0].num;++j){
     82                         if(mp[i][j]) printf("%d %d %d
    ",i,y,j);
     83                     }
     84                 }
     85             }
     86             else if(a[1].id==3){
     87                 for(int i=0;i<a[1].num;++i){
     88                     for(int j=0;j<a[0].num;++j){
     89                         if(mp[i][j]) printf("%d %d %d
    ",j,y,i);
     90                     }
     91                 }
     92             }
     93         }
     94         else if(a[2].id==3){
     95             x=0;
     96             if(a[1].id==2){
     97                 for(int i=0;i<a[1].num;++i){
     98                     for(int j=0;j<a[0].num;++j){
     99                         if(mp[i][j]) printf("%d %d %d
    ",x,j,i);
    100                     }
    101                 }
    102             }
    103             else if(a[1].id==1){
    104                 for(int i=0;i<a[1].num;++i){
    105                     for(int j=0;j<a[0].num;++j){
    106                         if(mp[i][j]) printf("%d %d %d
    ",x,i,j);
    107                     }
    108                 }
    109             }
    110         }
    111     }
    112     return 0;
    113 }
  • 相关阅读:
    springboot项目打war包流程
    ant配置文件详解(转)
    如何提升java服务器并发性能
    find用法
    基姆拉尔森计算公式 推导计算星期几
    递归第二弹:分类强化
    拨钟问题
    POJ1222熄灯问题【位运算+枚举】
    POJ1013称硬币【枚举】
    4148生理周期
  • 原文地址:https://www.cnblogs.com/wangcwcgnaw/p/9930172.html
Copyright © 2011-2022 走看看