• 【字符串 Hash】【DP】 HDU - 5763 Another Meaning【串s2可用第二种意思替换，问串一这句话可能有几种含义】 As is known to all, in many cases, a word has two meanings. Such as “hehe”, which not only ...
【字符串 Hash】【DP】  HDU - 5763  Another Meaning【串二可用第二种意思替换，问串一这句话可能有几种含义】

As is known to all, in many cases, a word has two meanings. Such as “hehe”, which not only means “hehe”, but also means “excuse me”.
Today, ?? is chating with MeiZi online, MeiZi sends a sentence A to ??. ?? is so smart that he knows the word B in the sentence has two meanings. He wants to know how many kinds of meanings MeiZi can express.

Input
The first line of the input gives the number of test cases T; T test cases follow.
Each test case contains two strings A and B, A means the sentence MeiZi sends to ??, B means the word B which has two menaings. string only contains lowercase letters.

Limits
T <= 30
|A| <= 100000
|B| <= |A|

Output
For each test case, output one line containing “Case #x: y” (without quotes) , where x is the test case number (starting from 1) and y is the number of the different meaning of this sentence may be. Since this number may be quite large, you should output the answer modulo 1000000007.

Sample Input
4
hehehe
hehe
woquxizaolehehe
woquxizaole
hehehehe
hehe
iehiehieh

Sample Output
Case #1: 3
Case #2: 2
Case #3: 5
Case #4: 1

Hint
In the first case, “ hehehe” can have 3 meaings: “he”, “he”, “hehehe”.
In the third case, “hehehehe” can have 5 meaings: “hehe”, “he*he”, “hehe”, “**”, “hehehehe”.

题意：

str1是一句话，str2可以被别的意思替换，（比如样例中，hehe可以是“呵呵”， 也可以是“o(￣︶￣)o”，emmmm）。
问str1这句话可能有几种含义？

思路：

dp[i]表示以第i位结尾的字符串有几种意思
dp[0] = 1
末尾的单词不能被匹配：dp[i] = dp[i - 1] //只能跟着前面的来解释，不可以被替换，所以dp不改变
末尾后缀可以被str2（长度为m）替换：dp[i] = dp[i - m] + dp[i-1]//种类为被替换和不被替换两种加在一起
判断末尾m位能否和str2匹配，可以用hash或者KMP解决

AC代码：

#include <iostream>
#include <stdio.h>
#include <string>
#include <string.h>
#include <set>
#include <map>

using namespace std;

typedef long long LL;
typedef unsigned long long ULL;

const int maxn = 100005;
const int MOD = 1000000007;
ULL H[maxn], P[maxn], base = 27;
int dp[maxn];
char s1[maxn], s2[maxn];

void Hash(char s[])
{
int len = strlen(s + 1);
H[0] = 0;
P[0] = 1;
for(int i = 1; i <= len; i++)
{
H[i] = H[i - 1] * base + s[i] - 'a' + 1;
P[i] = P[i - 1] * base;
}
}

ULL GetHash(int l, int r)
{
return H[r] - H[l - 1] * P[r - l + 1];
}

int main()
{
int t;
scanf("%d", &t);
for(int ks = 1; ks <= t; ks++)
{
scanf("%s%s", s1 + 1, s2 + 1);
int l1 = strlen(s1 + 1), l2 = strlen(s2 + 1);
Hash(s2);
ULL a2 = GetHash(1, l2);
Hash(s1);
dp[0] = 1;
for(int i = 1; i <= l1; i++)
{
if(i < l2)
{
dp[i] = dp[i - 1];
continue ;
}
ULL a1 = GetHash(i - l2 + 1, i);
if(a1 == a2)
dp[i] = (dp[i - l2] + dp[i - 1]) % MOD;
else
dp[i] = dp[i - 1];
}
printf("Case #%d: %d\n", ks, dp[l1]);
}
return 0;
}
展开全文
• tensorboard学习—— 解决tensorboard attempted to bind to port 6006,but it was already in use问题的几种方法 在用tensorboard查看训练生成结果时，指令为 遇到如下错误： 字面意思是端口6006被占用中，如下...
tensorboard学习—— 解决tensorboard attempted to bind to port 6006,but it was already in use问题的几种方法
在用tensorboard查看训练生成结果时，指令为

遇到如下错误：
字面意思是端口6006被占用中，有如下解决方法：
解决方法一：
搜索网上的参考解决方案是：
在终端输入
lsof -i:6006
这时候在终端会发现：

