北京师范大学第十五届ACM决赛-重现赛

Another Server
时间限制:1秒 空间限制:262144K

题目描述

何老师某天在机房里搞事情的时候,发现机房里有n台服务器,从1到n标号,同时有2n-2条网线,从1到2n-2标号,其中第i条网线双向连接着  服务器和 号服务器,在一个单位时间内最多能够承受x_i个单位流量。 显然这些服务器之间要进行信息交换,为了测试服务器的抗压能力,你需要帮何老师计算出1号服务器在一个单位时间内最多能向n号服务器发送多少个单位流量的数据,这里认为数据的传输是瞬间完成的。
(该图引用自百度百科)

输入描述:

第一行是一个正整数T(≤ 1000),表示测试数据的组数, 对于每组测试数据, 第一行是一个整数n(2 ≤ n ≤ 100),表示服务器的数量, 第二行包含2n-2个以空格分隔的正整数x_1,x_2,...,x_{2n-2},表示网线单位时间内能承受的流量,保证不超过100。

输出描述:

对于每组测试数据,输出一个整数,表示1号服务器在一个单位时间内最多能向n号服务器发送的数据量。
示例1

输入

2
2
1 1
3
1 3 2 4

输出

2
4

备注:

⌊x⌋表示不大于x的最大整数,例如⌊1.5⌋=1,⌊2⌋=2。

就是一个服务的接受量和吞吐量的最小值就好,这个贪心比较巧妙

#include <cstdio>
#include <algorithm>
using namespace std;
int main()
{int t;
scanf("%d",&t);
while(t--){
    int n,ma=1<<30;
    scanf("%d",&n);
    for(int i=0;i<n-1;i++){
        int p,q,s;
        scanf("%d%d",&p,&q);
        s=p+q;
        ma=min(ma,s);
    }
    printf("%d\n",ma);
}
    return 0;
}
Captcha Cracker
时间限制:1秒 空间限制:262144K

题目描述

www.02469.com(本网页纯属虚构,如有雷同,纯属巧合),是一个资源丰富的教学资源网站,好学的SK同学经常访问这个网站。通常来说,网站为了安全考虑,登录的时候都需要用户输入验证码,这就让SK同学非常不爽了。
 
SK同学希望你能帮他写一个程序来自动识别验证码的内容,验证码由小写字母和阿拉伯数字组成,你需要识别出其中所有的0,2,4,6,9以及这5个数字对应的英文单词,并按照它们在验证码中出现的顺序以数字形式输出。
 
为了表示感谢,SK同学愿意跟你分享他私藏的教学资源。

输入描述:

第一行是一个正整数T(≤ 10),表示测试数据的组数, 每组测试数据只有一行,包含一个长度不超过100000的只由小写字母和阿拉伯数字组成的非空字符串。

输出描述:

对于每组测试数据,输出一行字符串,表示识别出的验证码。
示例1

输入

2
onetwothreefourfiveseven
0two4six6siiiiix

输出

24
02466

说明

0 - zero
2 - two
4 - four
6 - six
9 - nine

很简单的映射

#include <iostream>
#include <string>
using namespace std;
int main()
{int t;
scanf("%d",&t);
while(t--){
    string s;
    cin>>s;
    for(int i=0;s[i];i++){
    if(s[i]=='0'||s[i]=='2'||s[i]=='4'||s[i]=='6'||s[i]=='9')
    cout<<s[i];
    else if(s.substr(i,4)=="zero")
    cout<<"0",i+=3;
    else if(s.substr(i,4)=="four")
    cout<<"4",i+=3;
    else if(s.substr(i,4)=="nine")
    cout<<"9",i+=3;
    else if(s.substr(i,3)=="two")
    cout<<"2",i+=2;
    else if(s.substr(i,3)=="six")
    cout<<"6",i+=2;
    }
    cout<<endl;
}
     
    return 0;
}

 

Disdain Chain
时间限制:1秒 空间限制:262144K 热度指数:198
 算法知识视频讲解

题目描述

BNU ACM校队现在有n名队员,对于任意两名队员i和j,要么i鄙视j,要么j鄙视i,需要注意的是鄙视关系并不满足传递性,即使i鄙视j、j鄙视k,也并不意味着一定有i鄙视k。小Q同学认为,如果有t名不同的队员满足a_1鄙视a_2、a_2鄙视a_3、……、a_{t-1}鄙视a_t,那么这就是一条长度为t的鄙视链。显然鄙视链越长越不利于团队建设,小Q同学希望你帮他分别算一算有多少种n个人之间的鄙视关系满足最长的鄙视链的长度是1,2,3,...,n。

输入描述:

第一行是一个正整数T(≤ 6),表示测试数据的组数, 每组测试数据包含一行,只有一个整数n(2 ≤ n ≤ 7),表示校队的人数。

输出描述:

对于每组测试数据,输出n行,第i行表示最长鄙视链是i的鄙视关系的个数。
示例1

输入

1
2

输出

0
2

说明

在队伍只有2名队员的情况下,无论谁鄙视谁,最长鄙视链的长度都是2。

#include <bits/stdc++.h>
using namespace std;
int main()
{
    int t;
    cin>>t;
    while(t--)
    {
        long long n;
        cin>>n;
        for(int i=1;i<n;i++)
        cout<<"0\n";
        cout<<(1LL<<(n*(n-1)/2))<<endl;
    }
    return 0;
}
在某节无聊的课上,SK同学随意画了一个三角形然后用尺子量了一下,发现三边长分别为a,b,c,然后SK同学拿起圆规分别以三个顶点为圆心画了三个圆,为了使图形看上去更美观,这三个圆两两不相交也互不包含,这里认为圆的半径可以是0(称之为“点圆”),现在SK同学想知道怎么画圆才能使三个圆的面积之和最大。

#include <stdio.h>
#include <math.h>
#include <algorithm>
using namespace std;
double PI=acos(-1.0);
int main()
{int t;
scanf("%d",&t);
while(t--){
    int a[3];
    scanf("%d%d%d",&a[0],&a[1],&a[2]);
    sort(a,a+3);
    printf("%.12f\n",PI*(a[1]*a[1]+(a[2]-a[1])*(a[2]-a[1])));
}
     
    return 0;
}
又到饭点了,SK同学靠着惯性走到了食堂,但长长的队伍顿时让他失去了食欲。突然,他注意到某个窗口前的队伍里明显存在插队的现象,于是他默默记录下了同学们进队和出队的变化。    
对于进队,SK同学只知道队伍里多了一个人,并不知道新来的人是老老实实站到了队尾还是插到了队伍里的某个位置;对于出队,SK同学能确定是队伍里站在最前面的人出队了。
初始时队伍为空,给出n条队伍进出的信息,保证已经出队的同学不会再入队,并且最终队伍也为空,现在SK同学想知道有多少不插队的好同学。

#include <bits/stdc++.h>
using namespace std;
int main()
{
    ios::sync_with_stdio(false);
    int t,n;
    cin>>t;
    while(t--)
    {
        cin>>n;
        queue<string>q;
        map<string,int>p;
        int ans=0;
        for(int i=1; i<=n; i++)
        {   string a,b;
            cin>>a>>b;
            if(a[0]=='i')
            {
                q.push(b);
            }
            if(a[0]=='o')
            {
                if(b==q.front())
                {
                    ans++;
                    q.pop();
                }
                else
                    p[b]=1;
            }
          while(!q.empty())
          {
              if(p[q.front()]==1)
                q.pop();
              else
                break;
          }
        }
        cout<<ans<<endl;
    }
}

 

转载于:https://www.cnblogs.com/BobHuang/p/7492952.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值