随笔分类 - AAA模版
摘要:1.POJ上G++只能用 %f,C++可以%lf 2.连续区间异或和最大,我只会一个套路,就是01字典树了! 3.行和列是无关的,因此有时候可以把棋盘原题分解成两个一维问题。r[N]、c[N]... 4.线段树:当前区间加上了懒惰标记的值实际上加的值是lazy_tag 区间长度 5.线段树:成段更新
阅读全文
摘要:我们知道,BFS是往广处去搜索,我们把这想象成一个以起点为圆心的一个圆,每向前走一步,就是圆的半径增大一个单位,而圆的每个单位面积上是一种状态,当圆增大到目标点那么大时,找到了答案,搜索结束。那么显然的,当半径较大时,每走一步就会有十分大量的状态需要来储存( S=πr² )。通常的,我们用“判重”的
阅读全文
摘要:康托展开(有关全排列) 康托展开:已知一个排列,求这个排列在全排列中是第几个 康托展开逆运算:已知在全排列中排第几,求这个排列 定义: X=an (n 1)!+an 1 (n 2)!+...+ai (i 1)!+...+a2 1!+a1 0! ai为整数,并且0康托展开有啥用呢? 维基:n位(0~n
阅读全文
摘要:(POJ)[http://poj.org/problem?id=2387] Til the Cows Come Home Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 69789 Accepted: 23386 Descript
阅读全文
摘要:Input 5 7 1 2 2 3 3 4 1 3 4 1 1 5 4 5 output 1 5 3 4 2 include using namespace std; const int maxn = 150; const int maxm = 1050; int n, m;//顶点数,边数 int
阅读全文
摘要:我们首先来看一下什么是前向星. 前向星是一种特殊的边集数组,我们把边集数组中的每一条边按照起点从小到大排序,如果起点相同就按照终点从小到大排序, 并记录下以某个点为起点的所有边在数组中的起始位置和存储长度,那么前向星就构造好了. 用len[i]来记录所有以i为起点的边在数组中的存储长度. 用head
阅读全文
摘要:描述 求 a 乘 b 对 p 取模的值,其中 1≤a,b,p≤10^18。 输入格式 第一行a,第二行b,第三行p。 输出格式 一个整数,表示a b mod p的值。 样例输入 2 3 9 样例输出 6
阅读全文
摘要:描述 求 a 的 b 次方对 p 取模的值,其中 1≤a,b,p≤10^9 输入格式 三个用空格隔开的整数a,b和p。 输出格式 一个整数,表示a^b mod p的值。 样例输入 2 3 9 样例输出 8
阅读全文
摘要:``` include using namespace std; const int MAXN=200005; int dp[MAXN],a[MAXN],n,ans= 100000; int main(){ scanf("%d",&n); for(int i=1;i
阅读全文
摘要:1)凡出现左括弧,则进栈; 2)凡出现右括弧,首先检查栈是否空 若栈空,则表明该“右括弧”多余, 否则和栈顶元素比较, 若相匹配,则“左括弧出栈” , 否则表明不匹配。 3)表达式检验结束时, 若栈空,则表明表达式中匹配正确, 否则表明“左括弧”有余 有种匹配是: 添加了两个变量 left 和 ri
阅读全文
摘要:Legal or Not Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 10407 Accepted Submission(s): 4876
阅读全文
摘要:思路来自:与PKU3687一样 在基本的拓扑排序的基础上又增加了一个要求:编号最小的节点要尽量排在前面;在满足上一个条件的基础上,编号第二小的节点要尽量排在前面;在满足前两个条件的基础上,编号第三小的节点要尽量排在前面……依此类推。(注意,这和字典序是两回事,不可以混淆。) 如图 1 所示,满足要求
阅读全文
摘要:"hihocoder 1174" [算法]: 1. 计算每一个点的入度值deg[i],这一步需要扫描所有点和边,复杂度O(N+M)。 2. 把入度为0的点加入队列Q中,当然有可能存在多个入度为0的点,同时它们之间也不会存在连接关系,所以按照任意顺序加入Q都是可以的。 3. 从Q中取出一个点p。对于每
阅读全文
摘要:【模板】:输入n个顶点,m条边。 接下来输入每一条边的两个顶点。 输出遍历的顺序。 include include bool book[100];//bool mark[100]; int t[500][500];//int ljjz[500][500]; using namespace std;
阅读全文
摘要:void dfs(int u,int fa) { vis[u]=1; //邻接表枚举i的每个相邻节点 for(int i=link[u]; i; i=e[i].next) { int v = e[i].u; if(v!=fa) dfs(v,u); } } int pos;//记录重心的编号 void
阅读全文
摘要:巴什博弈: 只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个。最后取光者得胜。 显然,如果n=m+1,那么由于一次最多只能取m个,所以,无论先取者拿走多少个,后取者都能够一次拿走剩余的物品,后者取胜。 因此我们发现了如何取胜的法则:如果n=(m+1) r + s,(r为任
阅读全文
摘要:引导游戏 1. 玩家:2人 2. 道具:23张扑克牌 3. 规则: 游戏双方轮流取牌 每人每次仅限于取1张、2张或3张 扑克牌取光,则游戏结束 最后取牌的一方为赢家。 什么是组合游戏? 有两个玩家 游戏的操作状态是一个有限的集合(比如:限定大小的棋盘) 游戏双方轮流操作 双方的每次操作必须符合游戏规
阅读全文
摘要:1、关于如何判定多边形是顺时针还是逆时针对于凸多边形而言,只需对某一个点计算叉积 = ((xi xi 1),(yi yi 1)) x ((xi+1 xi),(yi+1 yi)) = (xi xi 1) (yi+1 yi) (yi yi 1) (xi+1 xi) 如果上式的值为正,逆时针;为负则是顺时
阅读全文
摘要:当几个数连续乘最后取模时,可以将每个数字先取模,最后再取模,即%对于 具有结合律。但是如果当用来取模的数本身就很大,采取上述方法就不行了。这个时候可以借鉴快速幂取模的方法,来达到大数相乘取模的效果。
阅读全文
摘要:求划分因子乘积最大的一个划分及此乘积 问题简述:给定一个正整数n, 则在n所有的划分中, 求因子乘积最大的一个划分及此乘积。例如:8 = {8}, {7, 1}, {6, 2}, {5, 3}, {4, 4}, {3, 3, 2}, {2, 2, 2, 2} 等,那么在这些当中,3 3 2 的乘积最
阅读全文

浙公网安备 33010602011771号