随笔分类 - int main()
摘要:现有一个由N个布尔值组成的序列A,给出一些限制关系,比如A[x]AND A[y]=0、A[x]OR A[y]OR A[z]=1、A[x] XOR A[y]=0等,要确定A[0..N-1]的值,使得其满足所有限制关系。这个称为SAT问题,特别的,若每种限制关系中最多只对两个元素进行限制,则称为2-SA...
阅读全文
摘要:洛谷2266 爱的距离 题目描述 Description 但好日子却不长久。Soha的手下大将恶魔猎手在此时背叛了他,自立为王,率领深藏在世界之轴的龙族叛变,并掳走了公主Ami。Soha在与恶魔猎手的战斗中,遭遇围杀,被困在一个荒芜人烟的大岛上。但在经过勘探后,他惊喜地发现,Ami也同时被恶魔猎手关
阅读全文
摘要:形式1 已经有函数F(n)=∑ f(d),可以导出 f(n)= ∑ μ(d)F(n/d) d|n d|n 形式2 已经有F(n)= ∑ f(d),可以导出f(n)= ∑ μ(d/n)F(d) n|d n|d bzoj2301 Problem b 题目大意:求gcd(x,y)=k(a<=x<=b,c<
阅读全文
摘要:对于一些具有决策单调性的dp题目,我们可以应用斜率优化将复杂度从O(n^2)降到O(n)。 bzoj1010 HNOI2008 玩具装箱toy 题目大意:对于一些一维长度的物品,我们可以将连续的i~j个物品放在一起,费用是(j-i+sigma lk(i<=k<=j)-L)^2,求n个物品最小费用。
阅读全文
摘要:cogs||bzoj1036 树的统计count题目大意:模板题。思路:模板题。#include#include#define maxnode 30001#define mid (l+r)/2#define inf 2100000000LLusing namespace std;struct use...
阅读全文
摘要:KMP算法 poj3461 Oulipo 题目大意:模板题。 思路:模板题。 #include<iostream> #include<cstdio> #include<cstring> using namespace std; int f[10010],ans; char s1[10000],s2[
阅读全文
摘要:SDOI一轮过去,觉得自己爆搜都会写残。。。好无奈。。。 先修课过去,觉得自己手速慢加各种爆搜残。。。好无奈。。。 day1T1 题目大意:第i(1<=i<=n)种操作为将序列从左到右划分为2^{n-i+1}段,每段恰好包括2^{i-1}个数,然后整体交换其中两段。每种操作只能用一次,问有多少种不同
阅读全文
摘要:学习了一下很基本的分块和莫队算法,因为不太会写曼哈顿距离最小生成树,所以就写了个分块版本的(分四种情况,大概这个意思吧)。。。 分块 bzoj2957 楼房重建 题目大意:在n的区间上,某一点可以升高或降低,求从(0,0)能看到的楼的栋数(只能看到顶上一点时不算看到)。 思路:其实就是求一个点i,使
阅读全文
摘要:跟随着潮流,弱弱的学习了一下主席树。明白了思想之后,第一次比较快的自己写出了代码。小专题 cogs930找第K小的数||1534K大数 题目大意:静态区间第K小的查询。 思路:裸裸的主席树模板题。 #include<iostream> #include<cstdio> #include<cstrin
阅读全文
摘要:o(n)的复杂度,筛出各种神奇。 bzoj2190仪仗队 思路:线筛求欧拉函数。 #include<iostream> #include<cstdio> using namespace std; int phi[40001]={0},prime[40001]={0}; bool flag[40001
阅读全文
摘要:今天,跟着HYM大神学习了高斯消元,思想很简单,不过用处很大,也有一些细节。 其实就是消元的思想,对n个方程不断消元,在解出一个未知数之后,回带求出其他未知数。如果回带时,我们发现方程左面为0,右面不为0,则无解;若左面为0,右面为0,则多解。 cogs1845||bzoj1013 球星空间生成器s
阅读全文
摘要:ISAP cogs885 草地排水 题目大意:赤裸裸的网络流模板题。 #include<iostream> #include<cstdio> using namespace std; int map[201][201]={0},dis[201]={0},gap[201]={0},pre[201]={
阅读全文
摘要:treap通过左右旋维护了一个二叉查找树,根据随机的优先级建立满足优先级大根堆的二叉查找树,在实践中有不错的食府,code也简单。 cogs1829 普通平衡树 题目大意:进行插入、删除、名次、前驱后继。 思路:前面的三种操作都很普通,前驱后继有两种做法(非常不正统吧。。。):1)找到这个数的名次,
阅读全文
摘要:通过前几天的一次模拟赛,初次见识到了堆的用处,虽然stl里有相应的结构,但不如自己写的灵活性高、速度快。下面附上几个练习。第三题:有n个函数,每一个函数有一个效果值,这n个函数是环形排列的,然后要求从n个函数中选出m个不相邻的函数使其效果值之和最大。思路:这个题在测试的时候直接放弃了,想写一个深搜,...
阅读全文
摘要:先简单的了解一下,双向广搜很好理解,就是从两端一起搜,如果遇到之前已经搜到过的状态,就相当于已经有解了,这样就会节省一半的内存和时间,并且代码复杂度并不高。只需要在正常的基础上多开一个域,保存这个点是从起始状态还是终止状态拓展的。当然双向广搜中状态的判断需要一些技巧,现在还没有总结出什么。 八数码问
阅读全文
摘要:第一题:给定nm的矩阵,每个格子内有一个数值,要求从第一行到第n行的没一个格子都能到的路线上最大值的最小值。思路:一开始写了一个裸裸的深搜,但是tle了(当时自己以为不会。。。)。后来听说二分答案,然后就有了一点思路。可以找到所有数值中的最大值和最小值,然后对于mid为标准,比mid小的格子可以走,...
阅读全文
摘要:康托展开的公式 把一个整数X展开成如下形式: X=a[n]*(n-1)!+a[n-1]*(n-2)!+...+a[i]*(i-1)!+...+a[2]*1!+a[1]*0! 其中,a为整数,并且0<=a[i]<i(1<=i<=n) 康托展开的应用实例 {1,2,3,4,...,n}表示1,...
阅读全文
摘要:挑战编程程序设计 搜索练习8.6.1棋盘上的象题目大意:在n*n的棋盘上放象,每个象的对角线上不能有别的象,求总共的方案数。思路:搜索,肯定超时。dp~~排列组合~~又不会,只能打表了,好凶残。直接a(放0头象竟然是1种方案)。#include#include#includeusing namesp...
阅读全文
摘要:前缀和数组是十分基本和简单的一种工具,但是要想真正用好,却不容易。在平时的训练中有很多的问题都要用到前缀和。我们通过一个小的例子来看一下cogs1190最大和题目大意:N个数围成一圈,要求从中选择若干个连续的数(注意每个数最多只能选一次)加起来,问能形成的最大的和。思路:一看到这个题,竟然想到了线段...
阅读全文
摘要:D1T1 水水的模拟。。。 #include<iostream> #include<cstdio> #include<cstdlib> using namespace std; int a[500]={0},b[500]={0}; int ju(int aa,int bb) { if (aa==0)
阅读全文