西电ACM2013年2月月赛--XDUOJ

来源:互联网 发布:泰拉瑞亚存档导入软件 编辑:程序博客网 时间:2024/05/16 18:46

A   练习printf语句。。。。

B   并查集应用(占坑)

C  优先队列(占坑)

D 最小生成树变形(占坑)

E  递推,求三角形的个数。

/*
 递推公式:a[n] = a[n-1] + n * (n + 1) / 2;*
 还有一种情况:最底下一行顶角朝下的三角形*
 观察规律得:temp = (n-1) + (n-1)-2 + (n-1)-4... + last
 (n为奇数, last为2, 反之为1)*
 所以a[n] = a[n] + temp

*/ 

 

#include<functional>
#include<algorithm>
#include<iostream>
#include<fstream>
#include<sstream>
#include<iomanip>
#include<numeric>
#include<cstring>
#include<cassert>
#include<cstdio>
#include<string>
#include<vector>
#include<bitset>
#include<queue>
#include<stack>
#include<cmath>
#include<ctime>
#include<list>
#include<set>
#include<map>

using namespace std;


int i,n,num[510];


int main()
{
    num[1]=1;
    for(i=2;i<510;i++){
      num[i]= num[i-1]+i*(i+1)/2; /* 第一种情况 */
      n=i-1;
      while(n>0){ /* 第二种情况 */
        num[i]+=n;
        n-=2;
      }
    }
    while(~scanf("%d",&n)){
      printf("%d\n",num[n]);
    }
    return 0;
}

 

 

F  三分法求解凸性函数。

 

#include<functional>
#include<algorithm>
#include<iostream>
#include<fstream>
#include<sstream>
#include<iomanip>
#include<numeric>
#include<cstring>
#include<cassert>
#include<cstdio>
#include<string>
#include<vector>
#include<bitset>
#include<queue>
#include<stack>
#include<cmath>
#include<ctime>
#include<list>
#include<set>
#include<map>


using namespace std;

const double PI=acos(-1.0);
const double eps=1e-6;

double cal(double x,double s)
{
       double R=(s-x*x*PI)/PI/x;
       double H=sqrt(R*R-x*x);
       return x*x*PI*H/3.0;
}

int main(){
    double S;
    while(~scanf("%lf",&S)){
      double lp=0.0,rp=sqrt(S/PI);
      double r=0.0;
      while(lp+eps<rp){
        double mid1=lp+(rp-lp)/3.0;
        double mid2=rp-(rp-lp)/3.0;
        double val1=cal(mid1,S);
        double val2=cal(mid2,S);
        if(val1>=val2){
          rp=mid2;
        }
        else{
          r=mid1;
          lp=mid1;
        }
      }
      double R=(S-PI*r*r)/(PI*r);
      double H=sqrt(R*R-r*r);
      double V=PI*r*r*H/3.0;
      printf("%.2lf\n",V);
    }
    return 0;
}

 

 

 

G  筛法求素数优化问题。

H  ANS=第K天分手K人。。。其余天为0。。。

 

#include<functional>
#include<algorithm>
#include<iostream>
#include<fstream>
#include<sstream>
#include<iomanip>
#include<numeric>
#include<cstring>
#include<cassert>
#include<cstdio>
#include<string>
#include<vector>
#include<bitset>
#include<queue>
#include<stack>
#include<cmath>
#include<ctime>
#include<list>
#include<set>
#include<map>


using namespace std;


int main()
{
    int T,n,k;
    scanf("%d",&T);
    while(T--){
      scanf("%d%d",&k,&n);
      for(int i=1;i<=n;++i)
        if(i==k) printf("DAY %d: %d\n",i,k);
        else printf("DAY %d: %d\n",i,0);
    }
    return 0;
}

 

 

总结:比赛难度中等跟省赛难度差不多,不过自己写题的手速依然很慢,还是得每天加强写代码。

原创粉丝点击