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})

  • 相关阅读:
    事务
    排序算法
    二维数组中的查找
    在Linux中安装Matlab
    null和“”的区别
    【学习笔记】〖九度OJ〗题目1433:FatMouse
    【学习笔记】〖九度OJ〗题目1464:Hello World for U
    year:2017 month:8 day:1
    year:2017 month:07 day:31
    year:2017 month:7 day:27
  • 原文地址:https://www.cnblogs.com/artoriax/p/10346934.html
Copyright © 2011-2022 走看看