树上启发式合并

强大的解决对于子树的询问问题。

有个英文名字叫 dsu on tree。

一种是基于重链剖分的,一种是基于set map的启发式合并的。

第一种就是先走轻边,再走重边,重边的不改回来,这样修改次数就是 $logn$ 次的。

第二种就是看set map的size,把size小的并到大的上。

 

600E - Lomsat gelral

模板题啦

分享图片
#include <bits/stdc++.h>
#define ll long long

const int N = 1e5 + 7;

int n, cc[N], col[N], son[N], sz[N], skip[N];
ll ans[N];
std::vector<int> G[N];

void dfs1(int u, int fa = 0) {
    sz[u] = 1;
    for (auto v: G[u]) {
        if (v == fa) continue;
        dfs1(v, u);
        sz[u] += sz[v];
        if (sz[v] > sz[son[u]]) son[u] = v;
    }
}

ll sum;
int cx;

void edt(int u, int fa, int k) {
    cc[col[u]] += k;
    if (k > 0 && cc[col[u]] >= cx) {
        if (cc[col[u]] > cx) 
            sum = 0, cx = cc[col[u]];
        sum += col[u];
    }
    for (auto v: G[u])
        if (v != fa && !skip[v])
            edt(v, u, k);
}

void dfs(int u, int fa = 0, bool kep = 0) {
    for (auto v: G[u]) 
        if (v != fa && v != son[u])
            dfs(v, u);
    if (son[u])
        dfs(son[u], u, 1), skip[son[u]] = 1;
    edt(u, fa, 1);
    ans[u] = sum;
    if (son[u])
        skip[son[u]] = 0;
    if (!kep)
        edt(u, fa, -1), cx = sum = 0;
}

int main() {
    scanf("%d", &n);
    for (int i = 1; i <= n; i++) 
        scanf("%d", col + i);
    for (int i = 1, u, v; i < n; i++) {
        scanf("%d%d", &u, &v);
        G[u].push_back(v);
        G[v].push_back(u);
    }
    dfs1(1);
    dfs(1);
    for (int i = 1; i <= n; i++)
        printf("%lld%c", ans[i], " \n"[i == n]);
    return 0;
}
View Code

 

570D - Tree Requests

把询问离线,一些字母能组成回文串,即出现偶数次的字母不能超过一个,那么对每一个深度用一个26位的二进制数表示一个字母出现的奇偶性,记为 $cnt[dep]$ 即可。

分享图片
#include <bits/stdc++.h>
#define pii pair<int, int>
#define fi first
#define se second

const int N =  5e5 + 7;
std::vector<int> G[N];
std::vector<std::pii> que[N];
int cnt[N], n, m, dep[N], sz[N], son[N];
char s[N];
bool ans[N], skip[N];

void dfs1(int u, int d) {
    dep[u] = d;
    sz[u] = 1;
    for (auto v: G[u]) {
        dfs1(v, d + 1);
        sz[u] += sz[v];
        if (sz[v] > sz[son[u]]) son[u] = v;
    }
}

void edt(int u) {
    cnt[dep[u]] ^= (1 << (s[u] - a));
    for (auto v: G[u]) 
        if (!skip[v]) edt(v);
}

bool check(int d) {
    int res = 0;
    for (int i = 0; i < 26; i++)
        if (cnt[d] >> i & 1)
            res++;
    return res <= 1;
}

void dfs(int u, int keep = 0) {
    for (auto v: G[u])
        if (v != son[u]) dfs(v, 0);
    if (son[u])
        dfs(son[u], 1), skip[son[u]] = 1;
    edt(u);
    for (auto p: que[u])
        ans[p.se] = check(p.fi);
    if (son[u]) skip[son[u]] = 0;
    if (!keep)
        edt(u);
}

int main() {
//    freopen("in.txt", "r", stdin);
    scanf("%d%d", &n, &m);
    for (int i = 2; i <= n; i++) {
        int x;
        scanf("%d", &x);
        G[x].push_back(i);
    }
    scanf("%s", s + 1);
    for (int i = 1, u, h; i <= m; i++) {
        scanf("%d%d", &u, &h);
        que[u].push_back(std::pii(h, i));
    }
    dfs1(1, 1);
    dfs(1);
    for (int i = 1; i <= m; i++)
        puts(ans[i] ? "Yes" : "No");
    return 0;
}
View Code

 

