摘要: 听队友说过结论:a^n + b^n = c^n在n > 2时无解。 勾股那里本菜数学不好直接暴举了Orz。 跟大家学一波勾股数的构造:a是奇数时,tmp = a / 2; b = (tmp + 1) * tmp * 2; c = b + 1; 举例:5、12、13. a是偶数时,tmp = a / 阅读全文
posted @ 2019-04-03 23:58 AlphaWA 阅读(312) 评论(0) 推荐(0) 编辑
摘要: 题目传送 官方题解 A.官方说是随机数据所以暴力线段树…… #include <bits/stdc++.h> using namespace std; const int maxn = 1e5 + 5; int N, L; class SegmentTree { public: #define ls 阅读全文
posted @ 2019-04-03 19:46 AlphaWA 阅读(162) 评论(0) 推荐(0) 编辑
摘要: 笔者休息娱乐。 阅读全文
posted @ 2019-04-03 17:55 AlphaWA 阅读(169) 评论(0) 推荐(0) 编辑
摘要: 这个数位dp倒是没什么限制条件,只是需要在过程中把每个数字出现次数记录一下即可。记忆化返回时数学算出。框架还是套板子。 阅读全文
posted @ 2019-04-03 17:08 AlphaWA 阅读(177) 评论(0) 推荐(0) 编辑
摘要: 数位dp第二道~就当成搜索,套板子写了写。我写的dp[pos][pre][state0]记录的是当前pos位没有限制时、前面的数是pre时、前面是否都是0时的方案数。 阅读全文
posted @ 2019-04-03 14:45 AlphaWA 阅读(223) 评论(0) 推荐(0) 编辑
摘要: 喜闻乐见的数位入门第一道,这个dp[pos][state]记录的是第pos位如果没有限制的话(有限制当然要搜一搜暴力数了),前一位 放6 or 不放6 的方案数。也就是并不是要求的答案,其实就是记忆化一下,减小搜索的复杂度,跟dp没啥关系吧…… 阅读全文
posted @ 2019-04-03 11:28 AlphaWA 阅读(132) 评论(0) 推荐(0) 编辑
摘要: 关键点在于:全排列中,任意两点u、v相邻的次数一定是(n - 1)! * 2次,即一个常数(可以由高中数学知识计算,将这两个点捏一起然后全排列然后乘二;或者用n! / C(2, n))。 这之后就好算了,每条边算一下子树size对吧,乘法原理就是贡献次数,乘以边权加一起就行了。 所以不是dfs就行了 阅读全文
posted @ 2019-04-03 00:07 AlphaWA 阅读(210) 评论(0) 推荐(0) 编辑