注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Saffah's Blog

 
 
 

日志

 
 

BestCoder Round #12  

2014-10-06 08:53:53|  分类: BestCoder |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
撞cf真是不能多说……

1001 So Easy(HDU 5058)
给两个n个数的序列,问是否构成了同一个集合。
n≤100。
Solution
std::set自带了operator ==你造嘛?
int n;
std::set<int> A, B;
int main(){
    while(scanf("%d", &n) != EOF){
        A.clear(); B.clear();
        f(i, 1, n){
            int a; read(a); A.insert(a);
        }
        f(i, 1, n){
            int a; read(a); B.insert(a);
        }
        if(A == B) printf("YES\n"); else printf("NO\n");
    }
    return 0;
}

1002 Help Him(HDU 5059)
给a和b让你写spj,判断输出是否落在区间[a,b]之内。
Solution
大模拟……
char buf[256], b2[256];
int a, b, n;
int main(){
    while(std::cin.peek() != EOF){
        gets(buf); gets(b2); LL x = -1234567890;
        sscanf(b2, "%d%d", &a, &b);
        n = strlen(buf);
        g(i, 1, n) if(buf[i] < '0' || buf[i] > '9'){
            printf("NO\n"); goto xxx;
        }
        if((buf[0] < '0' || buf[0] > '9') && buf[0] != '-'){
            printf("NO\n"); goto xxx;
        }
        if(buf[0] == '-' && n == 1){
            printf("NO\n"); goto xxx;
        }
        if((buf[0] == '0' && n > 1) || (buf[0] == '-' && buf[1] == '0')){
            printf("NO\n"); goto xxx;
        }
        if(n > 12){
            printf("NO\n"); goto xxx;
        }
        sscanf(buf, "%I64d", &x);
        if(x < a || x > b){
            printf("NO\n"); goto xxx;
        }
        printf("YES\n");
        xxx:;
    }
    return 0;
}

1003 War(HDU 5060)
求一个球心在原点的球和一个中心在原点的圆柱的体积交与体积并之比。
Solution
核心问题是求体积交。
如果一个被另一个包含,那么很好判,很好算。
否则的话,交可能是一个球减去两个球缺,或者一个圆柱加上两个球缺,或者一个圆柱加上两个球缺减去两个球缺。分情况讨论一下就行了。
(妈蛋推了30分钟三重积分,暴算大师Mathematica都没跑出来,然后才发现这是球缺啊摔……)
const double pi = acos(-1.0);

double qiu(double r){
    return 4.0 / 3.0 * pi * r * r * r;
}
double zhu(double r, double h){
    return pi * r * r * h;
}
double que(double r, double h){
    return pi * h * h * (r - h / 3.0);
}

int main(){
    int ir, ih, iz;
    while(scanf("%d%d%d", &ir, &ih, &iz) != EOF){
        double r = ir, h = ih, z = iz;
        double QIU = qiu(r), ZHU = zhu(h, z * 2.0);
        double JIAO;
        if(h >= r){
            if(z >= r) JIAO = QIU;
            else JIAO = QIU - 2 * que(r, r - z);
        }else if(z * z <= r * r - h * h){
            JIAO = ZHU;
        }else if(z >= r){
            double tmp = sqrt(r * r - h * h);
            JIAO = zhu(h, 2 * tmp) + 2 * que(r, r - tmp);
        }else{
            double tmp = sqrt(r * r - h * h);
            JIAO = zhu(h, 2 * tmp) + 2 * que(r, r - tmp) - 2 * que(r, r - z);
        }
        double BING = QIU + ZHU - JIAO;
        printf("%.6lf\n", JIAO / BING);
    }
    return 0;
}

1004 Not Only STL(HDU 5061)
让你实现一个next_k_permutation()……
解法还是比较显然的,没时间写了……
  评论这张
 
阅读(170)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018