摘要:
题目链接 似乎可以按位确定每个字母,然后你就得到了一道码农题 所以我们爆搜每个字母的值,然后判断是否合法 朴素的40pts做法 #include<bits/stdc++.h> using namespace std; int n,f=0,num[100],vis[100]; string s[10] 阅读全文
摘要:
[题目链接](https://www.luogu.com.cn/problem/P3627) #思路 路可以重复走但是钱不能重复拿,对于一个强连通分量里的点我们肯定把钱都拿光,tarjan缩点 ans维护从s点出发到每个点最多能拿到多少钱,vis维护每个点能否访问到 然而直接dfs会t,考虑到每次判 阅读全文
摘要:
洛谷题目链接 loj题目链接 tarjan求强联通分量,每个强联通分量内的间谍可以互相揭发,缩点 跑拓扑排序,每个间谍(强连通分量)只可能被拓扑排序比他小的揭发 扫一遍,没被控制的收买一下,收买不了输出no.(代码实现的时候有些区别,这样也是对的) #include <bits/stdc++.h> 阅读全文
摘要:
题目链接 爆搜 #include<bits/stdc++.h> using namespace std;int nn,m; int tot=0,sum[5000],//极端情况下会有50*50个房间 a[1000][1000],w[1000][1000],n[1000][1000],e[1000][ 阅读全文
摘要:
题目链接 每个强连通分量内部可以自达,可以视为一个点,tarjan跑强连通分量。 重新建边:一条边上的两个点不在一个一个强连通分量里,则将两个强连通分量连边。 可以把原图清空或者重开数组,重开数组的话变量名不要混。 #include<bits/stdc++.h> using namespace st 阅读全文
摘要:
题目链接 tarjan基本思路:强连通分量在搜索树上有返祖边,,细节见代码 #include<bits/stdc++.h> using namespace std; int head[100000],ans=0,in[100000],cnt=0,cnt_=0,low[100000],dfn[1000 阅读全文
摘要:
题目链接 k个式子相乘,把其中n个式子的x和m个式子的y选出来得到xn*ym项 Ckn*Ck-nm(n+m=k也就是1) 直接计算在取模后做除法需要乘法逆元,可以用杨辉三角求解 #include<bits/stdc++.h> using namespace std; int f[1010][1010 阅读全文
摘要:
#抽屉原理 ##原理1: 把多于n+1个的物体放到n个抽屉里,则至少有一个抽屉里的东西不少于两件。 证明(反证法):如果每个抽屉至多只能放进一个物体,那么物体的总数至多是n×1,而不是题设的n+k(k≥1),故不可能。 ##原理2: 把多于mn+1(n不为0)个的物体放到n个抽屉里,则至少有一个抽屉 阅读全文
摘要:
https://zhuanlan.zhihu.com/p/133818995 #递推公式 f[n]=(n-1)*(f[n-1]+f[n-2]) ##证明(这也配叫证明??? 第n个元素可以在前n-1个元素都是错排的情况下与其中一个元素交换位置(n不在就有的错排) 有(n-1)*f[n-1]种方案 第 阅读全文
摘要:
https://www.luogu.com.cn/problem/P1040 中序遍历,左子树+根+右子树 对于区间l到r,枚举根结点i,再分别求解区间l到i-1和i+1到r 直接搜索程序很好看但是会t 可以改为记搜或动规 原题还需要求前序遍历,如果照常对于每个点存左儿子和右儿子,在l到r的区间中的 阅读全文