摘要: 1 #include<cstdio> 2 #include<cstring> 3 #include<iostream> 4 #include<algorithm> 5 #define LL long long 6 using namespace std; 7 long long f[100][2][ 阅读全文
posted @ 2019-09-17 19:39 Tj1 阅读(384) 评论(0) 推荐(0) 编辑
摘要: D1: T2: 感觉挺难的但是部分分的提示挺充足 1 #include<cstdio> 2 #include<algorithm> 3 #include<iostream> 4 #include<cstring> 5 #include<cstdlib> 6 #include<cmath> 7 usi 阅读全文
posted @ 2019-08-31 23:12 Tj1 阅读(189) 评论(0) 推荐(0) 编辑
摘要: D1: T1:快速幂 T2: T3: 这题挺不好想,但是从部分分出发 30` && 60` 有向图两点间最小边最大,二分答案,O(q *log( m)* m ) 但是其中填边的步骤可以省略,O(q*m) >kruscal 第一个使得两点联通的 边就是答案 100` 我们发现 每个询问都会填边太麻烦, 阅读全文
posted @ 2019-08-27 19:33 Tj1 阅读(149) 评论(0) 推荐(0) 编辑
摘要: 双向bfs,至于为什么不会爆还是因为生日悖论,然后双向bfs降低了时空复杂度,ssqrt(n), 然后就是问题的关键 双向bfs: 1.轮流拓展: 会导致一个方向出现了可行解,另一个方向还没出现,无法构成最优, 2.按层拓展:不会出现,ac 3.按size拓展:同1,也会出现该种情况 按size拓展 阅读全文
posted @ 2019-07-30 00:04 Tj1 阅读(168) 评论(0) 推荐(0) 编辑
摘要: 问题 D: 单词(word) 题目描述 某人读论文,一篇论文是由许多单词组成。但他发现一个单词会在论文中出现很多 次,现在想知道每个单词分别在论文中出现多少次。 某人读论文,一篇论文是由许多单词组成。但他发现一个单词会在论文中出现很多 次,现在想知道每个单词分别在论文中出现多少次。 输入 第一行一个 阅读全文
posted @ 2019-07-27 09:44 Tj1 阅读(116) 评论(0) 推荐(0) 编辑
摘要: 矩阵是个非常神奇的东西,矩阵+,-,*,倒置 等基本运算 然后我们能用矩阵干什么呢? 556. Fibonacci数列 (降低递推问题的时间复杂度) 题目描述 定义:f0=f1=1, fn=fn-1+fn-2(n>=2)。{fi}称为Fibonacci数列。 输入n,求fn mod q。其中1<=q 阅读全文
posted @ 2019-07-24 13:41 Tj1 阅读(321) 评论(0) 推荐(0) 编辑
摘要: 第一次学习状压DP,感觉就是Dp的优化版本,把存不下但是好表示的状态用数字表示一下, 对所有的约束条件也用数表示,例如 T1: 问题描述≤20) 在n*n的方格棋盘上放置n个车(可以攻击所在行、列),求使它们不能互相攻击的方案总数。 输入格式 一行,若干个1到20之间的整数。 输出格式 若干行,对于 阅读全文
posted @ 2019-07-23 15:07 Tj1 阅读(210) 评论(0) 推荐(0) 编辑
摘要: T2: 问题描述 给你一个除法表达式:X1/X2/X3/X4……/Xk 其中Xi是正整数并且 Xi <= 2 000 000 000( 1<=i<=k,k<=10 000 )。除法表达式应当按照从左到右的顺序求结果,例如:表达式1/2/1/2的值是1/4,你可以在表达E中嵌入括号改变计算顺序,例如表 阅读全文
posted @ 2019-06-23 15:17 Tj1 阅读(230) 评论(0) 推荐(0) 编辑
摘要: 在一个字符串中找到一个循环同构使得该循环同构字典序最小 朴素算法: 暴力枚举每个串并比较O(n^2),实现时可用双指针, force: 然后我们考虑为什么很慢,O(n)的比较是不能避免的了,所以我们从i的移动上做文章, 我们不难发现,i在移动时,如果a[i+k]!=a[j+k] 不妨设a[i+k]< 阅读全文
posted @ 2019-06-20 19:37 Tj1 阅读(129) 评论(0) 推荐(0) 编辑
摘要: 。 阅读全文
posted @ 2019-06-16 17:16 Tj1 阅读(158) 评论(0) 推荐(0) 编辑