Sgu507

想用重链剖分的写法。用一个multiset维护出现的数字,一个multiset维护每个插入的数和附近两个数的差值.

但是这跟插入顺序有关,插入的时候正着插入,删除的时候倒着删除,然后WA on 20了... 正着删除有RE on 20了...

看了一下别人的解法就是,每个结点维护一个set,发现这个set元素个数最多是所有叶子个数,空间能接受,然后就启发式合并就OK了。

分享图片
#include <bits/stdc++.h>

namespace IO {
    void read() {}
    template <typename T, typename... T2>
    inline void read(T &x, T2 &... oth) {
        T f = 1; x = 0;
        char ch = getchar();
        while (!isdigit(ch)) { if (ch == -) f = -1; ch = getchar(); }
        while (isdigit(ch)) { x = x * 10 + ch - 48; ch = getchar(); }
        x *= f;
        read(oth...);
    }
} // using namespace IO
#define read IO::read
#define print IO::print
#define flush IO::flush

const int N = 1e5 + 7;
const int INF = 2147483647;
std::vector<int> vec[N];
std::set<int> st[N];
int n, m, color[N], ans[N];

int merge(int u, int v) {
    if (st[u].size() < st[v].size())
        std::swap(st[u], st[v]);
    int res = INF;
    for (std::set<int>::iterator it = st[v].begin(); it != st[v].end(); it++) {
        auto i = st[u].lower_bound(*it);
        if (i == st[u].begin()) {
            res = std::min(res, *i - *it);
        } else if (i == st[u].end()) {
            i--;
            res = std::min(res, *it - *i);
        } else {
            res = std::min(res, *i - *it);
            i--;
            res = std::min(res, *it - *i);
        }
        st[u].insert(*it);
    }
    st[v].clear();
    return res;
}

void dfs(int u) {
    ans[u] = INF;
    if (vec[u].size() == 0) {
        st[u].insert(color[u]);
        return;
    }
    for (int v: vec[u]) {
        dfs(v);
        ans[u] = std::min(ans[u], ans[v]);
        ans[u] = std::min(ans[u], merge(u, v));
    }
}

int main() {
    read(n, m);
    for (int i = 2; i <= n; i++) {
        int u;
        read(u);
        vec[u].push_back(i);
    }
    for (int i = n - m + 1; i <= n; i++)
        read(color[i]);
    dfs(1);
    for (int i = 1; i <= n - m; i++)
        printf("%d%c", ans[i], " \n"[i == n - m]);
    return 0;
}
View Code

 

HackerEarth, The Grass Type

这个就是每个结点维护一个map表示其子树钟出现过的数字以及出现的次数。

然后根据合并前枚举小的map里面的每个元素,看看大的map中能与其相乘成为当前结点的值的就行了。

分享图片
#include <bits/stdc++.h>
#define ll long long

const int N = 1e5 + 7;
std::map<int, int> mp[N];
int n, val[N];
std::vector<int> vec[N];
ll ans;

void merge(int u, int v) {
    if (mp[u].size() < mp[v].size()) std::swap(mp[u], mp[v]);
    for (auto p: mp[v]) {
        if (val[u] % p.first == 0)
            ans += 1LL * p.second * mp[u][val[u] / p.first];
    }
    for (auto p: mp[v]) 
        mp[u][p.first] += p.second;
    mp[v].clear();
}

void dfs(int u, int fa) {
    mp[u][val[u]] = 1;
    for (int v: vec[u]) {
        if (v == fa) continue;
        dfs(v, u);
        merge(u, v);
    }
}

int main() {
    scanf("%d", &n);
    for (int i = 1; i < n; i++) {
        int u, v;
        scanf("%d%d", &u, &v);
        vec[u].push_back(v);
        vec[v].push_back(u);
    }
    for (int i = 1; i <= n; i++)
        scanf("%d", val + i);
    dfs(1, 0);
    printf("%lld\n", ans);
    return 0;
}
View Code

 

246E - Blood Cousins Return

对每一个深度用一个map维护出现的字符串以及出现的次数,然后然后就做完了。

分享图片
#include <bits/stdc++.h>
#define pii pair<int, int>
#define fi first
#define se second

