Divide by Zero 2017 and Codeforces Round #399 (Div. 1 + Div. 2, combined)

双重机器学习 stata教程 手把手教学 双重机器学习(DDML)的stata教程 阅读详情

这把比赛题目不错,然而打得太挫了。。来写一发题解

C. Jon Snow and his Favourite Number

基本上是暴力模拟,不过排序和异或要写 O(1000) 的。

#include <bits/stdc++.h>


using namespace std;

const int maxn = 100010;
int n,k,x;

int cnt[1024][2];

int main(){

    cin>>n>>k>>x;

    for(int i=0;i<n;i++){
        int num;
        scanf("%d",&num);
        cnt[num][0]++;
    }

    int cur = 0;
    int pre = 1;
    while(k--){
        swap(cur,pre);
        //sort

        for(int i=0;i<1024;i++){
            cnt[i][cur] = 0;
        }

        int p = 0;
        for(int i=0;i<1024;i++){
            cnt[i][cur] += cnt[i][pre]>>1;
            cnt[i^x][cur] += cnt[i][pre]>>1;

            if((cnt[i][pre])&1){
                if(p&1){
                    cnt[i][cur]++;
                }else{
                    cnt[i^x][cur]++;
                }
            }
            p+=cnt[i][pre];
        }


    }
    for(int i=1023;;i--){
        if(cnt[i][cur]){
            cout<<i<<" ";
            break;
        }
    }

    for(int i=0;;i++){
        if(cnt[i][cur]){
            cout<<i<<endl;
            break;
        }
    }
    return 0;
}

D. Jon and Orbs

考虑到每个orb是等价的,状态用当前已有多少个orb来表示。递推计算出来每天有1~ k 个orb的概率(题目要求的最大概率是1/2,递推到第100000天绝对够了),处理好p取1~1000的答案,再回答。

#include <bits/stdc++.h>


using namespace std;

double p_count[1010];

int ans[1010];

int main(){
    int k,q;
    cin>>k>>q;
    int p = 1;
    double target;
    for(int i=0;i<=k;i++){
        p_count[i] = 0;
    }

    p_count[0] = 1.0;
    for(int day = 1;p<=1000;day++){
        target = (p+0.0)/2000;
        for(int i=k;i>0;i--){
            double tmp = p_count[i-1] * ((k-i+1.0)/k);
            p_count[i] += tmp;
            p_count[i-1] -= tmp;
        }

        while(p_count[k] >= target){
            ans[p] = day;
            p++;
            target = (p+0.0)/2000;
            if(p>1000)break;
        }
    }


    while(q--){
        cin>>p;
        cout<<ans[p]<<endl;
    }
    return 0;
}

E. Game of Stones

很有意思的一个题。解题的关键是注意到一堆数量为1的石子和一堆数量为2的石子是等效的。因为这两种堆都只能够被拿一次。仔细分析我们会发现,石子的数量在1以上,相当于传统nim的1,石子的数量在1+2=3以上,相当于传统nim的2,石子的数量在1+2+3=6以上,相当于传统nim的3…把每堆数量转化一下,就是变成一个传统的nim博弈问题了。另外每堆上限仅60,据说可以搜索。

#include <bits/stdc++.h>

using namespace std;

#define ll long long

int cnt[66];

int a[66];

int main(){
    int n; 
    cin>>n;

    for(int i=0;i<n;i++){
        int num;
        scanf("%d",&num);
        cnt[num]++;
    }

    for(int i=1;i<=60;i++){
        a[i] = a[i-1] + i;
    }

    vector<int> p;
    for(int i=1;i<=60;i++){
        cnt[i] %= 2;
    }

    for(int i=1;i<=60;i++){
        if(cnt[i]){
            for(int j=1;j<=60;j++){
                if(a[j]>i){
                    cnt[j-1]++;
                    cnt[i]--;
                    break;
                }
            }
        }
    }

    int sum = 0;
    for(int i=1;i<=60;i++){
        while(cnt[i]--){
            sum ^= i;
        }
    }

    if(sum){
        puts("NO");
    }else{
        puts("YES");
    }

    return 0;
}

F. Barrels and boxes

组合数学问题。先说分母(总数),枚举酒的堆数 i ,由组合数学知识,相当于w个小球中间的 w−1 个位置放 i−1 个隔板,也就是求一个组合数,此时食物的堆数只能是 i−1 ~ i+1 ,计算方法同酒,然后把它们乘起来。
分子(符合条件的情形数),也是枚举酒的堆数 i ,因为有高度要求,把酒的数量减去i∗h,再进行与分母一样的运算即可。

