zoukankan      html  css  js  c++  java
  • 2012 金华 现场赛

    A 水题

    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    #define mod 31536000
    #define eps 1e-10
    typedef __int64 ll;
    struct node
    {
        int a,b;
        double id;
    }M[500010];
    int cmp(node a,node b)
    {
    
        return (long long)a.a*b.b<(long long)b.a*a.b;
    }
    long long sum,time;
    int main()
    {
        int i,j,k,n;
        while(scanf("%d",&n)!=EOF)
        {
            if(n==0) break;
            for(i=0;i<n;i++)
            {
                scanf("%d%d",&M[i].a,&M[i].b);
            }
            sort(M,M+n,cmp);
            sum=0;time=0;
            for(i=0;i<n;i++)
            {
                if(M[i].a==0) continue;
                sum+=(long long)(M[i].a+(long long)time*M[i].b);
                sum%=mod;
                time+=(long long)(M[i].a+(long long)time*M[i].b);
                time%=mod;
            }
           //rintf("%lld %lld",time,sum);
            printf("%lld
    ",sum%mod);
    
        }
        return 0;
    }


    D 枚举每个角度,不知道是不是数据水,枚举1000次就能够了

    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    #include <cmath>
    using namespace std;
    
    const double PI=acos(-1.0);
    const double g = 9.8;
    double H,l1,l2,r1,r2;
    int n;
    double a[300];
    
    int cal(double x){
        int ret = 0;
        for(int i = 0;i<n;i++){
            double vx = a[i]*cos(x);
            double vy = a[i]*sin(x);
            double V = sqrt(2.0*g*H+vy*vy);
            double t = (V-vy)/g;
            double d = 1.0*t*vx;
            if(d<=r2&&d>=l2) return 0;
            if(d<=r1&&d>=l1) ret++;
        }
        return ret;
    }
    
    int main(){
            while(scanf("%d",&n)&&n!=0){
                scanf("%lf%lf%lf%lf%lf",&H,&l1,&r1,&l2,&r2);
                for(int i=0;i<n;i++){
                    scanf("%lf",&a[i]);
                }
    
                double add = PI/1000;
                int ans = 0;
                for(double i=-PI/2;i<=PI/2;i+=add){
                    ans = max(ans,cal(i));
                }
                printf("%d
    ",ans);
            }
    }


    I 签到题 全部的平方之和

    #include <cstdio>
    int a[1000];
    int main(){
       int n;
       while(scanf("%d",&n)&&n!=0){
         int ans = 0;
        for(int  i = 0;i<n;i++){
            scanf("%d",&a[i]);
            ans += a[i]*a[i];
        }
        printf("%d
    ",ans);
       }
    }


    J 题意没有看 直接例子脑补了一下

    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    using namespace std;
    
    int n,m,k;
    int p;
    int vis1[2222];
    int vis2[2222];
    char str1[20];
    char str2[20];
    
    int main(){
       while(scanf("%d%d%d",&n,&m,&k)&&n+m+k!=0){
          scanf("%d",&p);
          int ans = 0;
          memset(vis1,0,sizeof(vis1));
          memset(vis2,0,sizeof(vis2));
          int a,b;
        while(p--){
            scanf("%s%d%s%d",str1,&a,str2,&b);
            if(str1[0]=='c') {vis1[b]++;ans+=k;}
            else {vis2[a]++,ans+=n;}
        }
        for(int i=1;i<=m;i++){
            ans-=vis1[i]*vis2[i];
        }
        printf("%d
    ",n*m*k-ans);
       }
    }


    K 题意開始看错了 ,应该是在每一次时间结束才转弯,中间过程碰到是不转弯的

    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    
    int n;
    int time;
    
    struct Point
    {
    	int dir;
    	int x,y;
    	int s,t;
    	void go_next()
        {
    	if(dir==0)
    	{
    		x-=s;
    		if(x<1) {x=2-x;dir=2;}
    	}
    	else if(dir==1)
    	{
    		y-=s;
    		if(y<1) {y=2-y;dir=3;}
    	}
    	else if(dir==2)
    	{
    		x+=s;
    		if(x>n) {x=2*n-x;dir=0;}
    	}
    	else
    	{
    		y+=s;
    		if(y>n) {y=n*2-y;dir=1;}
    	}
    }
    }T,J;
    
    int get_dir(char c)
    {
    	if(c=='N') return 0;
    	else if(c=='W') return 1;
    	else if(c=='S') return 2;
    	else return 3;
    }
    
    
    int main()
    {
    	while(scanf("%d",&n)&&n!=0)
    	{
    		T.x=T.y=1;
    		J.x=J.y=n;
    		char op[10];
    		scanf("%s%d%d",op,&T.s,&T.t);
    		T.dir=get_dir(op[0]);
    		scanf("%s%d%d",op,&J.s,&J.t);
    		J.dir=get_dir(op[0]);
    		scanf("%d",&time);
    		for(int i=1;i<=time;i++)
    		{
    			T.go_next();
    			J.go_next();
    			if(T.x==J.x&&T.y==J.y)
    			{
    				swap(T.dir,J.dir);
    				continue;
    			}
    			if(i%T.t==0) T.dir=(T.dir+1)%4;
    			if(i%J.t==0) J.dir=(J.dir+1)%4;
    		}
    		printf("%d %d
    ",T.x,T.y);
            printf("%d %d
    ",J.x,J.y);
    	}
    	return 0;
    }


  • 相关阅读:
    PHP header的几种用法
    Elasticsearch 学习笔记
    elsearch 安装过程中遇到的错误解决方式
    python常用模块
    python 列表和字段的相关函数
    Nginx+Redis+Ehcache大型高并发高可用三层架构总结
    Docker技术底层架构剖析
    ELK日志分析平台环境部署 (yum安装)
    禁止root直接登陆linux系统
    浅谈Rsync+Inotify实时同步
  • 原文地址:https://www.cnblogs.com/yfceshi/p/7260178.html
Copyright © 2011-2022 走看看