牛客多校第三场

A

有鱼则抓鱼,没有鱼也没有鱼饵就尝试用已有的鱼抓鱼。
在没有鱼有鱼饵的时候,有两种选择:
1.用已有鱼饵抓鱼,放弃当前阶段的鱼饵
2.不抓鱼,而去抓鱼饵。
使用第2种,如果游戏结束后,发现还有剩余的鱼饵a个,而这些鱼饵都是来自于(没有鱼,有鱼饵)a个阶段,所以可以安排这a个阶段重复进行这一阶段抓鱼饵,下一阶段抓鱼,于是就可再得到a/2鱼

#include <bits/stdc++.h>
#define ios ios_base::sync_with_stdio(0),cin.tie(0),cout.tie(0)
#define debug  freopen("in.txt","r",stdin),freopen("out.txt","w",stdout);
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
const int maxn = 2e6+10;
const int maxM = 1e6+10;
const int inf = 0x3f3f3f3f;

int T,N;
char s[maxn];

void solve(){
    int fish = 0,er = 0;
    for(int i = 1;i<=N;i++){
        if(s[i] == '0' && er){
            er -= 1;
            fish += 1;
        }
        if(s[i] == '1') er+=1;
        if(s[i] == '2') fish += 1;
        if(s[i] == '3') fish += 1;
    }
    cout<<fish + er/2<<'\n';
}
int main(){
    // debug;
    ios;

    cin>>T;
    while(T--){
        cin>>N;
        cin>>(s+1);
        solve();
    }
    return 0;
}

B

把这个字符串想像成一个首尾相连的字符串,用一个指向当前字符串头部的指针,先指向0号位置,如果M 4,就头指针往右移动4次,如果M -4就往左移动4次。在查询的时候,就是头指针+查询位置

#include <bits/stdc++.h>
#define ios ios_base::sync_with_stdio(0),cin.tie(0),cout.tie(0)
#define debug  freopen("in.txt","r",stdin),freopen("out.txt","w",stdout);
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
const int maxn = 2e6+10;
const int maxM = 1e6+10;
const int inf = 0x3f3f3f3f;

char s[maxn]; int p = 0;
int T;
int main(){
    // debug;
    ios;

    cin>>s;
    cin>>T;
    int len = strlen(s);
    while(T--){
        char op;int v;
        cin>>op>>v;
        if(op == 'M'){
            if(v>=0) p = (p + v)%len;
            else p = (p + v + len)%len;
        }else{
            v = (p+v-1)%len;
            cout<<s[v]<<'\n';
        }
    }
    return 0;
}

C

先找到长度最长的那一条边,为手掌最下面的那条边。然后确定好这条边从大拇指到小指的方向,在计算这条边的两个端点与小手指形成的三角形面积。用叉乘根据这个方向算三角形面积,如果为正代表逆时针,则是右手,否则就是左手。

#include <bits/stdc++.h>
#define ios ios_base::sync_with_stdio(0),cin.tie(0),cout.tie(0)
#define debug  freopen("in.txt","r",stdin),freopen("out.txt","w",stdout);
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
const int maxn = 1e6+10;
const int maxM = 1e6+10;
const int inf = 0x3f3f3f3f;

int T;
double x[maxn],y[maxn];
double len(int id1,int id2){
    return (x[id2] - x[id1]) * (x[id2] - x[id1]) + (y[id2]-y[id1])*(y[id2]-y[id1]);
}
void solve(){
    int L,id1,id2,R;
    double mxlen = -1;
    for(int i = 2;i<=20;i++){
        if(len(i-1,i) > mxlen){
            id1 = i-1,id2 = i;
            mxlen = len(i-1,i);
        }
    }
    if(len(1,20) > mxlen){
        id1 = 1,id2 =20;
        mxlen = len(1,20);
    }
    if(id1 == 1 && id2 == 20){
        L = 2,R = 19;
    }else{
        if(id1 == 1) L = 20;
        else L = id1-1;
        if(id2 == 20) R = 1;
        else R = id2+1;
    }
    int a,b,c;
    if(len(L,id1) < len(id2,R)) a = id1,b = id2,c = R;
    else a = id2,b = id1,c = L;
    double s = 0;
    vector<int> dat = {0,a,b,c};
    for(int i = 1;i<=3;i++){
        int l = dat[i],r = i<3? dat[i+1]:dat[1];
        s += x[l] * y[r] - x[r]*y[l];
    }
    if(s > 0) cout<<"right\n";
    else cout<<"left\n";
}
int main(){
    ios;

    cin>>T;
    while(T--){
        for(int i = 1;i<=20;i++){
            cin>>x[i]>>y[i];
        }
        solve();
    }
    return 0;
}

L

#include <bits/stdc++.h>
#define ios ios_base::sync_with_stdio(0),cin.tie(0),cout.tie(0)
#define debug  freopen("in.txt","r",stdin),freopen("out.txt","w",stdout);
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
const int maxn = 1e6+10;
const int maxM = 1e6+10;
const int inf = 0x3f3f3f3f;

string s;
int main(){
    // debug;
    ios;

    cin>>s;
    transform(s.begin(),s.end(),s.begin(),::tolower);
    if(s.size()<6 || s.substr(0,6) != "lovely"){
        cout<<"ugly\n";
    }else{
        cout<<"lovely\n";
    }
    return 0;
}
全部评论

相关推荐

不愿透露姓名的神秘牛友
今天 13:05
点赞 评论 收藏
分享
每晚夜里独自颤抖:要求太多的没必要理
点赞 评论 收藏
分享
05-11 11:48
河南大学 Java
程序员牛肉:我是26届的双非。目前有两段实习经历,大三上去的美团,现在来字节了,做的是国际电商的营销业务。希望我的经历对你有用。 1.好好做你的CSDN,最好是直接转微信公众号。因为这本质上是一个很好的展示自己技术热情的证据。我当时也是烂大街项目(网盘+鱼皮的一个项目)+零实习去面试美团,但是当时我的CSDN阅读量超百万,微信公众号阅读量40万。面试的时候面试官就告诉我说觉得我对技术挺有激情的。可以看看我主页的美团面试面经。 因此花点时间好好做这个知识分享,最好是单拉出来搞一个板块。各大公司都极其看中知识落地的能力。 可以看看我的简历对于博客的描述。这个帖子里面有:https://www.nowcoder.com/discuss/745348200596324352?sourceSSR=users 2.实习经历有一些东西删除了,目前看来你的产出其实很少。有些内容其实很扯淡,最好不要保留。有一些点你可能觉得很牛逼,但是面试官眼里是减分的。 你还能负责数据库表的设计?这个公司得垃圾成啥样子,才能让一个实习生介入数据库表的设计,不要写这种东西。 一个公司的财务审批系统应该是很稳定的吧?为什么你去了才有RBAC权限设计?那这个公司之前是怎么处理权限分离的?这些东西看着都有点扯淡了。 还有就是使用Redis实现轻量级的消息队列?那为什么这一块不使用专业的MQ呢?为什么要使用redis,这些一定要清楚, 就目前看来,其实你的这个实习技术还不错。不要太焦虑。就是有一些内容有点虚了。可以考虑从PR中再投一点产出
投递美团等公司8个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务