
SOS DP
天翼之城*
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Codeforces 1326 F1. Wise Men (Easy Version) —— SOS DP,有丶东西
This way题意:现在有n个人,告诉你他们相互是否认识。你要构造一个长度为n的p序列,对于s状态(s长度为n-1),第i位是0表示第p[i]和p[i+1]这个人不认识,否则就认识。现在对于s∈[0,2n−1]s∈[0,2^{n-1}]s∈[0,2n−1],问你每种情况你能构造多少个p序列题解:有点做不出来…这个做法的空间赋予情况真的是太强了dp[i][j][k]表示当前人的状态为i,最后一个人是j,满足的s状态的前__builtin_popcount(i)位为k的时候,答案是多少转移原创 2020-12-15 16:25:19 · 218 阅读 · 0 评论 -
[NOI Online #3 提高组]优秀子序列欧拉函数,SOS DP
This way题意:题解:首先要了解的一个概念就是:枚举[1,2x][1,2^x][1,2x]的所有状态的子状态的时间复杂度是3x3^x3x左右。那么我们这道题肯定不能for一遍n然后枚举所有当前点的补集。然后 发现a的数据范围是2e5,那么就可以先记录所有状态有多少种,然后再枚举所有状态的同时枚举补集进行转移。最后0要特别的运算一下因为它每一个取不取都不会对结果造成影响。#include<bits/stdc++.h>using namespace std;const int原创 2020-09-24 09:44:31 · 184 阅读 · 1 评论 -
Codeforces 1234 F Yet Another Substring Reverse —— SOSDP
This way题意:给你一个串,现在让你翻转一个子串,使得串内所有元素不同的子串最长。问你长度是多少。题解:首先我们发现,所谓翻转子串,其实就是让你找到两个不重叠子串,使得他们没有一个元素相同并且最长。那么这道题就非常好做了,而且它告诉你只会出现20种字符,好像是在暗示着什么。那么首先想到状压,然后不重复出现的话,我们就可以想到枚举每个位置,然后暴力枚举所有长度,因为不会超过20,这样...原创 2020-02-09 12:10:40 · 204 阅读 · 0 评论 -
Codeforces Contest 1208 F Bits And Pieces —— SOSDP
This way题意:给你一些数,让你求ai∣(aj&ak)a_i|(a_j\&a_k)ai∣(aj&ak)的最大值,i<j<k题解:这里有一篇可看的博客:This waySOSDP求的是也就是mask集合的所有子集的值的和dp[s][j]就表示与集合s前i位不同的所有子集的前缀和。那么这道题从后往前做,也就是枚举aia_...原创 2019-09-02 20:36:46 · 362 阅读 · 1 评论 -
Hacker Earth: SPECIAL PAIRS —— SOSDP(真·高维前缀和)
This way题意:给你一些数,问你能找出几对数使得aixoraj=0a_{i} xor a_{j}=0aixoraj=0题解:说是说SOSdp,但是这道题目也就是一个高维前缀和,只需要将s的所有子状态转移到它身上即可,然后枚举所有状态。#include<bits/stdc++.h>using namespace std;#define ll long longi...原创 2019-09-02 21:28:18 · 590 阅读 · 0 评论 -
Codeforces Contest 165 E Compatible Numbers —— SOSDP
This way题意:给你一些数,问你每个数在这个数组中是否有存在一个数使得他们的与为0题解:依旧是SOSDP,这次的高维前缀和记录的是存在的状态#include<bits/stdc++.h>using namespace std;const int N=(1<<22);int dp[N],a[N];int main(){ int n,x; ...原创 2019-09-03 08:24:04 · 230 阅读 · 0 评论 -
Codeforces Contest 383 E Vowels SOSDP+容斥
This way题意:给你一些只含3个字符的字符串(只有字母表中前24个字符),现在自定义元音字符,如果一个字符串中含有至少一个元音字符,那么称为这个字符串是有效的,现在问你对于2242^{24}224种元音定义的可能,输出每种可能性所含有效元音字符串的异或和。题解:SOSDP的本质就是高位前缀和,那么对于这道题,我们只需要判断一下每个字符串中有哪些不同的有效状态即可,同时要使用容斥,因为...原创 2019-09-03 11:38:50 · 285 阅读 · 0 评论 -
CodeChef: Covering Sets —— SOSDP+容斥
This way题意:现在有2n2^{n}2n种状态,从0开始,定义三元组{a,b,c}\{a,b,c\}{a,b,c}包括ddd当且仅当ddd是a∣b∣ca|b|ca∣b∣c的子集。a属于f()函数,b属于g()函数,c属于r()函数。现在给你所有的f(x),g(x),r(x)的返回值0<=x<2n0<=x<2^n0<=x&l...原创 2019-09-03 20:43:36 · 345 阅读 · 0 评论 -
Codeforces 1117 F Crisp String —— SOSDP
This way题意:给你一个串,然后给你每两种字符之间的关系,1表示可以相邻,否则是0,。你每次可以消去一种字符,剩下的字符按照原来的顺序拼接起来,并且满足字符之间的关系,问你最后这个串的长度最短是多少。题解:如果当前有这么一个串:acbeda假设ab是不能相邻的,那么假设0表示未消去,1表示消去,那么00100,00011这两个是不合法的,并且所有包含它们的状态都是不合法的,我们将...原创 2019-10-02 15:48:08 · 321 阅读 · 0 评论