zoukankan      html  css  js  c++  java
  • CSU-ACM寒假集训选拔-入门题

    CSU-ACM寒假集训选拔-入门题

    仅选择部分有价值的题

    J(2165): 时间旅行

    Description

    假设 Bobo 位于时间轴(数轴)上 t0 点,他要使用时间机器回到区间 (0, h] 中。

    当 Bobo 位于时间轴上 t 点,同时时间机器有 c 单位燃料时,他可以选择一个满足 (lceilfrac{x}{h} ceilleq c) 的非负整数 x, 那么时间机器会在 [0, x]中随机整数 y,使 Bobo 回到 (t − y) 点,同时消耗 y 单位燃料。 (其中 ⌈ ⋅ ⌉ 表示上取整)

    因为时间机器的随机性,对于给出的参数 h 和时间机器剩余燃料 c,Bobo 想知道能够保证回到区间 (0, h] 中的 $ t_0 $ 的最大值。

    • 1 ≤ h ≤ (10^9)
    • 0 ≤ c ≤ (10^9)
    • 数据组数不超过 (10^5).

    Input

    输入文件包含多组数据,请处理到文件结束。

    每组数据包含 2 个整数 hc.

    Output

    对于每组数据输出 1 个整数表示 t0 的最大值。

    Sample Input

    100 99
    100 100
    100 149
    

    Sample Output

    100
    101
    150
    

    Hint

    对于第一组样例,因为剩余燃料 c = 99 < 100,Bobo 只能选择 x = 0,从而 y = 0。所以当 (t_0) > h = 100 时,Bobo 一定无法回到目标区间。

    对于第二组样例,当 (t_0) = 102 时,选择 x = 2,可能随机到 y = 1,此时位于 t = 101,燃料 c = 99,任务失败。所以 (t_0) < 102.


    题解

    要运动到(0, h]内需要消耗燃料(t - h),当燃料恰好为h - 1时无法继续移动,即c - (t - h) = h - 1, t = c + 1, 注意c < h时答案为h

    #include<bits/stdc++.h>
    using namespace std;
    int main() {
    	int h1, c1;
    	while (scanf("%d%d", &h1, &c1) != EOF) {
    		if (h1 > c1) printf("%d
    ", h1);
    		else printf("%d
    ", c1 + 1);
    	}
    	return 0;
    }
    

    Q(2223): 喜闻乐见的24点

    Description

    24点是个众所周知的游戏,它的规则具体如下

    { 拿一副牌,抽去大小王后,剩下1~10这40张牌(以下用1代替A)。任意抽取4张牌(称为牌组),用加、减、乘、除把牌面上的数算成24。每张牌必须用且只能用一次。如抽出的牌是3、8、8、9,那么算式为(9-8)×8×3=24 }

    形式化的说,给你4个大于等于1且小于等于13的正整数,问是否能用加、减、乘、除把这四个数字算成24,每个数字必须用且仅用一次。 如果可以请输出"yes",否则输出"no"(输出时不带引号)

    xrdog觉得这个问题过于简单了,所以xrdog决定给你两次替换的机会,每次可以选择四个数字中的某一个并把它替换为[1,13]中的任意一个正整数。

    Input

    一行四个整数

    Output

    如果可以把四个数字凑成24请输出"yes",否则输出"no"(输出时不带引号)

    Sample Input

    1 1 1 1
    

    Sample Output

    yes
    

    Hint

    样例解释

    把一个1变成2,一个1变成6

    即有(1+1) * 2 * 6=24


    题解

    让前两个数大数减小数,可以得到一个[0, 13]内的数,然后通过加减运算任意一个数,必然可以得到一个24的因数,将第四个数修改为另一个因数相乘即可得到24点,恒为yes

    S(2225): 喜闻乐见的数学题

    Description

    从自然数1到n中随机选取m个数字(m<=n),求其中最大数的数学期望是多少?

    Input

    一行两个整数表示n,m

    n<=8,m<=8

    Output

    一个实数,表示最大数的数学期望,并保留小数点后两位。

    Sample Input

    4 1
    

    Sample Output

    2.50
    

    题解

    [frac{sumlimits_{k = m} ^ {n} k C_{k -1} ^ {m - 1}}{C_{n}^{m}} ]

    即从k - 1个数中选m - 1个数,再选k的概率乘以k除以从n个数中选m个数的概率

    化简得(frac{m(n + 1)}{m + 1})

  • 相关阅读:
    剑指 Offer——13. 调整数组顺序使奇数位于偶数前面
    剑指 Offer——3. 从尾到头打印链表
    剑指 Offer——2. 替换空格
    剑指 Offer——1. 二维数组中的查找
    LeetCode 905. Sort Array By Parity 按奇偶校验排列数组
    LeetCode 448. Find All Numbers Disappeared in an Array找到所有数组中消失的元素
    SSH 代码笔记
    anaconda3安装caffe
    opencv多版本安装
    人脸文章与数据库
  • 原文地址:https://www.cnblogs.com/artoriax/p/10346934.html
Copyright © 2011-2022 走看看