ksm

[HNOI2009] 图的同构

有些话、适合烂在心里 提交于 2021-02-15 06:32:54
1488: [HNOI2009]图的同构 Time Limit: 10 Sec Memory Limit: 64 MB Submit: 700 Solved: 470 [ Submit ][ Status ][ Discuss ] Description 求两两互不同构的含n个点的简单图有多少种。 简单图是关联一对顶点的无向边不多于一条的不含自环的图。 a图与b图被认为是同构的是指a图的顶点经过一定的重新标号以后,a图的顶点集和边集能完全与b图一一对应。 Input 输入一行一个整数N,表示图的顶点数,0<=N<=60 Output 输出一行一个整数表示含N个点的图在同构意义下互不同构的图的数目,答案对997取模。 Sample Input 输入1 1 输入2 2 输入3 3 Sample Output 输出1 1 输出2 2 输出3 4 很经典的一类等价图计数问题。。。。 可以先等价于每条边可以染两种颜色,求两两本质不同的图的个数。。。 最朴素的想法就是找出所有边的置换,对每个置换求一下环数,然后用p????引理算一下方案数,最后除以总置换数(也就是边数的阶乘的逆元)就可以得到答案了。。。 但是有一些边的置换是会出现矛盾的。。。因为边置换要求两个顶点映射到新边的两个顶点上,难免会产生冲突。 于是我们换一种思路,枚举点的置换,边的置换就随之确定了,并且会不重不漏的算上所有边的置换

2019河北省大学生程序设计竞赛(重现赛)

故事扮演 提交于 2021-02-11 15:19:52
G 点我 X腿与队友到河北省来参加2019河北省大学生程序设计竞赛,然而这场比赛的题目难度实在是太高了。比赛开始一个小时后,X腿仍然没有做出一个题。这时候,X腿惊讶的发现电脑屏幕上出现了一个神奇按钮,按钮上写着”点我签到“。X腿非常兴奋,于是他点击了这个按钮,只见屏幕上的题目状态由“未提交”转变成了“答案错误”。他又点击了一下这个按钮,题目状态由“答案错误”变成了“通过”! 当题目状态为“通过”时,我们认为X腿签到成功了。 通过多次实验,X腿总结出以下经验: 当题目状态为”未提交“时,点击按钮后题目状态将变为”答案错误“。 当题目状态为”答案错误“时,点击按钮后题目状态将变为”通过“。 当题目状态为”*通过“时,点击按钮后题目状态将变为”答案错误“。 现在,已知初始的题目状态为”未提交“。由于X腿过于兴奋,点击了 n 次按钮。请问X腿签到成功了吗? 输入描述: 一行一个正整数 n,代表X腿点击了 n 次按钮。 0 ≤ n ≤ 100000 0≤n≤100000 输出描述: 输出一行。如果X腿签到成功,请你输出“ qiandaochenggong ”;否则输出" qiandaoshibai ”。(输出均不含引号) 示例1 输入 复制 3 输出 复制 qiandaoshibai 。 1 #include <iostream> 2 #include <algorithm> 3

虚拟化(7)_内存虚拟化

孤街浪徒 提交于 2021-01-30 05:48:01
1 、KSM 其实对于虚拟化KSM的原理,了解一下就好, ppt里面有原理。有空可以粘过来 承载KSM服务的有两个,ksm服务和ksmtuned服务,需要两个服务同时开启,才能够保证KSM的正常使用 systemctl status ksm systemctl status ksmtuned 关闭KSM服务 systemctl stop ksm # 停止服务 systemctl disble ksm # 禁止服务开机启动 systemctl stop ksmtuned systemctl disable ksmtuned    KSM功能可以在线开启,在KSM功能关闭的情况下,如果虚拟运行出现内存不足,可以开启KSM服务和KSMTUNED服务,(start),宿主机会逐渐合并内存页,不影响虚拟业务的正常运行   KSM会消耗一定量的计算机资源进行内存扫描,而且可能使系统频繁使用swap空间,导致虚机性能下降,因此建议仅将其应用测试环境,作为内存资源不足时的辅助功能,在生产环境中则最好将其关闭 2、内存气球 3、巨型页 巨型页指的是内存中的巨型页面,做X86系统中,默认的内存页面大小是4KB,而巨型页的大写会远超过这个值,达到2M甚至1GB的容量 巨型页的原理涉及操作系统的虚拟地址到物理地址的转化过程,操作系统为了运行多个进程,会为每个进程提供一个虚拟的进程空间。在32位操作系统上

BZOJ5287 HNOI2018毒瘤(虚树+树形dp)