#include <bits/stdc++.h>

using namespace std;

#define ll long long

const ll mod = 1e9 + 7;

ll fac[100010];

//扩展欧几里德   
void ExEuclid(ll a,ll b,ll &x,ll &y,ll &q){  
    if(b==0){  
        x=1;y=0;q=a;  
        return;  
    }  
    ExEuclid(b,a%b,y,x,q);  
    y-=x*(a/b);  
}  

//逆元   
ll inv(ll num){  
    ll x,y,q;  
    ExEuclid(num,mod,x,y,q);  
    if(q==1)return (x+mod)%mod;  
}  

ll C(int n,int k){
    if(n<0 || k<0)return 0;
    if(n<k)return 0;
    ll res = fac[n];
    res *= inv(fac[k]);
    res %= mod;
    res *= inv(fac[n-k]);
    res %= mod;
    return res;
}

ll solve(int f,int w,int mn,int mx){
    if(w == 0 || f == 0)return 1;

    ll res = 0;
    // w -> i
    for(int i=mn;i<=mx;i++){
        ll t = C(w-1,i-1);
        if(i>1){
            res += t * C(f-1,i-2);
        }
        res += t * C(f-1,i-1) * 2;
        res += t * C(f-1,i);
        res %= mod;
    }
    res %= mod;
    return res;
}

int main(){
    fac[0] = 1;
    for(int i=1;i<=100000;i++){
        fac[i] = fac[i-1] * i;
        fac[i] %= mod;
    }

    int f,w,h;
    cin>>f>>w>>h;

    //p/q
    ll p = 0;
    ll q = 0;
    if( h == 0){
        p = solve(f,w,1,w);
        q = solve(f,w,1,w);
    }else{
        q = solve(f,w,1,w);

        for(int i=1;;i++){
            int ww = w - i*h;
            if(ww<i)break;
            p += solve(f,ww,i,i);
        }
        p %= mod;
        if(w == 0){
            p = 1;
            q = 1;
        }
    }

    ll ans = p * inv(q);
    ans %= mod;
    cout<<ans<<endl;
    return 0;
}
virtualbox虚拟机里面最顶部没有控制、设置和帮助等选项 无意中操作,导致virtualbox虚拟机里面最顶部没有控制,设置和帮助选项  virtualbox虚拟机窗口显示如下如: 如何设置,窗口显示如下图所示呢: virtualbox虚拟机窗口模式显示设置,切换可以通过如下图所示操作进行切换: PS:一定要是右边的Ctrl+C 阅读详情

相关推荐

形位公差标注的常见误区与优化策略

本文深入解析机械设计中形位公差标注的常见误区与优化策略,特别针对NX2406用户提供实用技巧。从标注冗余、基准选择到公差值设定等五大误区入手,结合工程图实例展示如何提升标注精度与效率,帮助工程师避免常见错误,优化设计流程,确保零件功能实现与制造可行性。

info6的博客 245

Divide by Zero 2017 and Codeforces Round #399 (Div. 1 + Div. 2, combined) A(贪心)

A. Oath of the Night’s Watch time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandard output “Night gathers, and now my watch begins. It shall not end unt

Prim 645

ARM的CI-700和Arteris的NoC对比

设计理念:CI-700注重于为移动和客户端SoC提供定制化的互连解决方案,而Arteris的NoC更侧重于提供灵活、可配置的网络互连技术,适用于多种应用场景。性能与功耗:CI-700通过系统级缓存和网状拓扑结构优化性能和功耗,而Arteris的NoC通过物理感知和多协议支持来提升性能和降低功耗。功能安全:Arteris的NoC提供了功能安全支持,这对于汽车和工业应用尤为重要,而CI-700虽然也关注安全性,但未明确提及功能安全支持。互操作性。

ygyglg的专栏 2622

Divide by Zero 2021 and Codeforces Round #714 (Div. 2)A-E题解

Divide by Zero 2021 and Codeforces Round #714 (Div. 2)A-E题解 比赛链接:https://codeforces.com/contest/1513 A题 相关tag:构造 题意: 给定1-n(n<100)共n个整数,让你构造出一个排列方式,使得恰好有k个位置满足其左侧和右侧最近的那个数都比它的值小。 思路: 方便说明起见,将题目所说的位置称作“峰顶” 首先如果有两个下标i和j满足题目的条件,即a[i]>a[i-1]且a[i]>a[i+1

StandNotAlone的博客 2124

Linux下用SquareLine Studio开发LVGL界面:从安装到实战的完整避坑指南

