当前位置: 首页 > news >正文

网站开发类比赛晋中网站建设价格

网站开发类比赛,晋中网站建设价格,建设银行个人网站官网,承德网站建设方案前言 SAT 问题简介 SAT是可满足性、适定性(Satisfiability)问题的简称。一般形式为k-适定性问题或k-可满足性问题#xff0c;简称 k-SAT。 何为布尔可满足性问题#xff1f;给定一条真值表达式#xff0c;包含逻辑变量、逻辑与、逻辑或以及非运算符#xff0c;如#x…前言 SAT 问题简介 SAT是可满足性、适定性(Satisfiability)问题的简称。一般形式为k-适定性问题或k-可满足性问题简称 k-SAT。 何为布尔可满足性问题给定一条真值表达式包含逻辑变量、逻辑与、逻辑或以及非运算符如 ( a ∧ ¬ b ∧ ( ¬ ( c ∨ d ∨ ¬ a ) ∨ ( b ∧ ¬ d ) ) ) ∨ ( ¬ ( ¬ ( ¬ b ∨ a ) ∧ c ) ∧ d ) (a\wedge\neg b\wedge(\neg(c\vee d\vee\neg a)\vee(b\wedge\neg d)))\vee(\neg(\neg(\neg b\vee a)\wedge c)\wedge d) (a∧¬b∧(¬(c∨d∨¬a)∨(b∧¬d)))∨(¬(¬(¬b∨a)∧c)∧d) 是否存在一组对这些变量的赋值使得整条式子最终的运算结果为 t r u e true true若可以那么这个性质被称为这条逻辑公式的可满足性satisfiability如何快速高效地判断任意指定逻辑公式的可满足性是理论计算机科学中的一个重要的问题也是第一个被证明为NP-完全NP-completeNPC的问题。 当 k 2 k2 k2时可满足性问题是NPC问题因此我们一般只研究 k 2 k2 k2的情况。 2-SAT算法 通常所说的2-SAT问题往往需要我们处理对于 n n n个布尔变量 { x n } ( x i ∈ { 0 , 1 } ) \{x_n\}\left(x_i\in\{0,1\}\right) {xn​}(xi​∈{0,1})的 m m m个限制。 其每个限制都形如一个 ∨ \vee ∨运算符连接的两个简单限制条件简单限制条件为 x i t r u e x_itrue xi​true记作 x i x_i xi​或 x i f a l s e x_ifalse xi​false记作 ¬ x i \neg x_i ¬xi​因此限制条件一共有四种 s k x i ∨ x j s_kx_i\vee x_j sk​xi​∨xj​ s k ¬ x i ∨ x j s_k\neg x_i\vee x_j sk​¬xi​∨xj​ s k x i ∨ ¬ x j s_kx_i\vee\neg x_j sk​xi​∨¬xj​ s k ¬ x i ∨ ¬ x j s_k\neg x_i\vee \neg x_j sk​¬xi​∨¬xj​ 我们需要满足 ⋀ m i 1 s i t r u e \underset{i1}{\overset m{ \bigwedge }}s_itrue i1⋀m​​si​true 也就是需要每一个 s k s_k sk​都为真。 其处理方法为 首先建图对变量 x i x_i xi​建立两个点 x i , 0 , x i , 1 x_{i,0},x_{i,1} xi,0​,xi,1​表示选 x i 0 x_i0 xi​0或 x i 1 x_i1 xi​1然后在新图上对每个限制按照如下方式连边。 例如对于限制 s k s_k sk​我们讨论这条限制下 a , b ∈ { 0 , 1 } a,b\in\{0,1\} a,b∈{0,1} x i a x_ia xi​a时是否一定有 x j b x_jb xj​b如果一定有就连有向边 x i , a → x j , b x_{i,a}\rightarrow x_{j,b} xi,a​→xj,b​。 同理我们讨论 x j a x_ja xj​a是否一定有 x i b x_ib xi​b如果一定有就连有向边 x j , a → x i , b x_{j,a}\rightarrow x_{i,b} xj,a​→xi,b​ 感性理解这张图如果 x i , a x_{i,a} xi,a​可达 x j , b x_{j,b} xj,b​则说明 x i a x_ia xi​a可以推出 x j b x_jb xj​b或者说 x i a x_ia xi​a蕴含了 x j b x_jb xj​b。 因此我们知道这个可满足性问题无解的充要条件为存在 i i i使得 x i , 0 x_{i,0} xi,0​和 x i , 1 x_{i,1} xi,1​处于同一个强连通分量内这意味着 x i 0 x_i0 xi​0推出 x i 1 x_i1 xi​1同时 x i 1 x_i1 xi​1推出 x i 0 x_i0 xi​0因此无解。 因此我们可以使用Tarjan算法求强连通分量来判断2-SAT问题是否有解事实上我们还可以输出一组可行解。 具体方法如下首先对我们建图的图求强连通分量缩点得到一张DAG然后对DAG进行拓扑排序则 x i x_i xi​对应的两个节点中对应的强连通分量拓扑序较为靠后的节点对应的权值是 x i x_i xi​取得的权值。 其原理是如果 x i a x_ia xi​a会推出 x i b x_ib xi​b那么就不能选 x i a x_ia xi​a此时只能选 x i b x_ib xi​b。 这样我们就用Tarjan算法取得了可满足性问题的 O ( n m ) O(nm) O(nm)做法。 具体的连边方式 首先所有限制都可以转化为 x i a ⇒ x j b x_ia\Rightarrow x_jb xi​a⇒xj​b的形式进行连边这里记录一些经典的连边方式这样就不需要每次做转化了。 x i a ⇒ x j b x_ia\Rightarrow x_jb xi​a⇒xj​b x i , a → x j , b x_{i,a}\rightarrow x_{j,b} xi,a​→xj,b​ x j , ¬ b → x i , ¬ a x_{j,\neg b}\rightarrow x_{i,\neg a} xj,¬b​→xi,¬a​ a ∨ b a\vee b a∨b a 0 → b 1 a_0\rightarrow b_1 a0​→b1​ b 0 → a 1 b_0\rightarrow a_1 b0​→a1​ ¬ a ∨ b \neg a\vee b ¬a∨b a 1 → b 1 a_1\rightarrow b_1 a1​→b1​ b 0 → a 0 b_0\rightarrow a_0 b0​→a0​ ¬ a ∨ ¬ b \neg a\vee\neg b ¬a∨¬b a 1 → b 0 a_1\rightarrow b_0 a1​→b0​ b 1 → a 0 b_1\rightarrow a_0 b1​→a0​ a t r u e atrue atrue 转化为 a 0 ⇒ a 1 a0\Rightarrow a1 a0⇒a1 a 0 → a 1 a_0\rightarrow a_1 a0​→a1​ a f a l s e afalse afalse 转化为 a 1 ⇒ a 0 a1\Rightarrow a0 a1⇒a0 a 1 → a 0 a_1\rightarrow a_0 a1​→a0​ a b ab ab 转化为 a 1 ⇒ b 1 a1\Rightarrow b1 a1⇒b1且 a 0 ⇒ b 0 a0\Rightarrow b0 a0⇒b0 a ̸ b a\notb ab a ⊗ b a\otimes b a⊗b 转化为 a 0 ⇒ b 1 a0\Rightarrow b1 a0⇒b1且 a 1 ⇒ b 0 a1\Rightarrow b0 a1⇒b0 x 1 , x 2 , x 3 , . . . x_1,x_2,x_3,... x1​,x2​,x3​,...至多一个为真 转化为 x 1 1 ⇒ x 2 0 x_11\Rightarrow x_20 x1​1⇒x2​0且 x 1 1 ⇒ x 3 0 x_11\Rightarrow x_30 x1​1⇒x3​0…且 x 2 1 ⇒ x 1 0 x_21\Rightarrow x_10 x2​1⇒x1​0且 x 2 1 ⇒ x 3 0 x_21\Rightarrow x_30 x2​1⇒x3​0…且 x 3 1 ⇒ x 1 0 x_31\Rightarrow x_10 x3​1⇒x1​0且 x 3 1 ⇒ x 2 0 x_31\Rightarrow x_20 x3​1⇒x2​0…… 注意这样连出来的边数是 O ( m 2 ) O(m^2) O(m2)级别的 x 1 , x 2 , x 3 , . . . x_1,x_2,x_3,... x1​,x2​,x3​,...至多 k 1 k1 k1个为真 2-sat一般不能做 x 1 , x 2 , x 3 , . . . x_1,x_2,x_3,... x1​,x2​,x3​,...至少 k ≥ 1 k\geq 1 k≥1个为真 2-sat一般不能做 x 1 , x 2 , x 3 , . . . x_1,x_2,x_3,... x1​,x2​,x3​,...恰好 k ≥ 1 k\geq 1 k≥1个为真 2-sat一般不能做 其中一些限制条件也可以在连边的时候判掉。 2-SAT原理 我们现在有 n n n个布尔变量称为 { x n } ( x i ∈ { 0 , 1 } ) \{x_n\}\left(x_i\in \{0,1\}\right) {xn​}(xi​∈{0,1})现在给出 m m m条限制每一条限制都形如 当 x i a x_ia xi​a时有 x j b x_jb xj​b a , b ∈ { 0 , 1 } a,b\in\{0,1\} a,b∈{0,1} 即 x i a ⇒ x j b x_ia\Rightarrow x_jb xi​a⇒xj​b 接下来说一下如何求解这个问题。 图的建立 点的意义 我们使用图论方法对这个问题进行求解按照经典套路我们需要在图上定义一个集合然后把原问题的意义在集合内体现出来。 具体来说我们有一个集合 S S S同时在图上有 2 n 2n 2n个点其中每个比尔变量 x i x_i xi​对应两个点一个叫做 x i , 0 x_{i,0} xi,0​另一个叫做 x i , 1 x_{i,1} xi,1​。 我们规定 x i , 0 , x i , 1 x_{i,0},x_{i,1} xi,0​,xi,1​当中只能恰好有一个属于集合 S S S如果 x i , 0 ∈ S x_{i,0}\in S xi,0​∈S则 x i 0 x_i0 xi​0如果 x i , 1 ∈ S x_{i,1}\in S xi,1​∈S则 x i 1 x_i1 xi​1。 我们知道根据限制能够推出一些关系例如如果 x i , a ∈ S x_{i,a}\in S xi,a​∈S那么一定有 x j , b ∈ S x_{j,b}\in S xj,b​∈S我们希望用边表示这一种关系因此我们规定对于任意元素 u ∈ S u\in S u∈S u u u在图上可达的所有点 v v v均属于 S S S。 边的意义 刚才已经定义了图中的点以及集合 S S S。现在具体说一下图中的边是如何连接的 对于限制 x i a ⇒ x j b x_ia\Rightarrow x_jb xi​a⇒xj​b 我们考虑一个一个向着集合 S S S内添加元素的过程我们必然是找到一个点 u u u加入集合然后将 u u u的所有后继加入 S S S然后把这些后继的所有后继加入 S S S… 由于我们知道 x i a x_ia xi​a时 x j b x_jb xj​b因此对于这个限制我们在图上连边 x i , a → x j , b x_{i,a}\rightarrow x_{j,b} xi,a​→xj,b​这样就似乎可以表示这个限制了。 注意连边方式到这里还不完全正确 此时我们会得到一个暴力算法 枚举一个未被确定的变量 x i x_i xi​先选择 x i , 0 x_{i,0} xi,0​然后检查 x i , 0 x_{i,0} xi,0​可达的所有点我们将会选中他们。 如果发生冲突即存在 x j , 0 , x j , 1 ∈ S x_{j,0},x_{j,1}\in S xj,0​,xj,1​∈S那么就说明 x i ̸ 0 x_i\not0 xi​0回溯。 如果 x i , 0 x_{i,0} xi,0​不能选那么就选择 x i , 1 x_{i,1} xi,1​然后检查 x i , 1 x_{i,1} xi,1​的可达点检查是否有冲突如果没有就选上它们否则就说明无解。 但是我们会发现这个算法是会错的举例来说对于以下两个限制 y 0 ⇒ x 1 y0\Rightarrow x1 y0⇒x1 y 1 ⇒ x 1 y1\Rightarrow x1 y1⇒x1 我们会连出这张图 但是如果我们一开始选择 x 0 x_0 x0​后来就会发现无论选择 y 0 y_0 y0​还是 y 1 y_1 y1​都会有矛盾此时就输出无解显然是不对的。 这样会出错是因为对于这样的一条限制 y 0 ⇒ x 1 y0\Rightarrow x1 y0⇒x1来说选择 x x x的值是会对 y y y的值产生影响的具体来说如果 x 0 x0 x0这就说明 y ̸ 0 y\not0 y0即 y 1 y1 y1。 换句话说命题 y 0 ⇒ x 1 y0\Rightarrow x1 y0⇒x1的逆否命题 x ̸ 1 ⇒ y ̸ 0 x\not1\Rightarrow y\not 0 x1⇒y0即 x 0 ⇒ y 1 x0\Rightarrow y1 x0⇒y1具有和原命题一致的真假性因此选择 x x x的值可能会对 y y y造成影响因此我们需要进一步讨论 x a ⇒ y b xa\Rightarrow yb xa⇒yb说明了 x , y x,y x,y之间的那些关系 当我们选择了 x a x_a xa​时必然有 y b y_b yb​当我们选择了 x ¬ a x_{\neg a} x¬a​时这条限制不提供任何约束即有可能选择 y b y_b yb​或 y ¬ b y_{\neg b} y¬b​当我们选择了 y b y_b yb​时这条限制不提供任何约束即有可能选择 x a x_a xa​或 x ¬ a x_{\neg a} x¬a​当我们选择了 y ¬ b y_{\neg b} y¬b​时必然有 x ¬ a x_{\neg a} x¬a​ 因此事实上对于限制 x i a ⇒ x j b x_ia\Rightarrow x_{j}b xi​a⇒xj​b来说我们应该连接两条边 x i , a → x j , b x_{i,a}\rightarrow x_{j,b} xi,a​→xj,b​ x j , ¬ b → x i , ¬ a x_{j,\neg b}\rightarrow x_{i,\neg a} xj,¬b​→xi,¬a​ 此时我们再进行刚才的暴力算法我们就获得了时间复杂度为 O ( n ⋅ m ) O(n\cdot m) O(n⋅m)的2-sat问题的dfs做法。值得一提的是这种做法还能同时让我们获得2-sat问题字典序最小的解。 接下来简要对暴力做法的正确性进行说明 首先我们证明解的充分性即我们求出的解确实是原问题的一组解 首先我们知道对于一个限制 x i a ⇒ x j b x_{i}a\Rightarrow x_{j}b xi​a⇒xj​b这个限制被违反当且仅当 x i , a , x j , ¬ b ∈ S x_{i,a},x_{j,\neg b}\in S xi,a​,xj,¬b​∈S。 如果说在算法过程中 x i , a x_{i,a} xi,a​比 x j , ¬ b x_{j,\neg b} xj,¬b​先选的话发生这种情况一定不可能因为我们选择 x i , a x_{i,a} xi,a​时根据连边一定选择了 x j , b x_{j,b} xj,b​因此后来无法选择 x j , ¬ b x_{j,\neg b} xj,¬b​了矛盾。 如果 x i , a x_{i,a} xi,a​比 x j , ¬ b x_{j,\neg b} xj,¬b​后选的话这种情况还是不可能因为根据连边的方式如果我们选择了 x j , ¬ b x_{j,\neg b} xj,¬b​我们一定选择了 x i , ¬ a x_{i,\neg a} xi,¬a​不可能再选择 x i , a x_{i,a} xi,a​因此仍然矛盾。 因此我们就证明我们构造出的一组解满足所有限制条件因此是一组合法解。 接下来我们证明解的必要性即有解的时候我们一定能够构造出一组解。 只需证明逆否命题即如果我们构造不出一组解此时这个问题无解。 我们考虑求解过程在决定变量 x i x_i xi​的取值时报告了无解。 此时必然是因为发生了矛盾首先讨论选取 x i , 0 x_{i,0} xi,0​时候的情况矛盾即存在元素 x j , 0 , x j , 1 ∈ S x_{j,0},x_{j,1}\in S xj,0​,xj,1​∈S。 此时有两种情况第一种情况是 x j , 0 , x j , 1 x_{j,0},x_{j,1} xj,0​,xj,1​都是在 x i , 0 x_{i,0} xi,0​加入集合 S S S后加入集合的此时显然选择 x i , 0 x_{i,0} xi,0​会同时推出 x j 0 x_j0 xj​0和 x j 1 x_j1 xj​1因此 x i ̸ 0 x_i\not0 xi​0。 第二种情况是 x j , a x_{j,a} xj,a​是在 x i , 0 x_{i,0} xi,0​加入集合 S S S前加入集合的而 x j , ¬ a x_{j,\neg a} xj,¬a​是因为加入 x i , 0 x_{i,0} xi,0​而加入集合 S S S的换句话说存在路径使得 x i , 0 ⇝ x j , ¬ a x_{i,0}\rightsquigarrow x_{j,\neg a} xi,0​⇝xj,¬a​这种情况不存在这是因为如果存在路径使得 x i , 0 ⇝ x j , ¬ a x_{i,0}\rightsquigarrow x_{j,\neg a} xi,0​⇝xj,¬a​由于接下来说到的性质2我们必然知道存在一条路径使得 x j , a ⇝ x i , 1 x_{j,a}\rightsquigarrow x_{i,1} xj,a​⇝xi,1​因此当 x j , a ∈ S x_{j,a}\in S xj,a​∈S后 x i , 1 ∈ S x_{i,1}\in S xi,1​∈S这与 x i x_i xi​取值未确定矛盾因此第二种情况不存在。 不可能存在一种情况使得 x j , 0 , x j , 1 x_{j,0},x_{j,1} xj,0​,xj,1​在加入 x i , 0 x_{i,0} xi,0​前都在集合 S S S内因为这违反 S S S的定义。 同理我们知道如果在选择 x i , 1 x_{i,1} xi,1​的时候发生矛盾只可能是因为 x i ̸ 1 x_i\not1 xi​1。此时我们就得知了 x i ̸ 0 x_i\not0 xi​0且 x i ̸ 1 x_i\not1 xi​1因此得到这个可满足性问题无解。 QED. 线性算法 接下来我们说一下这个问题的线性算法线性算法是这样的 对建出来的图缩强连通分量这样会得到一张DAG如果存在点 x i , 0 , x i , 1 x_{i,0},x_{i,1} xi,0​,xi,1​在一个强连通分量内则说明无解。否则有解对DAG拓扑排序 x i x_i xi​的取值是它对应的两个点 x i , 0 , x i , 1 x_{i,0},x_{i,1} xi,0​,xi,1​对应的强连通分量中拓扑序较靠后的那个点的取值。 证明 接下来我们证明一下线性算法的正确性。 性质1 边的对称性 对于任意一条有向边 ( x i , a , x j , b ) (x_{i,a},x_{j,b}) (xi,a​,xj,b​)都存在有向边 ( x j , ¬ b , x i , ¬ a ) (x_{j,\neg b},x_{i,\neg a}) (xj,¬b​,xi,¬a​)我们称为其对称边。 证明 回忆建图的方式这条性质是显然成立的。 性质2 路径的对称性 对于任意一条从 x i , a x_{i,a} xi,a​到 x j , b x_{j,b} xj,b​的路径必然存在对应的一条路径从 x j , ¬ b x_{j,\neg b} xj,¬b​到 x i , ¬ a x_{i,\neg a} xi,¬a​。 证明 我们找到从 x i , a x_{i,a} xi,a​到 x j , b x_{j,b} xj,b​的路径上的每一条边的对称边显然它们拼成一条从 x j ¬ b x_{j\neg b} xj¬b​到 x i , ¬ a x_{i,\neg a} xi,¬a​的路径。 算法1 我们可以据此提出一个求解2-sat问题的算法 对建出来的图缩强连通分量这样会得到一张DAG如果存在点 x i , 0 , x i , 1 x_{i,0},x_{i,1} xi,0​,xi,1​在一个强连通分量内则说明无解。否则有解我们通过如下过程构造解 找到一个没有确定的 x i x_i xi​由于 x i , 0 , x i , 1 x_{i,0},x_{i,1} xi,0​,xi,1​不强连通因此不可能存在二者相互可达。如果有 x i , 0 ⇝ x i , 1 x_{i,0}\rightsquigarrow x_{i,1} xi,0​⇝xi,1​那就令 x i , 1 ∈ S x_{i,1}\in S xi,1​∈S。否则说明一定有 x i , 1 ⇝ x i , 0 x_{i,1}\rightsquigarrow x_{i,0} xi,1​⇝xi,0​或者 x i , 0 , x i , 1 x_{i,0},x_{i,1} xi,0​,xi,1​互相不可达此时令 x i , 0 ∈ S x_{i,0}\in S xi,0​∈S。如果此时我们有 x i , a ∈ S x_{i,a}\in S xi,a​∈S那就说明有 x i , ¬ a ∉ S x_{i,\neg a}\notin S xi,¬a​∈/S。同时说明 x i , a x_{i,a} xi,a​的所有后继都属于 S S S把它们加入 S S S。同时说明 x i , ¬ a x_{i,\neg a} xi,¬a​的所有前驱都不属于 S S S。直到所有的变量取值都确定此时我们得到了一组可行解。 定理1 缩点后得到的DAG满足没有任何一个 x i , 0 , x i , 1 x_{i,0},x_{i,1} xi,0​,xi,1​强连通是原问题有解的必要条件。 证明其逆否命题 如果存在 x i , 0 , x i , 1 x_{i,0},x_{i,1} xi,0​,xi,1​强连通那么我们沿着 x i , 0 ⇝ x i , 1 ⇝ x i , 0 x_{i,0}\rightsquigarrow x_{i,1}\rightsquigarrow x_{i,0} xi,0​⇝xi,1​⇝xi,0​的回路走上面的边对应的限制条件就说明当 x i 0 x_{i}0 xi​0时 x i 1 x_i1 xi​1并且当 x i 1 x_i1 xi​1时 x i 0 x_i0 xi​0此时显然无解。 QED. 定理2 按照上述算法1流程构造出的解是原问题的一组解。 证明 如果这组解不是原问题的一组解那么一定存在至少一个限制被违背了设这个限制是 x i a ⇒ x j b x_ia\Rightarrow x_jb xi​a⇒xj​b这个限制被违反必须有 x i a x_ia xi​a且 x j ¬ b x_j\neg b xj​¬b。 假如说 x i , a x_{i,a} xi,a​比 x j , ¬ b x_{j,\neg b} xj,¬b​后晚加入集合当我们加入 x j , ¬ b x_{j,\neg b} xj,¬b​时由于这条限制对应连出的边 x i , ¬ a x_{i,\neg a} xi,¬a​一定也会被加入集合因此 x i , a x_{i,a} xi,a​不可能加入集合矛盾。 否则说明 x i , a x_{i,a} xi,a​比 x j , ¬ b x_{j,\neg b} xj,¬b​先加入集合但是这也不可能因为当我们加入 x i , a x_{i,a} xi,a​时由于这条限制对应连出的边 x j , b x_{j,b} xj,b​也一定加入集合因此 x j , b x_{j,b} xj,b​不可能加入集合矛盾。 QED. 定理3 根据定理1定理2我们证明了 算法1能够求出一组解是原问题有解的充要条件。它求出的解是原问题的一组解。 定理4 容易发现Tarjan算法拓扑排序求解2-sat问题的过程事实上在模拟算法1因此其的正确性也有保证。 后记 于是皆大欢喜。
http://www.w-s-a.com/news/322328/

