上一页 1 ··· 53 54 55 56 57 58 59 60 61 ··· 79 下一页
摘要: (本文语言不通,细节省略较多,不适合初学者学习) 解决一类简单的sat问题。 每个变量有0/1两种取值,m个限制条件都可以转化成形如:若x为0/1则y为0/1等等(x可以等于y) 具体: 每个变量拆成i,i+n两个点,表示取0和取1 对于x为0,y为1的情况,从x向y+n连接一条边, 发现有逆命题: 阅读全文
posted @ 2018-10-23 16:04 *Miracle* 阅读(433) 评论(0) 推荐(0) 编辑
摘要: 普通nim游戏: n堆石子,每个人每次对着一堆拿若干个。不能拿者判输。 只有两种情况,先手必胜,先手必败。 先手必胜当且仅当:a1^a2^...^an!=0 证明: 设=x(x不为0),选择最高位和x一样的ai,显然有ai^x<ai 阶梯型nim游戏 阶梯型nim游戏:高度单调的阶梯。每次只能把a[ 阅读全文
posted @ 2018-10-22 16:56 *Miracle* 阅读(421) 评论(0) 推荐(1) 编辑
摘要: [POI2015]ODW 喵锟讲过。分块。 N>=blo,那就暴力倍增往上跳。O(N/blo*logN) N<blo,预处理,f[i][j]表示,i往上跳,每次跳j步,到根节点为止,权值和。O(N*blo)(预处理复杂度) 平衡一下:N/blo*logN=N*blo blo=sqrt(NlogN) 阅读全文
posted @ 2018-10-22 14:13 *Miracle* 阅读(158) 评论(0) 推荐(0) 编辑
摘要: 爆栈指递归中,存储的信息量大于系统栈的内存。 信息量包括元素编号,每一层中开的变量。 和递归的层数正相关。 (虽然noip一般开栈) 1.手写栈 while(top){ int x=sta[top]; for(each son) if(has son){ //blablabla sta[++top] 阅读全文
posted @ 2018-10-22 11:02 *Miracle* 阅读(4026) 评论(0) 推荐(0) 编辑
摘要: [POI2008]TRO-Triangles https://www.cnblogs.com/GXZlegend/p/7509699.html 平面上有N个点. 求出所有以这N个点为顶点的三角形的面积和 N<=3000 计算几何。 只需要用到S=|x1y2-x2y1|/2 开始对所有点按照x排序。 阅读全文
posted @ 2018-10-21 17:37 *Miracle* 阅读(195) 评论(0) 推荐(0) 编辑
摘要: 状态优化 bzoj2064 分裂 存在通解:把原始集合都合并,再一一拆开。 如果可以划分一些集合,使得原始集合和目标集合对应的小集合相等,那么可以节省操作次数。 ans=(n1-1)+(n2-1)-2*(x-1) x为划分的相同集合数。 n<=10,状压 另外,其实原始集合一个x,就是往右x步,目标 阅读全文
posted @ 2018-10-21 12:07 *Miracle* 阅读(393) 评论(0) 推荐(0) 编辑
摘要: [POI2005]BANK-Cash Dispenser 有多少个4位字符串是所有操作序列的子串。 10^4枚举字符串。暴力判断会TLE 发现,我们就是在每个操作序列中不断找第一个出现的c字符。 预处理每个位置p的下一个c字符在哪里。nxt[N][10000][10] 然后O(N*4)判断。 [PO 阅读全文
posted @ 2018-10-20 17:55 *Miracle* 阅读(221) 评论(0) 推荐(0) 编辑
该文被密码保护。 阅读全文
posted @ 2018-10-20 15:33 *Miracle* 阅读(3) 评论(0) 推荐(0) 编辑
摘要: 计算机为什么用二进制? 因为二进制简单。每个位置只有0/1两种情况。 并且任何数都可以表示成二进制。 0/1代表开/关,选/不选都有优势。 例题: 1. Single Number■ 有一个数组,里面的元素每个都出现了两次,除了一个特殊的,求这个特殊元素。 直接异或 Single Number II 阅读全文
posted @ 2018-10-19 17:13 *Miracle* 阅读(161) 评论(0) 推荐(0) 编辑
该文被密码保护。 阅读全文
posted @ 2018-10-19 16:10 *Miracle* 阅读(2) 评论(0) 推荐(0) 编辑
上一页 1 ··· 53 54 55 56 57 58 59 60 61 ··· 79 下一页