使用命令kill-9 3723 （3723来自ubuntu前边的那个数字）
然后再输入之前的命令（亲测好使）
解决方法二：
（插句话，如果你是在windows下运行的，建议使用谷歌浏览器，且版本高些。参考：tensorboard无法打开）
指定一个新的端口来查看
tensorboard --logdir=yourpath/train_dir --port=6008
参考我写的指令，给port指明一个新的端口号来查看，比如端口号：8800
倘若你上网使用的是代理，仍遇到上面报的错误，请先将你的上网代理关闭。
转载自：https://blog.csdn.net/c20081052/article/details/81974847


展开全文
• 　这年，我用过不同的代码检视工具，并且我相信一套代码检视方法是最好的，下面是我所学到的。 　代码检视的方法： 　● 无代码检视 　每个开发者自由的check in代码，且每个人都可以检查check in代码...
　　代码检视每个读次文章的人都会知道是什么意思。我们项目也是坚持在做代码检视。今天我们仔细深入看看代码检视的内涵及作用。
这几年，我用过不同的代码检视工具，并且我相信有一套代码检视方法是最好的，下面是我所学到的。
有三种代码检视的方法：
● 无代码检视
每个开发者自由的check in代码，且每个人都可以检查check in代码的功能清单，只要他愿意，没有责任与义务的区分。
● 非阻塞式代码检视
当代码check in后，检视者根据修改清单，在某个时间点到代码库上去检视修改的代码。这种检视方式不能阻止坏的代码被check in到代码库上区。
● 阻塞式代码检视
这种检视方式式代码提交者通知检视者检视代码，代码在没有得到检视者同意之前不能提交到代码库。
让我们先来看第一种无代码检视，我坚持认为没有代码检视的软件开发，最终将会是一堆烂代码，不管程序员有多牛多有经验。即使你是很牛的程序员，你不可能在所有时间都输出高质量代码。月有圆缺，潮汐有涨落，程序员交付的代码质量也符合这个规律的。
当使用阻塞式检视方法的时候，代码提交者不能提交代码，除非监视者认为代码质量已经符合要求。
当使用非阻塞式检视方法的时候，代码会被立即提交到代码库，但是检视者可以在受到通知后检视代码，我建议做一个提醒系统，不断提醒那些懒惰的检视者要完成代码检视。
按照我的经验来看，非阻塞式的代码检视是可行的，在讨论这个之前，我们先讨论一下代码检视到底能做什么。因为我发现很多次人们从感觉上认识到的代码检视的作用，与实际的不一致。
这里有几点事实：
● 代码检视不能发现你代码中的严重bug
听到这个你会很沮丧，但这是现实。当你的项目越来越复杂的时候，你做了一个更改，你不能从检视者那里得到一个意见，说：如果servlet接受20个请求，死锁将会发生在A.java的723行和B.java的1410行".取而代之的是，你会觉得代码检视者的意见像是花瓶，可有可无。
● 代码检视者能够督促你认真写代码
你知道你的代码将会被很多双眼睛盯着，所以你会花额外多的时间让代码可读性更好。
我发现赞成阻塞式检视方法的人，通常会觉得太多自由是导致代码质量差的原因。有一种观点是：如果检视者不带着一种强烈的责任感去检视代码，那么检视者就会松懈然后检视就完成不了。
首先，我的经验告诉我，这个观点是不正确的。我发现在使用非阻塞方法的项目中，检视者也非常努力的检视，通常在少于一周的时间完成检视任务。
不过，不管观点的支持方还是反对方，都存在一个固有的缺陷：我们没有认识到阻塞式检视和非阻塞式检视都式依赖你的团队(或者项目的检视规则)。
在阻塞式检视场景下，当你要提交代码时候，你依赖于检视者，他要意识到你一直在等着他来检视代码，除此外没有别的事情可做。如果不是有这个压力在，监视者可能要几天之后才能检视你的代码，因为他可能别检视任务淹没了，可能他会认为代码提交者会找一些其他事情做，为了在等待检视的时候不闲着。
我们可以汇总阻塞式检视的问题：
我没有实践过阻塞式代码检视，这些问题是从实施阻塞式代码检视的团队中反馈出来的。
● 等待检视完成的过程中，开发者被阻塞了，什么事情也干不了。
● 开发者会一次尽可能提交多的代码，因为他们不想经常被阻塞，经常被中断。
● 代码太多了会给检视者带来问题，他们要花更多的时间去读懂代码，开发者被阻塞的时间也更长。因此就进入了恶性循环。
相比之下，非阻塞式的代码检视方法会更好一些。
我认为非阻塞检视方法能够解决上面阻塞式检视方法的所有问题。
● 监视者不会阻塞开发者的工作。
● 我会花多10秒来写注释，因为等会会有人会检视。我发现从未被检视过的代码很晦涩难懂，因为没有一种督促让他将代码写的更易读。
另外一种对代码检视的实践方法是结对编程，这个最近似乎很流行但是又似乎实践不起来。
结对编程是阻塞式代码检视方法和非阻塞式代码检视方法的中间态，检视者不会阻塞开发者，因为他们一起开发。
结对编程似乎是代码检视的最佳实践，但是结对编程也有缺点：
假如结对的两个人能力差距很悬殊，则不如非阻塞式，因为能力强的这个人的生产率被能力弱的拉下来了。
对于结对编程看看项目组的具体情况来实施，针对一些核心业务逻辑的代码，可以找两个能力相当且都对业务比较熟悉的开发者来实现，这种效果比较好，在开发代码的同时也做到了代码检视的效果。
总结起来说，代码检视是项目中必须要做一件事情，通常我们推荐非阻塞式代码检视，对于核心业务，建议使用结对编程。

