北邮新生排位赛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;
}

你可能感兴趣的:(c)