相关文章:

  • 延安有哪些做网站的公司如何建设网站?
  • 网站建设者属于广告经营者吗网站管理程序
  • 网站内容优化方法深圳市宝安区怎么样
  • 视频网站开发视频公司网站制作多少钱
  • 单页简洁手机网站模板购物软件
  • 素材网站官网低价网站建设费用预算
  • 苏州网站设计kgwl个人网站有什么外国广告做
  • 浙江省网站建设报价简单网站开发工具
  • 物流网站的建设wordpress电视直播插件下载
  • 简述网站开发流程青岛做网站建设价格低
  • 网站开发的业务需求分析杭州推广公司
  • 网站建设技术实现难点app开发需要哪些软件
  • 响水建设局网站做网站需要会哪些知识
  • 企业制作企业网站个人网站可以做百度竞价
  • 做网站找投资人wordpress 5 主题教程
  • 做国外网站汇款用途是什么wordpress图片主题晨曦
  • 网站设计跟网站开发区别为什么网站需要维护
  • m 的手机网站怎么做网络推广方式和方法
  • wordpress图片自动轮播插件seo门户网站建设
  • 制作商业网站传奇网页游戏排名
  • 网站免费推广方案长沙房地产网站设计
  • 济南网站建设cnwenhui中交路桥建设网站
  • 韶关网站开发网站建设任务分解
  • 网站建设核心点阿根廷网站后缀
  • 哪些网站可以做招商广告语学校官网页面设计
  • 十堰城市建设网站网站开发流程宜春
  • 内江网站建设郑州网站优化外包
  • 土地流转网站建设项目云南抖音推广
  • 建设银行网站无法打开2021年有没有人给个网站
  • 高端手机网站建设网站建设岗位绩效