摘要:
题意:给定n个模式串和1个文本串,求有多少个模式串在文本串里出现过。 思路:建完tire,fail之后,开始跑自动机,然后对于走过的点,给一个标记,防止多次计算即可 为啥呢,因为求得是有多少模式串在文本串出现过,而不是出现次数 1 #include<bits/stdc++.h> 2 using na 阅读全文
摘要:
题意:给出一个病毒串;给出n个询问串,问这些串是病毒串否? 要我们找出不是病毒的串 思路:我们将询问串建字典树,然后来dfs跑这个病毒串 (bfs也可以) 那么如何跑呢? 假如病毒串当前位置是A T G C ,就判断是否能在字典树上继续往下走,不可以就直接返回 假如是问号,那么就有4种可能,我们也枚 阅读全文
摘要:
题意:给出n模式串,再给出m个查询串 问:每一个查询串从左到右最多有多少个字符被查到;思路:将模式串先放进字典树中,然后开始跑查询串 查询串从左到右跑一遍,只要可以从这个位置开始跑,就跑 那怎样才能从这个位置开始跑呢,就是在这之前得所有字符都满足了被查询到 但是:这样子得话复杂度最差会达到1e8 1 阅读全文
摘要:
题意:给出n个模式串,给出m个查询串 问每一个查询串是否出现过?如果没出现过,就打印WRONG 如果出现过,则看起被查询了几次,如果到目前为止(包括本次)查询过一次,则输出OK 多次则输出 REPEAT 思路:直接建字典树 跑查询的时候,如果找不到,就返回0 如果已经找到,则用vis数组来标记到目前 阅读全文
摘要:
题意:给出n个女朋友,每个女朋友有花费的钱数,花费的人品值,花费的时间 让我们在拥有最多女朋友的情况下,花费时间最少 思路:这是一道二维背包的题,我们开二维来进行dp 比二维背包多了内容就是,要花费时间最少,那么我们就只需要多增加一个内容 就是:在拥有女朋友一样多的数据中,寻找花费钱数最少的情况 ; 阅读全文
摘要:
题意:给出n堆木块,每一堆从大到小堆砌,是一个非绝对递减序列 每一堆的高度就所有木块大小的总和,让我们将这n堆木块中取出一些,使n堆木块高度一样高 求出最高的高度(只能取出,不能增加) 思路:根据题目数据,最大的高度是10000,我们就像操作01背包那样,从大到小枚举一遍, 然后求出这n堆木块,都能 阅读全文
摘要:
1 #include<bits/stdc++.h> 2 using namespace std; 3 const int maxn=1e3+10; 4 int dp[maxn][maxn]; 5 int v[maxn],w[maxn],p[maxn]; 6 int main() 7 { 8 int 阅读全文
摘要:
这道题不是莫队,只是有莫队的影子 题意:给出n个数字,给出m个画家(表示这n个数字为1~m) 让我们找到一个最小的范围涵盖这1~m个数,如果多解,则输出左区间最小的解 思路:我们用左右指针移动来做此题,类似于莫队; 那么如何做呢?我们一开始从第一个端点开始,把第一个端点纳进来,然后开始分情况讨论; 阅读全文
摘要:
单调队列裸题 1 #include<bits/stdc++.h> 2 using namespace std; 3 const int maxn=2e6+10; 4 int n,m,a[maxn]; 5 int que[maxn]; 6 int main() 7 { 8 scanf("%d%d",& 阅读全文
摘要:
题意:给出一串数字,让我们在其中加 + - 号,能加n-1个,正负号任意组合 只要其中一个结果能整除k,就输出 可以 全部结果都不能整除,就输出不可以 思路:题意给出的数据范围为n(1e4) k(1e2 ) 即要除的数只有100这么大,那么每一次枚举,我们显然可以枚举1到100内的数 只要在当前这个 阅读全文