08 2018 档案

摘要:1 /* 2 Source :hihocoder 编程练习赛73 D 好的字符串 3 Problem :问长度为n的数字串中,有多少个包含子串s恰好一次。可以有前导0 4 Solution :DP. 利用dp[2][i][j]表示当前匹配了前i个字符,且末尾的j个字符和s的前j个字符是匹配的。然后用0,1来表示是否匹配了完整的一次s 5 ... 阅读全文
posted @ 2018-08-19 19:27 LeeSongt 阅读(173) 评论(0) 推荐(0)
摘要:1 /* 2 Source :hihocoder编程练习73 3 Problem :一个长度为n的串,由若干段1-a[i](假设有Y段)的序列组成,现在中间缺了K个数,问能够还原出来的方案数,需要保证还原出来的子串的个数最少,即最小Y 4 Solution :1.通过分析剩余的序列,我们可以知道原来最少的时候Y是多少,即看原来的序列有多少单调递增的子段。 5 ... 阅读全文
posted @ 2018-08-19 19:13 LeeSongt 阅读(138) 评论(0) 推荐(0)
摘要:1 /* 2 Source :wannafly 22 D 整数序列 3 Problem :给定长度为n的数组,有m次操作,op=1 时, 把a[l-r] 中的数加v, op=2时, 求sum(sin(a[l-r])) 4 Solution :由 sin(a+b) = sin(a)cos(b) + cos(a)*sin(b) 5 ... 阅读全文
posted @ 2018-08-18 18:34 LeeSongt 阅读(156) 评论(0) 推荐(0)
摘要:1 /* 2 Source :CF 609E 3 Problem :给定n个顶点,m条边的图,对于一条边,求包含这条边的最小生成树 4 Solution :先求出MST,然后对于一条给定的边,对应的最小生成树为MST中去掉u,v路径上的最大的边,然后加上当前的边 5 对于后面的问题,求解u,v路径上的最大边,可用树上的倍增法解决。 ... 阅读全文
posted @ 2018-08-16 21:28 LeeSongt 阅读(227) 评论(0) 推荐(0)
摘要:1 /* 2 Source :hihocoder193周 修补木桶 3 Problem :一个圆形的木桶由n块木板围成,可以使用一种操作把连续的一段长度为L的区间中的木板变成无限长,操作可以使用m次,问最终最短的木板是多长。n 11 using namespace std; 12 13 typedef long long LL; 14 const int MAXN = 10... 阅读全文
posted @ 2018-08-16 20:40 LeeSongt 阅读(158) 评论(0) 推荐(0)
摘要:1 /* 2 Source : 3 Problem : 求最近公共祖先的倍增算法 4 Solution : 5 Date :2018-08-16-16.45 6 */ 7 8 // #include 9 #include 10 #include 11 #include 12 #include 13 using n... 阅读全文
posted @ 2018-08-16 17:35 LeeSongt 阅读(349) 评论(0) 推荐(0)
摘要:1 /* 2 Source : POJ 3321 3 Problem : 每次改变树的点权,求子树点权和 4 Solution : dfs序 5 Date :2018-08-16-16.03 6 */ 7 8 // #include 9 #include 10 #include 11 #include 12 #in... 阅读全文
posted @ 2018-08-16 16:36 LeeSongt 阅读(181) 评论(0) 推荐(0)
摘要:1 /* 2 Source :牛客网wannafly 19 矩阵 3 Problem :在一个n*m ,n,m 9 using namespace std; 10 11 typedef long long LL; 12 const int MAXN = 100005; 13 const LL MOD7 = 1e9+7; 14 const LL INF = 1e18+9; ... 阅读全文
posted @ 2018-08-16 11:51 LeeSongt 阅读(130) 评论(0) 推荐(0)
摘要:1 /* 2 Source :hihocoder1800 3 Problem :在n*m的方格中,每个格子有一个权值,求一个矩形区域面积大于等于S,总和最大 4 Solution :枚举固定的两列,然后可以求得符合条件的长度L,求一个长度大于等于L的最大和。最大和=当前总和-最小的前缀和,当前总和的位置与最小前缀和的位置满足条件。 5 Date :2018... 阅读全文
posted @ 2018-08-15 21:08 LeeSongt 阅读(185) 评论(0) 推荐(0)
摘要:1 /* 2 Source :CF689D 3 题意:给出a,b两个长度为n的数组,问有多少个区间满足max(a[l,r])==min(b[l,r]) len(a) 10 using namespace std; 11 12 typedef long long LL; 13 const int MAXN=200005; 14 const LL MOD7 = 1e... 阅读全文
posted @ 2018-08-14 23:34 LeeSongt 阅读(450) 评论(0) 推荐(0)
摘要:1 /* 2 Source :hihocoder 215周 3 Problem :有向图判断是否存在环 4 Solution : 方法1. 可以使用拓扑排序来做 5 方法2. 对于无向图可以用并查集做 6 方法3. 利用dfs遍历,第一次遍历到节点是着灰色,离开节点时着黑色,如果遍历的过程中访问到灰色的节点则存在环... 阅读全文
posted @ 2018-08-13 18:41 LeeSongt 阅读(751) 评论(0) 推荐(0)
摘要:1 /* 2 Source : wannafly21 3 Problem :给出一个长度为n的序列,每个位置有一个值和一个权重,可以把两个位置值相同的一段连起来作为一个操作,得分为对应的权重之和,每个位置只能连一次, 4 求最终最大的和。 5 Solution :dp[i] = dp[j] + sum(i,j) , a[i]==a[... 阅读全文
posted @ 2018-08-10 12:09 LeeSongt 阅读(239) 评论(0) 推荐(0)
摘要:1 /* 2 题意:求 1...n, n 8 using namespace std; 9 10 typedef long long LL; 11 const int MAXN = 100005; 12 const LL MOD7 = 1e9+7; 13 14 LL dp[15][125][125][125]; 15 16 // 位数, 和, 模, 余数,... 阅读全文
posted @ 2018-08-03 18:35 LeeSongt 阅读(162) 评论(0) 推荐(0)
摘要:1 /* 2 题意:给出一个树,根是1,每次选一个节点删除,求期望删空的步数e = a/b, 求x使得(xb = a) % 998244353. 3 题解:考虑每个节点对答案的贡献,一个节点i被删除时,对答案贡献1,而被删除的概率为1/dep[i]. 4 e = sum(1/dep[i]) = a/b, 5 由 (xb=a)%P => x=a... 阅读全文
posted @ 2018-08-02 11:24 LeeSongt 阅读(252) 评论(0) 推荐(0)