展开全文
• 常用的类BufferedReader，Scanner。 1、功能最强大的是利用 Scanner 实现从键盘读入数据（jdk1.5以后）  Scanner scan = new Scanner(System.in);  new是创建一个对象,程序中new的意思是创建了一个...
java里面处理输入输出当然是IO流，大多是通过定义输入输出流对象。常用的类有BufferedReader，Scanner。
1、功能最强大的是利用 Scanner 实现从键盘读入数据（jdk1.5以后）

Scanner scan = new Scanner(System.in);
new是创建一个对象,程序中new的意思是创建了一个Scanner类的对象scan.在创建Scanner类的对象时,需要用System.in 作为它的参数,也可以看作是System.in取得用户输入的内容后,交给Scanner来作一些处理.
Scanner类中提供了多个方法:
next():取得一个字符串;
nextInt():将取得的字符串转换成int类型的整数;
nextFloat():将取得的字符串转换成float型;
nextBoolean():将取得的字符串转换成boolean型;

但是里面有一些注意点一般在IO知识点前是暂时回避的。
其中：next 方法遇见第一个有效字符(非空格、换行字符)时,开始执行扫描,而当遇见第一个分隔符或结束符(空格或换行符)时,结束扫描。（这里面有一个方法useDelimiter可以自己设置结束符。）
nextLine此扫描器执行当前行，并返回跳过的输入信息。 此方法返回当前行的其余部分，不包括结尾处的行分隔符。当前位置移至下一行的行首。
教学中发现有些孩子在学习中就是想输入char型的东西来判断。而Scanner类的方法中确只提供String类型，其实这是十分科学和有用途的。其实我们在实际工作中最为常用的就是字符串，所以人家java才提供这种类型的方法。
用Scanner获得用户的输入非常的强大,但是Scanner取得输入的依据是空格符,包括空格键,Tab键和Enter键.当按下这其中的任一键时,Scanner就会返回下一个输入.


