北邮新生排位赛1解题报告a-c

413. 学姐的桌面
时间限制 1000 ms 内存限制 65536 KB
题目描述
学姐在加入集训队之后,学习了使用ubuntu系统来做题,但是没有了360电脑管家,学姐再也没办法看到她的飞速电脑开机到底虐了全国多少人。作为一个电脑高手,学姐花了几分钟黑到了360的数据库拿到了全国360用户的开机时间,现在学姐想自己算算到底打败了百分之多少的人?


输入格式
输入有多组数据。首先给出数据组数T(T≤10),下面T组数据,每组开头为n(1≤n≤100000),360的用户数,和t,学姐的开机时间,接下来n个数字,ti代表第i个用户的开机时间。其中t,ti为非负整数且小于109。


输出格式
每组数据一行,输出学姐打败了全国百分之多少的用户,精确到小数点后两位。


输入样例
1
5 3
1 1 2 2 3
输出样例
80.00%
不吐槽学姐开机时间越长越虐人了,注意等号
#include <iostream>
#include <iomanip>
using namespace std;
 
int main()
{
    int t;
    cin>>t;
    while(t--){
        int n,m;
        cin>>n>>m;
        int temp;
        int ans=0;
        for(int i=0;i<n;i++){
            cin>>temp;
            if(temp<m){
                ans++;
            }
        }
        cout<<setiosflags(ios::fixed)<<setprecision(2)<<ans/(double)n*100<<"%\n";
    }
    return 0;
}

时间限制 1000 ms 内存限制 65536 KB

题目描述

趁着放假,学姐去学车好带学弟去兜风。但是学车真的很辛苦,每天五点半就要起床赶班车,但是学姐的教练更辛苦,他们要相同的时间到而且日日如此。于是温柔的学姐关切的问了他们的休息情况,教练告诉她,他们两个人倒班教学姐,每个教练每上n天班就会放一天假,如果一个教练放假,就由另一个教练来代课,一直代课到自己放假再换人。 现在学姐想知道,每一天是哪个教练给她上课。

输入格式

输入开始为数据组数T(T10),接下来T组输入,第一行为nm,我们假设第一天教学姐的是教练1,而且他教学姐的前一天刚刚放完假,教练2则会在学姐上课的第m天放假,1mn 以保证每天都有教练教学姐。接下一行为q(q103),即询问次数,接着q行,每行ti表示学姐想问哪天的教练是谁。因为教练们非常非常厉害,而且学姐不知道自己到底会花多久学完车,你的程序要处理的nmti上限为109

输出格式

对于每个询问ti,输出一行,1或2代表当天的教练。

输入样例

1
5 3
3
6
9
13

输出样例

2
1
2
错了两次 卡在周期其实是n+1上
int main()
{
    int t;
    cin>>t;
    while(t--){
        int n,m;
        cin>>n>>m;
        int q;
        cin>>q;
        int temp;
        while(q--){
            cin>>temp;
            temp--;
            if(temp<n){
                cout<<1<<endl;
            }
            else {
                temp-=n;
                temp%=(n+1);
                if(temp<m){
                    cout<<2<<endl;
                }
                else cout<<1<<endl;
            }
        }
    }
    return 0;
}
C:
时间限制 1000 ms 内存限制 65536 KB

题目描述

学姐正在写作业,但是她写着写着就开始想学弟,走神的她就开始在纸上画圈圈。这时学弟突然出现了,好奇的学弟问学姐在做什么,惊慌之下,学姐随口说想算一下这些圆覆盖的面积为多少。学弟顿时非常仰慕学姐,但是学姐突然意识到自己不会做,为了自己能给学弟留下好印象,她来求助你帮她算出来这些圆覆盖的面积。 为了简化问题,我们假设所有圆的半径都为1。

输入格式

输入有多组数据。开头为一个整数T(T10),表示数据组数,接下来T组输入,每组开头为一个整数n(1n100),表示学姐画的圆的个数,接下来n行,每行两个整数xi,yi,表示圆的圆心坐标,1xi,yi100

输出格式

输出一个数,表示面积并,精确到小数点后五位。

输入样例

1
2
1 1
2 1

输出样例

5.05482
这道题小学奥赛曾经写过类似的,当然不是程序.....但是排位赛的时候怎么想不到呢...
思路:因为都是整数,半径又是1,所以对任意一个坐标格,只有3种可能,恰有两个圆心在对角,完全覆盖,恰有两个圆心在同侧,卡高精度,恰有一个圆心,扇形,最后第四种 空的
#include <iostream>
#include <cmath>
#include <iomanip>
#include <cstring>
using namespace std;
#define pie (acos(-1))
bool circle[102][102];
int allfull;
int doublefull;
int halffull;
int main(){
    int t;
    cin>>t;
    while(t--){
        memset(circle,0,sizeof(circle));
        int n;
        cin>>n;
        while(n--){
            int x,y;
            cin>>x>>y;
            circle[x][y]=true;
        }
        allfull=0;
        doublefull=0;
        halffull=0;
        for(int i=0;i<102;i++){
            for(int j=0;j<102;j++){
                if(j-1>=0&&circle[i][j-1]&&i+1<102&&circle[i+1][j])allfull++;
                else if(i+1<102&&j-1>=0&&circle[i][j]&&circle[i+1][j-1]){
                    allfull++;
                }
                else if(i+1<101&&circle[i][j]&&circle[i+1][j]){
                    doublefull++;
                }
                else if(j-1>=0&&circle[i][j]&&circle[i][j-1]){
                    doublefull++;
                }
                else if(i+1<102&&j-1>=0&&circle[i+1][j]&&circle[i+1][j-1]){
                    doublefull++;
                }
                else if(i+1<102&&j-1>=0&&circle[i][j-1]&&circle[i+1][j-1]){
                    doublefull++;
                }
                else if(circle[i][j]){
                    halffull++;
                }
                else if(i+1<102&&j-1>=0&&circle[i+1][j-1]){
                    halffull++;
                }
                else if(i+1<102&&circle[i+1][j]){
                    halffull++;
                }
                else if(j-1>=0&&circle[i][j-1]){
                    halffull++;
                }
            }
        }
      //  cout<<"allfull: "<<allfull<<endl;
      //  cout<<"halffull: "<<halffull<<endl;
      //  cout<<"doublefull: "<<doublefull<<endl;
        //cout<<"pie: "<<pie<<endl;
        double ans=allfull*1.0+(halffull*3.0+doublefull*2.0)*pie/12.0+doublefull*sqrt(3)/4.0;
        cout<<setiosflags(ios::fixed)<<setprecision(5)<<ans<<endl;
    }
    return 0;
}

posted @ 2014-07-17 11:35  雪溯  阅读(222)  评论(0编辑  收藏  举报