題意:
給乙個字串,問有多少個區間能構成回文串。
構成要求只要滿足存在所有種類字元數量相等,或者只存在一種的個數是奇數。
思路:
由於字元比較少,考慮 252
狀壓,long long 還是吃的消的。
然後一直加入狀態,
先檢查這個狀態是否滿足。
我們可以看到對於狀態(單純考慮4位):
1 1 1 0然後這裡很難受的要用手寫hash,map會超時。如何從他割掉一些狀態達到滿足,可以看到有1 0 0 0這個是吧,還有0 0 1 0/0 0 1 0/0 0 0 1
我們知道a ^ b = c,則a ^ c = b 。
那麼我們拿當前狀態抑或那些滿足的狀態就好了呀~查詢那些」要割的狀態」當前有多少
而且要注意:
(1 << j) 如果爆了int 需要 (1**ll** << j)
#include
using
namespace
std;
typedef
long
long ll;
const ll mod = 1e6+7;
const
int n=3e5+10;
bool vis[55];
char ch[n];
int n;
struct asdeg[2000010];
int head[1000007],sizes;
void init()
void add(ll a)
}eg[sizes].v = 1;
eg[sizes].id = a;
eg[sizes].nex = head[pos];
head[pos] = sizes++;
return;
}ll getv(ll a)
return0;}
long
long getch(char x)
int main()
return
0;}
狀態壓縮 uva11795
題意 第一行資料總數 接下來輸入機械人個數 再一行告訴你人能殺死哪些機械人,再n行告訴你機械人的 能怎麼互相殺死 思路 狀態壓縮 dp 偽轉移方程 dp 當前狀態 sum,其中i屬於 0,n 批註比較多的 includeusing namespace std int attack 17 每個機械人能...
UVa 10944 狀態壓縮DP
第一道狀態壓縮dp題,感覺要好好學習這種思維方式 首先設l的位置為 pointx 0 pointy 0 其他節點的位置為 pointx i pointy i 然後求出各個節點之間的距離dis i j max 我們用乙個n位2進製數 bn 1,b0 表示堅果收集情況的組合狀態 其中bi 0表示第i 1...
UVA 6625 狀態壓縮dp
這個題目的意思是給定k,n k,n 7 並給定k行每行有幾個連續的空格,所有的行左對齊,每一行最多7個,下面的行的空格數 上面相鄰行的空格數 給定乙個填數字的規則,當對於任意位置i,j num i j num i 1 j num i j num i j 1 問有 只用數字1 n 有多少種填滿空格的方...