展开全文
• 题目的意思就是在一棵BST中找到一个数X，然后得到这个数是第大的（千万不要理解成找第X个大的数了） 然后我们就可以利用BST的特点来求解：中序遍历为有序序列 那么问题就转换成了在有序序列中找一个数，这时候...
• 从字面意思来看，Region-In-Transition说的是Region变迁机制，实际上是指在一次特定操作行为中Region状态的变迁，那这里就涉及这么个问题：Region存在多少状态？HBase哪些操作会触发Region状态变迁？一次正常...
• 1. 北邮计算机类个学院，它们之间什么区别？ 2. 北邮不同学院的相同专业什么相同或不同之处？ 3. 计算机科学与技术专业和电子信息专业什么区别？ 4. 北邮夏令营吗？ 5. 什么是组？报组是什么意思？ 6....
• Python字典的遍历方法几种，其中一种是for...in，这个我就不说明，在Python了几乎随处都可见for...in。下面说的这种遍历方式是item()方法。item()item()方法把字典中每对key和value组成一个元组，并把这些元组...
• 题意：n个星球(编号0到n-1)，有些星球之间路径相连，且每个星球都一个power值。每个星球可以求助，它会选择与它...现在，给出两操作query a和destroy a b，前者的意思是问星球a会向哪个星球求助(不能求助输...
• IDEA 删除java类的3提示 ...Safe delete （with usage search） Search in comments ...选中状态,删除前IDEA会搜寻项目中是否有使用到这个文件的其它文件,如果有相关文件会提醒有几处被使用,并且列出以下三个按钮: (1)
• 写Vue组件时候忽然报错，原来以下几种： 组件，不能和html标签重复 如上的意思是table重名了 由于在模板需要插入到 DOM 中，所以模板中的标签名必须能够被 DOM 正确地解析。主要三种情况： 一是完全不合法的...
• 很显然，上述所谓的迭代计划只不过是将项目分解为个里程碑而已，而真正迭代的意思是，每一个迭代都经历一次完整的软件生命周期。什么意思意思是，每一次迭代都需求、分析、设计、实施。也就是说，每一次迭代的...
• 题意：题目的意思就是城市，穷和富，要富的运到穷的里面问你最多能建条路。 思路：就是按穷的递增序列来找富的城市里的最大上升子序列。就是LIS法，因为500000个数据所以用普通的方法肯定超时，那么就用...
• Paging of Large Resultsets in ASP.NET中对几种常见的分页方式做了比较感觉写得不错，前段时间因为要做asp.net分页，就想到了这篇文章，但经过测试后发现不少问题，虽然按照留言的介绍和自己的努力做了些修改，最终...
• 里面包括了老生常谈的饿汉式，懒汉式以及枚举类 静态代码块 序列化场景下，多线程场景下的问题。...package 单例模式的几种写法.饿汉式; /** * @Author:FuYouJie * @Date Create in 2020/1/23 13:32...
• 有几种画法?艺术大家通常是创造出自己的套路,比如明末清初,水墨画法开始成熟,这时画树就不用勾勒这个模式了,而是一笔 下去,浓淡几个叶子,待毛笔的水墨要干枯时,画一下树干,这样,一个活生写意的树就画出来. 我上面...
• 我的父母都会不认同的状态，他们觉得大四再找工作不行么？为啥要翘课实习？但是他们不知道的是，如果你的目标是一线互联网公司如BAT（那时候TMD还没起来）这些都是大三就...
• Stateful Session Bean 与 Stateless Session Bean ，这两的 Session Bean都可以将系统逻辑放在 method之中执行，不同的是 Stateful Session Bean 可以记录呼叫者的状态，因此通常来说，一个使用者会一个相对应...
• 这样实现的队列入队和出队的平摊复杂度都还是O(1), 比上面的几种方法要好。3.在c语言库函数中将一个字符转换成整型的函数是atool()吗，这个函数的原型是什么？ 函数名: atol 功能: 把字符串转换成长整型数 用法: ...
• Cross Validation，中文意思是交叉验证，下面是几种不同类型的Cross validation的解释，一个Idea in p27 in the ideas notebook。 Cross validation is a model evaluation method that is better than residuals...
• 文章目录MysqlMysql几种锁MySQL中哪些引擎MyISAM和InnoDB两者区别：InnoDB支持的四种事务隔离级别，以及之间的区别？主键和候选键什么区别？你怎么看到为表格定义的所有索引？LIKE声明中的％和_是什么意思？...
• 知识点 SQL注入 绕过information的过滤...这题可以替代information_schema有几种方式，但是我踩了一个坑。这题的表有2个：f1ag_1s_h3r3_hhhhh和users233333333333333，这题可以用来替代information_schema的有三个： s
• 天项目在运行的时候数据库数据插入突然报：ORA-01653: unable to extend table HSDC.ADDRESS by 128 in tablespace DATACENTER大概的意思是说HSDC表空间不足了，在网上搜了一下出现这种表空间不足的问题一般两...
• 在用android studio(v3.6.1)运行项目时，出现以下提示(warning)信息: Deprecated Gradle features were used in this build, making it ...在网上搜索一通后，主要有几种方法: 使用项目下自带的gradle.bat(windows平
• 对多态的理解，结合《Think in java》和《深入理解JVM》 观点认为：因为重载是静态的（编译阶段就已经确定调用的方法版本，...理解多态就要理解下面这个词的意思：向上转型和后期绑定。 在《Think in java》中
• 容器这个概念不妨就按照字面意思来理解，指能将一些元素组织在一起的一数据结构，你可以通过 in 或者 not in 这样的关键字判断某个指定的元素是否包含在容器中。通常来说，容器会将所有的元素都存放到内存中，但也...

...