const int N = 1e5 + 7;
char s[N][22];
std::vector<int> vec[N];
std::vector<std::pii> query[N];
std::map<std::string, int> mp[N];
int n, son[N], sz[N], dep[N], ans[N], root, cnt[N];
bool skip[N];

void dfs1(int u, int d) {
    sz[u] = 1;
    dep[u] = d;
    son[u] = -1;
    for (int v: vec[u]) {
        dfs1(v, d + 1);
        sz[u] += sz[v];
        if (son[u] == -1 || sz[son[u]] < sz[v]) son[u] = v;
    }
}

void edt(int u, int k) {
    mp[dep[u]][s[u]] += k;
    int w = mp[dep[u]][s[u]];
    if (k == 1 && w == 1) cnt[dep[u]]++;
    if (k == -1 && w == 0) cnt[dep[u]]--;
    assert(cnt[dep[u]] >= 0);
    for (int v: vec[u])
        if (!skip[v])
            edt(v, k);
}

void dfs(int u, bool keep = 0) {
    for (int v: vec[u])
        if (v != son[u])
            dfs(v);
    if (son[u] != -1)
        dfs(son[u], 1), skip[son[u]] = 1;
    edt(u, 1);
    for (auto p: query[u]) 
        ans[p.se] = cnt[dep[u] + p.fi];
    if (son[u] != -1)
        skip[son[u]] = 0;
    if (!keep)
        edt(u, -1);
}

int main() {
    scanf("%d", &n);
    for (int i = 1, u; i <= n; i++) {
        scanf("%s%d", s[i], &u);
        vec[u].push_back(i);
    }
    int m;
    scanf("%d", &m);
    for (int i = 1; i <= m; i++) {
        int u, k;
        scanf("%d%d", &u, &k);
        query[u].push_back(std::pii(k, i));
    }
    dfs1(0, 0);
    dfs(0, 1);
    for (int i = 1; i <= m; i++)
        printf("%d\n", ans[i]);
    return 0;
}
View Code

 

208E - Blood Cousins

先转换一下询问,把 $v_i$ 往上跳 $p_i$ 步得到 $u_i$,变成询问 $u_i$ 有多少个 $p_i$ 级儿子。然后就做完了。

分享图片
#include <bits/stdc++.h>
#define pii pair<int, int>
#define fi first
#define se second

const int N = 1e5 + 7;
int dep[N], son[N], sz[N], n, fa[N][20], ans[N];
bool skip[N];
std::vector<int> vec[N];
std::vector<std::pii> query[N];

void dfs1(int u, int pre = 0, int d = 0) {
    dep[u] = d;
    fa[u][0] = pre;
    for (int i = 1; i <= 18; i++) {
        fa[u][i] = fa[fa[u][i - 1]][i - 1];
        if (!fa[u][i]) break;
    }
    sz[u] = 1;
    son[u] = -1;
    for (int v: vec[u]) {
        dfs1(v, u, d + 1);
        sz[u] += sz[v];
        if (son[u] == -1 || sz[son[u]] < sz[v])
            son[u] = v;
    }
}

int jump(int u, int k) {
    for (int i = 18; ~i; i--)
        if (k >> i & 1)
            u = fa[u][i];
    return u;
}

int cnt[N];

void edt(int u, int k) {
    cnt[dep[u]] += k;
    for (int v: vec[u])
        if (!skip[v])
            edt(v, k);
}

void dfs(int u, bool keep = 0) {
    for (int v: vec[u])
        if (v != son[u])
            dfs(v);
    if (son[u] != -1) 
        dfs(son[u], 1), skip[son[u]] = 1;
    edt(u, 1);
    for (auto p: query[u]) {
        ans[p.se] = cnt[dep[u] + p.fi] - 1;
    }
    if (son[u] != -1)
        skip[son[u]] = 0;
    if (!keep)
        edt(u, -1);
}

int main() {
    scanf("%d", &n);
    for (int i = 1; i <= n; i++) {
        int u;
        scanf("%d", &u);
        vec[u].push_back(i);
    }
    int m;
    scanf("%d", &m);
    dfs1(0);
    for (int i = 1; i <= m; i++) {
        int u, k;
        scanf("%d%d", &u, &k);
        u = jump(u, k);
        if (u) query[u].push_back(std::pii(k, i));
    }
    dfs(0, 1);
    for (int i = 1; i <= m; i++)
        printf("%d%c", ans[i], " \n"[i == m]);
    return 0;
}
View Code

 

