Namomo Summer Camp 23 Day 1

Namomo Summer Camp 23 Day 1 - Virtual Judge

B - Brexiting and Brentering

AC代码:

#include<bits/stdc++.h>
#define endl '\n'
//#define int long long
using namespace std;
string s;
void solve() {
    cin>>s;
    int x=-1;
    for(int i=s.size()-1;i>=0;i--){
        if(s[i]=='a'||s[i]=='e'||s[i]=='i'||s[i]=='o'||s[i]=='u'){
            x=i;
            break;
        }
    }
    for(int i=0;i<=x;i++) cout<<s[i];
    cout<<"ntry"<<endl;
}
int main() {
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    int t=1;
//    cin>>t;
    while(t--) {
        solve();
    }
    return 0;
}

A - Amusement Arcade

对于n个位置(n为奇数),(n+1)/2个人要坐满,而且是中间至少隔一个空位置,那么必然是从1开始隔一个坐一个,然后由于每一段区间我们都是尽量取中间位置,所以得保证我们选的那个位置左右两边区间长度均为2的次幂

AC代码:

#include<bits/stdc++.h>
#define endl '\n'
#define int long long
using namespace std;
bool check(int n){
    return (n>0)&&(n&(n-1))==0;
}
int n;
void solve() {
    cin>>n;
    if(n==1||n==3){
        cout<<1<<endl;
        return;
    }
    int x=1;
    for(int i=1;i<60;i++){
        x*=2;
        if(check(n-1-x)){
            cout<<x+1<<endl;
            return;
        }
    }
    cout<<"impossible"<<endl;
}
signed main() {
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    int t=1;
//    cin>>t;
    while(t--) {
        solve();
    }
    return 0;
}

I - Monty's Hall

概率

利用组合数

假设有3个门,选一个门的概率是1/3,然后被告知另外有一个门是空的,然后在已知另外有一个门是空的情况下,就会影响我们接下来的决策了,这样就是在两个门中二选一了,选另一个门成功的概率是1/2,而已经选的这个门是在概率为1/3的情况下选的,所以最优策略是选剩下的另一个门

设在第一次选完之后,换l个门,l=min(s,d-s-e)

第一次选中:C(s-1,d-1)/C(s,d)=s/d 换l个之后仍然选中:1-C(l-1.s-1)/C(s,l)=(s-l)/s

第一次没选中:(d-s)/s 换l个之后选中了:l/(d-s-e)

第一次选中的概率s/d也可以这么理解,就是选s个一个一个选,然后每次选中的概率为1/d,有s次机会,所有都加起来即为s/d

AC代码:

#include<bits/stdc++.h>
#include<cstdio>
#define endl '\n'
//#define int long long
using namespace std;
int d,s,e;
void solve() {
    cin>>d>>s>>e;
    int l=min(s,d-s-e);
    double ans=1.0*(d-s)/d*l/(d-s-e)+1.0*s/d*(s-l)/s;
    printf("%.8lf\n",ans);
}
int main() {
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    int t=1;
//    cin>>t;
    while(t--) {
        solve();
    }
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值