女生的网名这么多〃 提交于 2021-01-21 03:55:06
  显然的做法是暴力枚举非树边所连接两点的选或不选,大力dp。考场上写的是最暴力的O(3 n-m n),成功比大众分少10分。容斥或者注意到某些枚举是不必要的就能让底数变成2。但暴力的极限也就到此为止。   每次重新dp做了大量重复的事,考虑从减少重复计算方面优化。 先跑一遍没有限制的树形dp。将非树边所连接的点拎出来建一棵虚树。注意到虚树中某点对其父亲的贡献系数(也即由该点到其父亲的链上点的dp值与其关系)是不变的,那么dp出系数,依旧暴力枚举非树边就可以了。一定程度上与noip2018d2t3有相似之处?   码起来非常长(虽然似乎并没有很难写),可能是我姿势不对。注意暴力枚举非树边时不应标记其是否强制被选,而是标记强制被选的次数,防止回溯时出问题。 #include<iostream> #include <cstdio> #include <cmath> #include <cstdlib> #include <cstring> #include <algorithm> using namespace std; #define ll long long #define N 100050 #define P 998244353 char getc(){ char c=getchar(); while ((c< ' A ' ||c> ' Z ' )&&(c< ' a ' ||c>

linux 逆向映射

流过昼夜 提交于 2020-12-15 04:39:46
逆向映射用于建立物理内存页和使用该页的进程的对应页表项之间的联系,在换出页时以便更新所有涉及的进程。得到物理页基址后,根据pfn_to_page可以将页框转换为page实例,page实例中的mapping成员,在映射匿名页面的时候该成员指向一个anon_vma结构,在映射文件页面的时候指向inode节点的address-space。这里简述一下匿名映射的情况: 一个物理页面可以同时被多个进程的虚拟地址内存映射,但一个虚拟页面同时只能有一个物理页面与之映射。 不同虚拟页面同时映射到同一物理页面是因为子进程克隆父进程 VMA ,和 KSM 机制的存在。 逆向映射实现的基础是通过struct anon_vma(简称AV)、struct anon_vma_chain(简称AVC)和sturct vm_area_struct(简称VMA)建立了联系,通过物理页面反向查找到VMA,这三个结构体的关系如下: static void anon_vma_chain_link( struct vm_area_struct *vma, struct anon_vma_chain *avc, struct anon_vma * anon_vma) { avc ->vma = vma; // 建立struct anon_vma_chain和struct vm_area_struct关联 avc ->anon

NOI2013部分题解

元气小坏坏 提交于 2020-11-27 04:51:35
Day 1 T1:向量内积 直接暴力有60。发现将n个向量合成$n\times d$的矩阵$A$,然后求$A\times A^T$,得到的矩阵包含了所有的答案。 先考虑$k=2$,将答案矩阵和全1矩阵比较,为0的地方就是答案。 回忆一个十分经典的问题:判断$A\times B$是否与$C$相等。 先随机一个行向量v,若$v\times(A\times B)=v\times A \times B\neq v\times C$,则直接返回$false$。多次随机,成功率为$1-(\frac12)^{times}$。 这种随机化算法通常用于:某对命题充分性和必要性仅具备一个,所以多做几次判定就能提高正确率。$Miller-Rabin$算法就是一个典型的例子。 回到这道题,应用lych的话: 假设对于i,我们求出i之前的所有向量与i的点积的和;如果所有的点积都>0 即=1,那么显然点积的和对二取模=(i-1)%2;否则如果≠(i-1)%2,显然i与i前面的某一个向量的点积=0,我们O(ND)寻找答案即可。但 是这样不一定能得到解,我们不妨随机打乱向量的顺序然后判断,这样至少是1-(1/2)^5的正确率了。 问题在3怎么做,因为不为0可能意味着为1或2,不能确定答案,但是发现在模意义下$1^2\equiv 2^2 (mod 3)$。所以只要平方一下就好了。 1 #include<cstdio

Codeforces Round #596 (Div. 2, based on Technocup 2020 Elimination Round 2)

独自空忆成欢 提交于 2020-11-26 04:23:08
题目链接: https://codeforces.com/contest/1247 A. Forgetting Things 思路:简单特判一下就行。 1 #include<bits/stdc++.h> 2 using namespace std; 3 int main() 4 { 5 std::ios::sync_with_stdio( false ); 6 int a, b; 7 cin >> a >> b; 8 if (a == b){ 9 cout << a* 10 + 1 << " " << b* 10 + 2 << endl;; 10 } 11 else if (b - a == 1 ) cout << a << " " << b << endl; 12 else if (a == 9 && b == 1 ) cout << " 9 10 " << endl; 13 else cout << - 1 << endl; 14 return 0 ; 15 } View Code B2. TV Subscriptions (Hard Version) 思路:尺取法,sum维护区间长度为d的元素不同的个数,用map记录区间变化时sum应该如何加减。 1 #include<bits/stdc++.h> 2 using namespace std; 3 const int maxn

随便写一写 emm...

╄→尐↘猪︶ㄣ 提交于 2020-10-24 16:17:46
1.正向问题难以解决可以反过来倒着解决。 2.注意数组大小问题,没有空间限制的时候最好开到数据上限,有利于骗分,万一暴力有点优秀呢(* ^ ▽ ^ *)。 3.多个变量防止搞混,例如结构体里和外面的。 4.做题前先考虑什么条件是无用的,显然可以转化或者“压缩”的条件就不用考虑那么麻烦了。 5.矩阵乘法记得初始化矩阵。 6.如果求前几大或前几小,但是不容易求出所有情况,从一种情况到另一种情况的转移是有序的,那么可以用优先队列先存下一部分,依次向后有序推。 7.遇到和gcd、lcm有关的以及质数合数可以想一想是否能分解质因数,可以考虑一个范围内的质数个数和题目有什么关系。 8.如果数字不是特别大,可以考虑将最大的质因数扔出来,先考虑较小的质因数。 9.数字很大并且有乘除可以考虑是不是能够用取对数的方法,转化一下。 10.对于构造问题,多想特殊情况,例如它让差为几的时候可以让一个为0,再构造一个刚好为那个差的情况。(和也类似)。也可以考虑从一个点推到另外一个点会发生什么变化,依次递推出答案。 11.如果有范围限制可以考虑k维偏序,或者用树状数组线段树限制一下,如果一个限制是有序的,可以在枚举时实现从而少考虑一个限制。 12.看到字符串想一想SAM或者trie什么的,对于SAM可以dfs遍历求出所有子串。 13.如果一条边的边权给定了一个范围但没有给实际值,那么可以考虑差分约束解决问题。

2020/5/10 模拟赛 Day6 T2 操场

戏子无情 提交于 2020-08-17 20:13:46
题面 Solution 先从n较小的情况枚举找规律 这是$n=1$时的情况,只有1种摆放方式; $$f_{1}=1$$ 这是$n=2$时的摆放方式,共有5种摆放方式; $$f_{2}=5$$ 在考虑$n=3$时的摆放方式时,可以想到用$n=2$和$n=1$时的情况进行组合 所以这是就有$2\times 1\times 5$种方式(第一列使用$n=1$时情况,2、3列使用$n=2$时情况 以及 1、2列使用$n=2$时情况,3列使用$n=1$时情况) 第2行第1列的情况是重复的,因为$n=2$中的第一种情况其实就是$n=1$的情况的拼接,所以再使用这个情况进行组合就会出现重复,所以真正能用于组合的$n=2$的情况只有后4种。 但是仍然有情况遗漏: 这两种情况无论如何都不能分割成$n=1$和$n=2$情况的组合。 $$f_{3}=f_{2}+4f_{1}+2f_{0}+3 \times 0$$ 同样地,在$n=4$时也会发现有一些情况不能由之前的任意一种情况拼接而来 $$f_{4}=f_{3}+4f_{2}+2f_{1}+3f_{0}\left ( f_{0}=1 \right )$$ 继续列举下去,会发现每一个$n\left ( n\geq 3 \right )$,当$n$为奇数,就会找到2种无法组合的情况,偶数时则会找到3种。 $$f_{n}=f_{n-1}+4f_{n-2}+2

7.5集训模拟赛8

冷暖自知 提交于 2020-08-16 03:22:08
A. 食物链 题目描述 如图所示为某生态系统的食物网示意图,据图回答此题。 现在给你n 个物种和 m条能量流动关系,求其中的食物链条数。 物种的名称为从1 到 n的编号。 m条能量流动关系形如 其中 a i ,b i 表示能量从物种a i 流向物种b i 。注意单独的一种孤立生物不算一条食物链。 输入格式 第一行两个整数n 和m ,接下来 m行每行两个整数 a i ,b i 描述m 条能量流动关系。 (保证输入数据符合生物学特点,即不存在环,且不会有重复的能量流动关系出现) 输出格式 一个整数,即食物网中的食物链条数。 样例 样例输入 10 16 1 2 1 4 1 10 2 3 2 5 4 3 4 5 4 8 6 5 7 6 7 9 8 5 9 8 10 6 10 7 10 9 样例输出 9 数据范围与提示 分析 此题就是一道简单的dfs,食物链(欺负学地理的,哼)从最低端到最顶端,最低端一定是入度为零的点,最顶端一定是出度为零的点,那么我们只需要统计从每一个低端(入度为零)到每一个顶端(出度为零)的点的有多少不同的路径。 Code #include<bits/stdc++.h> using namespace std; const int N = 2e6; int n,m; int x,y; int rd[N],cd[N]; int dp[N],head[N],cnt;