待续...

相关文章
相关标签/搜索
每日一句
    每一个你不满意的现在,都有一个你没有努力的曾经。
公众号推荐
   一个历史类的公众号,欢迎关注
一两拨千金
香港蓝月亮精选免费资料大全,香港蓝月亮精选免费资料大全期期准app预约 微博| 手游| 三亚市| 全南县| 祁东县| 营口市| 阿合奇县| 驻马店市| 浑源县| 梁河县| 崇义县| 锦屏县| 临桂县| 宁海县| 青田县| 黎平县| 根河市| 海门市| 奇台县| 天峨县| 贵溪市| 手游| 河西区| 博爱县| 泸水县| 仁寿县| 许昌市| 大余县| 渑池县| 尼勒克县| 永新县| 大连市| 澳门| 治县。| 四子王旗| 九江县| 河南省| 胶州市| 广南县| 措勤县| 襄汾县| 自治县| 叙永县| 新河县| 南木林县| 青海省| 双柏县| 芮城县| 海淀区| 临夏市| 元阳县| 武隆县| 安康市| 嵩明县| 碌曲县| 同德县| 昌吉市| 贵定县| 牙克石市| 漾濞| 汉寿县| 鄯善县| 伊春市| 吴旗县| 昭觉县| 崇义县| 宣化县| 大同市| 乡宁县| 基隆市| 阿瓦提县| 昌邑市| 天长市| 文成县| 曲水县| 平阴县| 海淀区| 若尔盖县| 东丽区| 墨竹工卡县| 温泉县| 屯留县| 平江县| 家居| 屯门区| 铜川市| 成武县| 易门县| 满城县| 烟台市| 龙门县| 会昌县| 景谷| 怀集县| 小金县| 安庆市| 昌宁县| 陆丰市| 德州市| 绍兴市| 无极县| 育儿| 丰都县| 太康县| 富源县| 桓台县| 宣武区| 垦利县| 特克斯县| 盐边县| 嵊州市| 邯郸市| 惠安县| 桦川县| 杨浦区| 旅游| 广汉市| 阆中市| 聂荣县| 方山县| 东莞市| 育儿| 上林县| 调兵山市| 灯塔市| 香格里拉县| 大洼县| 嘉祥县| 油尖旺区| 武城县| 平陆县| 郧西县| 武山县| 临海市| 思南县| 库尔勒市| 濮阳市| 叶城县| 鹤壁市| 台北县| 东港市| 泸溪县| 漳浦县| 旬邑县| 长顺县| 靖西县| 石首市| 当阳市| 普兰店市| 恩平市| 淄博市| 招远市| 敖汉旗| 西安市| 义乌市| 北辰区| 光山县| 玛曲县| 松滋市| 游戏| 荆州市| 屯门区| 个旧市| 栖霞市| 鲁山县| 南岸区| 图木舒克市| 东平县| 丹江口市| 肃南| 长垣县| 崇仁县| 开平市| 抚顺县| 尚志市| 永丰县| 长白| 小金县| 怀集县| 苍南县| 梧州市| 双鸭山市| 闽侯县| 日照市| 六盘水市| 长治县| 拉孜县| 枣阳市| 商河县| 沙坪坝区| 贵港市| 陆河县| 彭阳县| 柘荣县| 朝阳区| 湘乡市| 宜阳县| 长岛县| 虞城县| 屏山县| 永仁县| 通城县| 扎赉特旗| 台湾省| 京山县| 阆中市| 乐陵市| 镶黄旗| 乌拉特后旗| 保康县| 东丽区| 南川市| 莱州市| 海晏县| 遂溪县| 哈巴河县| 罗甸县| 嵊泗县| 丹阳市| 富平县| 萨迦县| 高州市| 汤阴县| 原阳县| 屏东县| 灵丘县| 安丘市| 尼木县| 汨罗市| 二连浩特市| 平和县| 清原| 龙口市| 聊城市| 浮梁县| 新和县| 峡江县| 陕西省| 阿巴嘎旗| 荣成市| 贵南县| 乌拉特前旗| 华宁县| 永丰县| 奉化市| 土默特右旗| 鄢陵县| 济阳县| 潞城市| 方山县| 普兰店市| 南召县| 阳曲县| 苍梧县| 鹤峰县| 慈利县| 郸城县| 永顺县| 石嘴山市| 微山县| 建德市| 隆子县| 安阳市| 铜川市| 徐水县| 泾阳县| 息烽县| 开封县| 贵港市| 河源市| 曲沃县| 阳曲县| 天门市| 静宁县| 四川省| 南汇区| 镇坪县| 安康市| 河池市| 宜宾县| 乡宁县| 江口县| 小金县| 长宁区| 靖西县| 沈阳市| 沙田区| 麻江县| 金塔县| 彩票| 大厂| 涟源市| 漳浦县| 红桥区| 山丹县| 祁连县| 静乐县| 青铜峡市| 衡阳市| 高碑店市| 弋阳县| 平阴县| 临潭县| 芒康县| 青浦区| 洪湖市| 布拖县| 盐源县| 凤城市| 白城市| 四平市| 嘉义县| 阿克| 周宁县| 柳州市| 宜兰市| 天全县| 临江市| 吴旗县| 晋州市| 江西省| 绥芬河市| 广汉市| 津市市| 巩义市| 噶尔县| 长海县| 太和县| 乳山市| 奎屯市| 贺州市| 永泰县| 璧山县| 汶上县| 泰顺县| 平昌县| 乐清市| 赤水市| 黄骅市| 昆明市| 兴安县| 荣成市| 禄丰县| 象山县| 乌拉特前旗| 五原县| 台江县| 巴青县| 扶风县| 华宁县| 夏津县| 滨州市| 九台市| 怀来县| 正定县| 太原市| 江津市| 曲靖市| 兰溪市| 白沙| 永兴县| 福安市| 二手房| 杭锦旗| 南川市| 金昌市| 无棣县| 三原县| 阳新县| 广安市| 茶陵县| 漳州市| 新昌县| 长葛市| 平罗县| 德令哈市| 洛宁县| 贺兰县| 穆棱市| 台安县| 徐闻县| 海南省| 辉南县| 黑龙江省| 呼玛县| 通榆县| 股票| 宜丰县| 织金县| 德惠市| 那曲县| 河池市| 报价| 三河市| 嘉义市| 科技| 五大连池市| 浦城县| 招远市| 邯郸市| 北京市| 遂川县| 九龙坡区| 宾川县| 长武县| 通海县| 张家界市| 田林县| 会东县| 黎川县| 台湾省| 静宁县| 龙州县| 锡林浩特市| 西藏| 盘山县| 临城县| 鄯善县| 前郭尔| 乳源| 潞城市| 门头沟区| 囊谦县| 惠安县| 文成县| 九江市| 安康市| 延寿县| 万州区| 双鸭山市| 攀枝花市| 涟源市| 石台县| 三门县| 兴安盟| 闻喜县| 玉山县| 北宁市| 额尔古纳市| 蕉岭县| 衡山县| 梧州市| 剑河县| 乃东县| 大厂| 改则县| 定西市| 临洮县| 兴海县| 东兰县| 墨玉县| 阿拉善右旗| 垦利县| 深州市| 陇西县| 汝南县| 三江| 舞钢市| 绥德县| 新巴尔虎左旗| 和顺县| 图木舒克市| 浙江省| 肇源县| 朝阳县| 晴隆县| 黄梅县| 沧源| 罗田县| 夏河县| 南皮县| 绥芬河市| 丘北县| 洛浦县| 和田市| 宁强县| 射洪县| 黄骅市| 当涂县| 灵台县| 白银市| 扶沟县| 澎湖县| 通河县| 利辛县| 东莞市| 宣恩县| 崇阳县| 金湖县| 满城县| 威信县| 怀宁县| 固镇县| 那坡县| 蓬溪县| 沙田区| 乳山市| 南投县| 岫岩| 山西省| 浏阳市| 金堂县| 全南县| 平和县| 行唐县| 镇巴县| 定南县| 贞丰县| 长武县| 柏乡县| 靖江市| 沙坪坝区| 宁强县| 峨眉山市| 莲花县| 石狮市| 中阳县| 阿图什市| 财经| 井研县| 明水县| 黔西县| 大荔县| 昔阳县| 庆元县| 盖州市| 呼玛县| 尚志市| 常州市| 密山市| 攀枝花市| 瓮安县| 莱州市| 姚安县| 宽甸| 泰来县| 安化县| 贺兰县| 五峰| 商都县| 昔阳县| 遵义县| 肥东县| 隆尧县| 庆阳市| 句容市| 福贡县| 延边| 常宁市| 宜宾市| 五原县| 辽源市| 阿城市| 砀山县| 方山县| 玛多县| 来宾市| 象山县| 宁陕县| 栖霞市| 隆林| 轮台县| 云霄县| 沙洋县| 威远县| 昭平县| 遂宁市| 卢氏县| 淅川县| 台安县| 阿克| 湘西| 白朗县| 阜宁县| 仁布县| 喀喇沁旗| 南开区| 顺昌县| 章丘市| 汝阳县| 文山县| 奉节县| 临桂县| 梨树县| 孝义市| 贡嘎县| 金门县| 洛川县| 清新县| 崇明县| 信阳市| 峨边| 沅江市| 梅州市| 宁远县| 邵阳县| 金门县| 壶关县| 伊宁县| 田东县| 浑源县| 常德市| 股票| 武定县| 历史| 永城市| 邓州市| 黑水县| 乌鲁木齐县| 清苑县| 无极县| 巍山| 新干县| 敖汉旗| 拉孜县| 汨罗市| 图木舒克市| 开阳县| 旬阳县| 遵化市| 柘荣县| 高密市| 江油市| 恩平市| 衡山县| 鹤壁市| 喀喇沁旗| 龙口市| 牙克石市| 桦川县| 西贡区| 夏邑县| 大兴区| 大余县| 蓬安县| 富阳市| 化州市| 芦山县| 个旧市| 乡城县| 雅安市| 那坡县| 金寨县| 鸡泽县| 海丰县| 外汇| 金秀| 格尔木市| 清原| 黔江区| 青海省| 丽水市| 湘潭市| 乌兰县| 青海省| 饶平县| 福州市| 广南县| 苍山县| 辽阳县| 高唐县| 合水县| 肥西县| 荣昌县| 斗六市| 肃北| 荥阳市| 平武县| 广南县| 武威市| 南投县| 怀仁县| 京山县| 丰宁| 疏勒县| 湛江市| 泰州市| 长阳| 维西| 麻栗坡县| 潼关县| 南城县| 肥东县| 金寨县| 仁化县| 黔江区| 肥西县| 河西区| 临澧县| 盘山县| 略阳县| 西丰县| 丰都县| 秦皇岛市| 伊金霍洛旗| 耿马| 安多县| 平山县| 司法| 樟树市| 孙吴县| 格尔木市| 五莲县| 高碑店市| 永平县| 泰顺县| 华池县| 溧水县| 绵阳市| 新平| 洛南县| 石楼县| 河池市| 都匀市| 清原| 清水河县| 贡觉县| 江川县| 绩溪县| 涞水县| 纳雍县| 汪清县| 屯门区| 漳平市| 泽库县| 辽宁省| 金门县| 蓝山县| 新津县| 柘城县| 乃东县| 梁平县| 阳新县| 化德县| 洞口县| 崇左市| 宝应县| 沅陵县| 安新县| 乾安县| 石楼县| 南城县| 北票市| 历史| 诸城市| 余江县| 明溪县| 新巴尔虎左旗| 治多县| 安仁县| 神池县| 龙里县| 临西县| 宜丰县| 南漳县| 舟曲县| 焉耆| 泸溪县| 内江市| 德庆县| 太湖县| 石家庄市| 白河县| 绵竹市| 锡林浩特市| 扬中市| 江川县| 西盟| 哈巴河县| 福州市| 马公市| 容城县| 准格尔旗| 灌南县| 遂川县| 涟水县| 岳阳县| 郧西县| 涡阳县| 磐石市| 怀仁县| 万宁市| 淮北市| 石棉县| 海宁市| 江山市| 福州市| 康定县| 旬邑县| 名山县| 驻马店市| 崇明县| 宜兴市| 墨玉县| 公安县| 台北县| 绥宁县| 贡觉县| 额尔古纳市| 大荔县| 安新县| 湘潭市| 黄山市| 巩义市| 长岛县| 灵宝市| 沾化县| 阜新市| 五峰| 阳新县| 辽宁省| 新宁县| 册亨县| 阿拉尔市| 乌兰县| 锡林郭勒盟| 隆昌县| 淮南市| 隆尧县| 阜城县| 阳高县| 偏关县| 桑日县| 利川市| 交口县| 定安县| 东明县| 乌拉特中旗| 新乐市| 文登市| 澄江县| 广平县| 昔阳县| 寻乌县| 无锡市| 古田县| 麻城市| 青田县| 康平县| 七台河市| 南溪县| 鹤岗市| 筠连县| 额尔古纳市| 山阴县| 卫辉市| 黄大仙区| 肥乡县| 海伦市| 双城市| 大港区| 科尔| 张家界市| 福州市| 海林市| 怀安县| 宣恩县| 元江| 疏勒县| 武城县| 师宗县| 娄烦县| 云和县| 鱼台县| 澄迈县| 卓尼县| 磴口县| 通渭县| 兴化市| 页游| 眉山市| 湘乡市| 海阳市| 专栏| 石狮市| 沽源县| 远安县| 芒康县| 普洱| 积石山| 达拉特旗| 柳林县| 五峰| 井陉县| 沛县| 怀集县| 镇江市| 普洱| 仙居县| 仁化县| 万源市| 文水县| 乌拉特中旗| 简阳市| 习水县| 视频| 东城区| 伊宁市| 屏东市| 保定市| 高要市| 诸城市| 延吉市| 铁力市| 吉木萨尔县| 华蓥市| 乌兰察布市| 合阳县| 玉田县| 昌黎县| 昔阳县| 江山市| 永新县| 霍山县| 南雄市| 讷河市| 萨迦县| 武陟县| 大厂| 樟树市| 平顺县| 瑞丽市| 辽中县| 建湖县| 铜梁县| 麻江县| 隆昌县| 南宁市| 丁青县| 肥城市| 仙游县| 虎林市| 丹东市| 错那县| 大冶市| 稷山县| 获嘉县| 宁晋县| 漯河市| 中卫市| 铁岭县| 杨浦区| 长泰县| 枞阳县| 图们市| 萝北县| 体育| 如东县| 马关县| 瑞金市| 博乐市| 恩平市| 大石桥市| 桂东县| 西林县| 吉木萨尔县| 奉新县| 内黄县| 大冶市| 伊川县| 巩义市| 松原市| 合作市| 巴青县| 禄丰县| 新平| 宁安市| 玉屏| 安国市| 夏邑县| 县级市| 昔阳县| 桃江县| 德庆县| 普定县| 漯河市| 通河县| 达日县| 江城| 吉林市| 延吉市| 恩施市| 夏邑县| 永泰县| 英德市| 大安市| 额敏县| 石家庄市| 通许县| 南部县| 天峨县| 佛山市| 青州市| 沂南县| 湖北省| 伊春市| 四子王旗| 富平县| 乌兰察布市| 彰武县| 陆丰市| 昭通市| 榆中县| 交口县| 萝北县| 乌兰浩特市| 贵港市| 湘阴县| 合江县| 中牟县| 崇礼县| 陇南市| 邹平县| 梨树县| 伊通| 彰武县| 改则县| 石林| 克山县| 马鞍山市| http://www.bo2020zachines.fun http://www.bo2020allows.fun http://m.yqo3j4rl0v.fun http://m.gz1980zotherc.fun http://www.bo2020wets.fun http://www.yqo6j4rl0v.fun http://m.jvz1j3r3o.fun http://m.gz1980wirec.fun http://m.bo2020forzs.fun http://www.yqo8j5rl6v.fun http://m.jvz1j1r0o.fun http://m.gz1980thezec.fun http://www.bo2020strings.fun http://www.yqo5j9rl5v.fun http://www.jvz0j3r4o.fun http://m.gz1980shipc.fun http://www.bo2020schools.fun http://www.yqo0j3rl0v.fun http://wap.yqo3j2rl3v.fun http://www.gz1980replacec.fun http://www.bo2020cycles.fun http://wap.bo2020zachines.fun http://wap.yqo0j7rl6v.fun http://www.gz1980ridec.fun http://www.bo2020approachs.fun