本文提供了一份在Linux系统下使用SquareLine Studio开发LVGL图形界面的完整实战指南。内容涵盖从SDL库安装、SquareLine Studio环境配置、界面可视化设计,到工程导出、源码编译及常见错误排查的全流程。重点解析了如何将设计界面无缝集成到Linux开发流程中,并针对嵌入式设备移植提供了关键步骤,旨在帮助开发者高效避坑,快速上手LVGL界面开发。

egg99的博客 905

【保研经验】北科自动化到北大工学院

作者:办公室某学长 谢邀。。。作为拖延症晚期患者,希望能在我科开学前写完。 先简单介绍一下我的保研过程,申请了清华叉院&amp;北大叉院大数据&amp;北大信科计算机夏令营,三者都没入营;申请了自所夏令营(自所来宣讲时未交简历,这是重大错误),给了第二批补录但没去;最终九推去了北大工学院。我的这次保研最终成功的经历可以说有一定运气成分,不具有普适性,但在前期准备过程中还是有经验可以分享的。 ...

ruanjianbu的博客 1796

Divide by Zero 2017 and Codeforces Round #399 (Div. 1 + Div. 2, combined) E

题意: Sam和Jon在玩取石子游戏,现在一共有n堆石子,第i堆石子初始时有si个石头。每次,轮到的那个玩家可以任选一堆石子并从中任意取走一定数量的石头,先不能取的人算输 当然,游戏有特殊的约束,对于第i堆石子,如果之前在这堆石子取走过k块石头,那么再也不能从这堆石子里一次性取走k块石头。通俗地说,假如某堆石子有16块,某次取走了8块,那么下一次如果要取这堆石子,可以从1~7任选一个数字但就是

CRZbulabula的博客 485

Vue3 - 完美解决高德地图定位失败 Get ipLocation failed.Geolocation permission denied.(获取ipLocation失败。地理定位权限被拒绝。)

Get ipLocation failed.Geolocation permission denied.,vue3引入高德地图当前定位失败 ,vue3中使用高德地图定位报错,高德地图API用户定位失败,高德地图H5 定位失败报错排查和解决方案,微信公众号H5网页高德地图定位报错,谷歌浏览器-高德地图定位失败geolocation,getCurrentPosition 返回的 message报错,如何解决此问题,uniapp h5高德地图,微信、QQ等内置浏览器定位失败,高德地图实现实时用户位置定位,引入高德

🏆 前端领域优质创作者 4169

Divide by Zero 2017 and Codeforces Round #399 (Div. 1 + Div. 2, combined) D. Jon and Orbs 概率DP

D. Jon and Orbs 链接: http://codeforces.com/contest/768/problem/D 题解: 设dp[i][j]为第i天时已经产生j种龙晶,转移方程为 dp[i][j] += dp[i - 1][j] * j / k; dp[i][j + 1] += dp[i - 1][j] * (k - j) / k; 代码: 1 #i...

花海 194

120、NPU的Mythic M1076:模拟存算一体NPU

这篇文章分享了作者调试Mythic M1076模拟存算一体NPU的实战经验,主要包含以下要点: 硬件设计陷阱:参考电压输入必须使用低ESR电容,普通贴片电容会导致模拟计算阵列工作异常。 核心技术原理: 采用真正的存算一体架构,将权重存储为模拟电压 使用浮栅晶体管存储权重,通过电流叠加实现乘法运算 包含108个计算单元阵列(Tile),每个256×256规模 使用注意事项: 编程模型特殊,需要依赖SDK自动映射网络层 存在6-8位有效精度限制,需用量化感知训练 功耗特性独特,静态偏置电流占主要功耗 调试手段有

m0_50546716的博客 122

C语言实现惯导更新算法(机械编排)

四元数可用于描述刚体转动或姿态变换,与方向余弦阵相比,表达简洁。四元数是一个包含四个元素的列向量,列向量的第一个元素表示刚体围绕旋转轴转过的角度大小,其余3个元素代表了旋转轴的方向。

十八与她的博客 1730

【Divide by Zero 2017 and Codeforces Round #399 (Div. 1 + Div. 2, combined) B】 Code For 1

