Feb
Posted 我微笑不代表我快乐
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Feb相关的知识,希望对你有一定的参考价值。
P9183 [USACO23OPEN] FEB
一道规律题$.....$
说在前面的
写这一道题,首先要知道一个东西:
如果$A$的取值为($1,3,5$)中的一种,$B$的取值为($0,2,4$)中的一种,
则$A+B$的取值为($1,3,5,7,9$)中的一种.
如果$A$的取值为($1,2,3$)中的一种,$B$的取值为($0,2,4$)中的一种,
则$A+B$的取值为($1,2,3,4,5,6,7$)中的一种.
那么:如果$A$的取值为一个等差数列$l_a-r_a$(公差为$k_a$)中的一种,$B$的取值为等差数列$l_b-r_b$(公差为$k_b$)中的一种,
则$A+B$的取值为等差数列$(l_a+l_b)-(r_a+r_b)$(公差为$\\min(k_a,k_b))$中的一种.
Solution
题意再次并不赘述,总答案为已知的字符所产生的贡献$+$字符$F$所产生的贡献
由眼可得 仔细观察,可发现$F$在字符串中只有三种可能
- 形如$...BFFFB...$或$...EFFFE...$ 即一段连续$F$的两头相连的已知字符相同。
- 形如$...BFFFE...$或$...EFFFB...$ 即一段连续$F$的两头相连的已知字符不相同。
- 形如$FFF...$或$...FFF$ 即一段连续的$F$在字符串的开头或结尾
这时,可以考虑找不同情况下$F$的贡献,然后将每一段$F$的贡献合并起来,加上已知字符的贡献,便是本题答案。
第一种情况时:
- $...BFB...$ 的贡献为 $0,2$
- $...BFFB...$ 的贡献为 $1,3$
- $...BFFFB...$ 的贡献为 $0,2,4$
- $...BFFFFB...$ 的贡献为 $1,3,5$
- $......$
第二种情况时:
- $...BFE...$ 的贡献为 $1$
- $...BFFE...$ 的贡献为 $0,2$
- $...BFFFE...$ 的贡献为 $1,3$
- $...BFFFFE...$ 的贡献为 $0,2,4$
- $......$
第三种情况时:
- $F...$ 的贡献为 $0,1$
- $FF...$ 的贡献为 $0,1,2$
- $FFF...$ 的贡献为 $0,1,2,3$
- $FFFF...$ 的贡献为 $0,1,2,3,4$
- $......$
所以,不同情况下的$F$的贡献都是等差数列,判断$F$的种类,合并答案便可
使用表达式的一部分进行分组
【中文标题】使用表达式的一部分进行分组【英文标题】:Group by using parts of the expression 【发布时间】:2015-02-05 19:38:10 【问题描述】:我有一张这样的桌子:
Name Count
23feb.01.04.(33.03.03) 1
23feb.09.(12.04.06) 9
23feb.02.09.(25.06) 1
23feb.01.02.04 2
23feb.01.02 48
23feb.02.13 4
23feb.01.04.(33.03.10) 1
23feb.01.04.(33.03.06) 1
23feb.02 48
23feb.02.07 12
23feb.01.04.(33.03.01) 1
23feb.02.02 3
23feb.02.04 11
23feb 279
23feb.02.06 3
23feb.03 83
有没有什么方法可以使用group by
函数来获取更高级别的Name
字符串的聚合结果?所以,理想的结果是:
Name Count
23feb 507
怎么做?
【问题讨论】:
是使用group by和SQL的字符串函数SubString
【参考方案1】:
要避免使用Like
通配符,您可以使用LEFT
SELECT LEFT(name,5), COUNT(*)
FROM my_table
GROUP BY LEFT(name,5)
【讨论】:
就是这样,除了对列进行分组,您还可以对列上的函数进行分组,就像上面发生的那样。使用 LEFT 或 SUBSTR 正是您的选择。一旦你按它分组,它就会成为被放入 SELECT 部分的候选者,就像也显示的那样。【参考方案2】:您可以查询的任何(行)表达式也可以按表达式分组:
SELECT SUBSTR(name, 1, INSTR(name, '.')), COUNT(*)
FROM my_table
GROUP BY SUBSTR(name, 1, INSTR(name, '.'))
【讨论】:
如此接近,领先 9 秒。 我开始了解它是如何在这里工作的!但是,您的查询仍然不同。哪一个有效,取决于表中的所有值。也就是说,该表中的所有值都将存在。以上是关于Feb的主要内容,如果未能解决你的问题,请参考以下文章