摘要:
题意:给出串A和串集合B={B1,B2,...,Bn},求串A的所有不同子串中不是B中任一串的子串的数目。思路:把A和B中所有字符串依次拼接在一起,然后构造后缀自动机,计算每个状态的R集合元素的最大值r,然后统计那些r≤length(A)的状态。hdu不卡时间卡空间,这是最郁闷的。。。导致下面的程序... 阅读全文
摘要:
题目原意:给一棵n个点的树添加边,给定度函数f(d)为一个点的度的函数,求所有点的度函数的和思路:函数只与点的度有关,而与点无关,n个点的树有n-1条边,共产生2(n-1)个度,每个点至少有1个度。可以证明,一个合法的分配方式对应一棵树那么先对每个点各分配1个度,考虑把n-2个度分配给n个点由于结果... 阅读全文
摘要:
题意:给定n和a[],令N =∏(1≤i≤n)ia[i],求N的所有约数的积(取模1e9+7)思路:假定N因式分解后的结果是2p1*3p2*5p3*...,如何计算答案呢?单独看2p1这一项,考虑它所有的贡献,它在N的约数里面总共会出现P=(p2+1)*(p3+1)*...次,由于是求乘积,而且2的... 阅读全文
摘要:
题意:有N个点,给定M个集合,集合Si里面的点两两之间的距离都为Ti,集合里面的所有点数之和using namespace std;#define X first#define Y second#define pb(x) push_back(x)#define mp(x, y) make_pair(... 阅读全文
摘要:
public class Fan { public static void main(String[] args) { Fan fan1 = new Fan(), fan2 = new Fan(); fan1.m... 阅读全文
摘要:
Trie树:把若干个单词按前缀合并就得到一棵树,这棵树称为Trie树。Trie树是有根树,每条边表示一个字符,每个节点表示一个从根到当前节点的唯一路径上的字符依次连接得到的字符串。由于空串是任何串的前缀,因此根就表示“空串”这个串。如何区分单词节点和非单词节点呢?插入单词的时候对每个节点mark一下... 阅读全文
摘要:
dp解法:令dp[i]表示容量为i的背包所能得到的最大价值,考虑在当前物品集合中加入1个新考虑的物品i,则有如下状态转移方程:dp[j] = max(dp[j], dp[j - weight[i]] + value[i])#include using namespace std;const int ... 阅读全文
摘要:
利用Graphics类画任意显式函数图像,只需修改代码中的F()函数即可,另外调整timesx和timesy参数来分方向放大或缩小图像。需要重定义坐标系。 1 package test; 2 3 import javax.swing.*; 4 import java.awt.Graphic... 阅读全文
摘要:
题意:50000个5维向量,50000次询问每一维都不大于某一向量的向量个数,强制在线。 思路:做完这题才知道bitset效率这么高,自己本地测试了下1s可以操作1010个bit,orz简单粗暴 令S(i)表示第i维比当前向量的i维小的向量集,则答案为count(∩S(i)),0≤i‹5 每个向量都 阅读全文
摘要:
题意:如题思路:离散。将所有交点求出来,相当于将多变形的边切成了很多条元边,对每条元边,有两种情况在圆内,答案加上此边长在圆外,答案加上此边相对于圆心的"有向转弧"#include using namespace std;#ifndef ONLINE_JUDGE #include "local... 阅读全文