【链接】 我是链接,点我呀:) 【题意】 在这里输入题意 【题解】 把序列生成的过程看成一颗树 会发现最后形成的是一颗二叉树。 每个二叉树上的节点就对应了序列中的一个数字。 如果我们把每个节点都往下投影的话。 (而且整棵树都是左右对称的。那么每个子树的根节点就是(l+r)/2了 就像是整个序列了。 (中序遍历 则我们可以用线段树求区间和的方法。 现在相当于告诉你1..n这...

AWCXV 103

基于BP神经网络PID控制的电机转速控制器设计复现

摘要:本文提出了一种基于BP神经网络PID控制的永磁同步电机转速控制方法,通过MATLAB/Simulink平台实现了算法复现。系统采用三层BP神经网络在线调整PID参数,包含输入层(误差、误差变化率、误差积分)、5节点隐含层和输出层(Kp、Ki、Kd)。仿真结果表明,相比传统PID控制,该方案具有更快的响应速度(上升时间减少约40%)、更小的超调量(降低约60%)和更强的抗干扰能力,在电动汽车电机驱动等复杂工况下表现优异。文中详细给出了PMSM数学模型建立、BP网络设计、权值更新算法及Simulink仿真

max500600的博客 306

Divide by Zero 2017 and Codeforces Round #399 (Div. 1 + Div. 2, combined) E. Game of Stones Nim游戏...

E. Game of Stones 链接: http://codeforces.com/contest/768/problem/E 题解: 状态数为 n(n+1)/2 &lt;=x 的最大x,之后就进行异或和即可。 代码 : 1 #include &lt;map&gt; 2 #include &lt;set&gt; 3 #include &lt;cmath&gt...

花海 176

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Divide by Zero 2017 and Codeforces Round #399 (Div. 1 + Div. 2, combined) D. Jon and Orbs

概率dp

我们仍未知道那天所看见的花的名字。 144

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Divide by Zero 2017 and Codeforces Round #399 (Div. 1 + Div. 2, combined) F

题意: Tarly有f个食物箱和w个酒桶,现在他想要将它们存在一些栈里,然后将这些栈排成一行,要求满足任意相邻的两个栈存放的物品不同 而Jon Snow不喜欢每个存酒的栈里酒的数量小于等于h,问在满足以上限制的前提下出现可行解的概率为多少?(假设每种满足Tarly要求的摆放方案出现的概率均等) 0 solution: #include #include #include using n

CRZbulabula的博客 483

Divide by Zero 2017 and Codeforces Round #399 (Div. 1 + Div. 2, combined) C. Jon Snow and his Favour...

C. Jon Snow and his Favourite Number 链接: http://codeforces.com/contest/768/problem/C 题解: 根据题意,其肯定会有循环节,先模拟,然后判断一下其是否到某一次时,其最大最小值达到稳定 代码: 1 #include &lt;map&gt; 2 #include &lt;set&gt; ...

花海 144

Divide by Zero 2017 and Codeforces Round #399 (Div. 1 + Div. 2, combined) B. Code For 1

地址:http://codeforces.com/contest/768/problem/B 题目: B. Code For 1 time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard ou...

weixin_30369087的博客 104

Divide by Zero 2017 and Codeforces Round #399 (Div. 1 + Div. 2, combined) E. Game of Stones

#include <iostream> #include <stdio.h> #include <string.h> #include <stack> #include <queue> #include <map> #include <set> #include <vector> #include <math.h> #include <bitset>

我们仍未知道那天所看见的花的名字。 112

Divide by Zero 2017 and Codeforces Round #399 (Div. 1 + Div. 2, combined) C. Jon Snow and his Favou

树形dp

我们仍未知道那天所看见的花的名字。 124

Divide by Zero 2017 and Codeforces Round #399 (Div. 1 + Div. 2, combined) G. The Winds of Winter

题意 链接 题解 我们考虑考虑一个一个点考虑 那么显然,肯定是把最大的联通块分一点到最小的联通块里面 扫一下就可以知道最大和最小了 当然,答案要和次大的子树取max 那么问题就是分多少,怎么分 显然地,如果两个相差是x 那么分的方式x/2显然是最优的 如果不存在的话那么就去最近的两个 那么我们就需要维护这个东西了 我们需要维护三个set 这个点重儿子里面的子树大小 这个...

OZY的博客 293

Divide by Zero 2017 and Codeforces Round #399 (Div. 1 + Div. 2, combined) B. Code For 1(DFS好题)

B. Code For 1 time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandard output Jon fought bravely to rescue the wildlings who were attacked by the white-wa

Prim 614

Divide by Zero 2017 and Codeforces Round #399 (Div. 1 + Div. 2, combined) A. Oath of the Night's Wat...

地址:http://codeforces.com/problemset/problem/768/A 题目: A. Oath of the Night's Watch time limit per test 2 seconds memory limit per test 256 megabytes input standard input o...

weixin_30832351的博客 99
上一篇: Codeforces 8VC Venture Cup 2017 - Elimination Round
下一篇: VK Cup 2017 - Round 1
squee_spoon
博客等级 码龄14年 61粉丝 455原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值