当前位置: 首页> 健康> 美食 > 免费网络课程平台_百度知道入口_企业seo网站营销推广_百度网盘网页版官网

免费网络课程平台_百度知道入口_企业seo网站营销推广_百度网盘网页版官网

时间:2025/7/17 0:59:34来源:https://blog.csdn.net/ZXTpower/article/details/146383336 浏览次数:0次
免费网络课程平台_百度知道入口_企业seo网站营销推广_百度网盘网页版官网

CSP-J 2023年题解

小苹果

题目描述

小 Y 的桌子上放着 n n n 个苹果从左到右排成一列,编号为从 1 1 1 n n n

小苞是小 Y 的好朋友,每天她都会从中拿走一些苹果。

每天在拿的时候,小苞都是从左侧第 1 1 1 个苹果开始、每隔 2 2 2 个苹果拿走 1 1 1 个苹果。随后小苞会将剩下的苹果按原先的顺序重新排成一列。

小苞想知道,多少天能拿完所有的苹果,而编号为 n n n 的苹果是在第几天被拿走的?

输入格式

输入的第一行包含一个正整数 n n n,表示苹果的总数。

输出格式

输出一行包含两个正整数,两个整数之间由一个空格隔开,分别表示小苞拿走所有苹果所需的天数以及拿走编号为 n n n 的苹果是在第几天。

输入输出样例 #1

输入 #1

8

输出 #1

5 5

说明/提示

【样例 1 1 1 解释】

小苞的桌上一共放了 8 8 8 个苹果。
小苞第一天拿走了编号为 1 1 1 4 4 4 7 7 7 的苹果。
小苞第二天拿走了编号为 2 2 2 6 6 6 的苹果。
小苞第三天拿走了编号为 3 3 3 的苹果。
小苞第四天拿走了编号为 5 5 5 的苹果。
小苞第五天拿走了编号为 8 8 8 的苹果。

【样例 2 2 2

见选手目录下的 apple/apple2.in 与 apple/apple2.ans。

【数据范围】

对于所有测试数据有: 1 ≤ n ≤ 1 0 9 1\leq n\leq 10^9 1n109

测试点 n ≤ n\leq n特殊性质
1 ∼ 2 1\sim 2 12 10 10 10
3 ∼ 5 3\sim 5 35 1 0 3 10^3 103
6 ∼ 7 6\sim 7 67 1 0 6 10^6 106
8 ∼ 9 8\sim 9 89 1 0 6 10^6 106
10 10 10 1 0 9 10^9 109

特殊性质:小苞第一天就取走编号为 n n n 的苹果。

解题思路

每隔两个拿走一个,换一种说法,就是当 i n d e x m o d 3 = 1 index \mod 3 = 1 indexmod3=1 的时候,第 i n d e x index index 个苹果会被拿走。

所以如果某一天只剩下了 m m m 个苹果,并且 m m o d 3 = 1 m \mod 3 = 1 mmod3=1 的时候,第 n n n 个苹果就被拿走了。至于计算每天被拿走的苹果数量,我们用这个公式来计算。

n u m = ⌈ m / 3 ⌉ num = \lceil m / 3 \rceil num=m/3

#include <bits/stdc++.h>using namespace std;int n, ans1, ans2;int main()
{cin >> n;while (n){ans1++;if (n % 3 == 1 && ans2 == 0) // 看看啥时候取最后一个ans2 = ans1; n -= n / 3 + (int)(n % 3 != 0); // 记得向上取整}cout << ans1 << " " << ans2 << '\n';return 0;
}

因为每次大概要少 1 3 \frac{1}{3} 31 的苹果,所以时间复杂度就是 l o g log log 级别。

公路

题目描述

小苞准备开着车沿着公路自驾。

公路上一共有 n n n 个站点,编号为从 1 1 1 n n n。其中站点 i i i 与站点 i + 1 i + 1 i+1 的距离为 v i v_i vi 公里。

公路上每个站点都可以加油,编号为 i i i 的站点一升油的价格为 a i a_i ai 元,且每个站点只出售整数升的油。

小苞想从站点 1 1 1 开车到站点 n n n,一开始小苞在站点 1 1 1 且车的油箱是空的。已知车的油箱足够大,可以装下任意多的油,且每升油可以让车前进 d d d 公里。问小苞从站点 1 1 1 开到站点 n n n,至少要花多少钱加油?

输入格式

输入的第一行包含两个正整数 n n n d d d,分别表示公路上站点的数量和车每升油可以前进的距离。

输入的第二行包含 n − 1 n - 1 n1 个正整数 v 1 , v 2 … v n − 1 v_1, v_2\dots v_{n-1} v1,v2vn1,分别表示站点间的距离。

输入的第三行包含 n n n 个正整数 a 1 , a 2 … a n a_1, a_2 \dots a_n a1,a2an,分别表示在不同站点加油的价格。

输出格式

输出一行,仅包含一个正整数,表示从站点 1 1 1 开到站点 n n n,小苞至少要花多少钱加油。

输入输出样例 #1

输入 #1

5 4
10 10 10 10
9 8 9 6 5

输出 #1

79

说明/提示

【样例 1 解释】

最优方案下:小苞在站点 1 1 1 买了 3 3 3 升油,在站点 2 2 2 购买了 5 5 5 升油,在站点 4 4 4 购买了 2 2 2 升油。

【样例 2】

见选手目录下的 road/road2.in 与 road/road2.ans。

【数据范围】

对于所有测试数据保证: 1 ≤ n ≤ 1 0 5 1 \leq n \leq 10^5 1n105 1 ≤ d ≤ 1 0 5 1 \leq d \leq 10^5 1d105 1 ≤ v i ≤ 1 0 5 1 \leq v_i \leq 10^5 1vi105 1 ≤ a i ≤ 1 0 5 1 \leq a_i \leq 10^5 1ai105

测试点 n ≤ n \leq n特殊性质
1 ∼ 5 1\sim 5 15 8 8 8
6 ∼ 10 6\sim 10 610 1 0 3 10^3 103
11 ∼ 13 11\sim 13 1113 1 0 5 10^5 105A
14 ∼ 16 14\sim 16 1416 1 0 5 10^5 105B
17 ∼ 20 17\sim 20 1720 1 0 5 10^5 105
  • 特殊性质 A:站点 1 1 1 的油价最低。
  • 特殊性质 B:对于所有 1 ≤ i < n 1 \leq i < n 1i<n v i v_i vi d d d 的倍数。

解题思路

简单贪心题,我们从站点一运动到站点 n n n,车可以装任意多的油并且加油站里面的油也足够多,问最少花多少钱。

我们很简单就能想到,每次我们加油,只需要保证可以到达距离当前加油站最近,并且比当前加油站更便宜的其他加油站即可。

因为我们在当前加油站加油不如走到更便宜的加油站之后再加。

本题代码要比思路难搞。

#include <bits/stdc++.h>
#define int long long // 这里偷懒了,大家不要向我学习using namespace std;const int maxn = 1e5 + 5;
int n, d;
int v[maxn], a[maxn];signed main()
{cin >> n >> d;for (int i = 2; i <= n; i++)cin >> v[i], v[i] += v[i - 1]; // 把 v 变成从起点走到某一个点的距离for (int i = 1; i <= n; i++)cin >> a[i]; int ans = 0, res = 0; // 因为只能买整数单位油,所以有可能走到第 i 个加油站之后还能再往前走一走,这里的 res 记录的是多往前走的距离int pre = 1;for (int i = 2; i <= n; i++){if (a[i] < a[pre]) // 发现了比上一个加油站更便宜的{int gas = (v[i] - v[pre] - res + d - 1) / d; // 走到当前加油站需要多少油,注意上取整ans += gas * a[pre]; // 买这些油需要多少钱res = gas * d + res - (v[i] - v[pre]);pre = i;}}if (pre != n) // 最后在第 pre 个加油站加油直接走到 n{int gas = (v[n] - v[pre] - res + d - 1) / d;ans += gas * a[pre];res = gas * d + res - (v[n] - v[pre]);}cout << ans << '\n';return 0;
}

一元二次方程

题目背景

众所周知,对一元二次方程 a x 2 + b x + c = 0 , ( a ≠ 0 ) ax ^ 2 + bx + c = 0, (a \neq 0) ax2+bx+c=0,(a=0),可以用以下方式求实数解:

  • 计算 Δ = b 2 − 4 a c \Delta = b ^ 2 - 4ac Δ=b24ac,则:
    1. Δ < 0 \Delta < 0 Δ<0,则该一元二次方程无实数解。
    2. 否则 Δ ≥ 0 \Delta \geq 0 Δ0,此时该一元二次方程有两个实数解 x 1 , 2 = − b ± Δ 2 a x _ {1, 2} = \frac{-b \pm \sqrt \Delta}{2a} x1,2=2ab±Δ

例如:

  • x 2 + x + 1 = 0 x ^ 2 + x + 1 = 0 x2+x+1=0 无实数解,因为 Δ = 1 2 − 4 × 1 × 1 = − 3 < 0 \Delta = 1 ^ 2 - 4 \times 1 \times 1 = -3 < 0 Δ=124×1×1=3<0
  • x 2 − 2 x + 1 = 0 x ^ 2 - 2x + 1 = 0 x22x+1=0 有两相等实数解 x 1 , 2 = 1 x _ {1, 2} = 1 x1,2=1
  • x 2 − 3 x + 2 = 0 x ^ 2 - 3x + 2 = 0 x23x+2=0 有两互异实数解 x 1 = 1 , x 2 = 2 x _ 1 = 1, x _ 2 = 2 x1=1,x2=2

在题面描述中 a a a b b b 的最大公因数使用 gcd ⁡ ( a , b ) \gcd(a, b) gcd(a,b) 表示。例如 12 12 12 18 18 18 的最大公因数是 6 6 6,即 gcd ⁡ ( 12 , 18 ) = 6 \gcd(12, 18) = 6 gcd(12,18)=6

题目描述

现在给定一个一元二次方程的系数 a , b , c a, b, c a,b,c,其中 a , b , c a, b, c a,b,c 均为整数且 a ≠ 0 a \neq 0 a=0。你需要判断一元二次方程 a x 2 + b x + c = 0 a x ^ 2 + bx + c = 0 ax2+bx+c=0 是否有实数解,并按要求的格式输出。

在本题中输出有理数 v v v 时须遵循以下规则:

  • 由有理数的定义,存在唯一的两个整数 p p p q q q,满足 q > 0 q > 0 q>0 gcd ⁡ ( p , q ) = 1 \gcd(p, q) = 1 gcd(p,q)=1 v = p q v = \frac pq v=qp

  • q = 1 q = 1 q=1则输出 {p},否则输出 {p}/{q},其中 {n} 代表整数 n n n 的值;

  • 例如:

    • v = − 0.5 v = -0.5 v=0.5 时, p p p q q q 的值分别为 − 1 -1 1 2 2 2,则应输出 -1/2
    • v = 0 v = 0 v=0 时, p p p q q q 的值分别为 0 0 0 1 1 1,则应输出 0

对于方程的求解,分两种情况讨论:

  1. Δ = b 2 − 4 a c < 0 \Delta = b ^ 2 - 4ac < 0 Δ=b24ac<0,则表明方程无实数解,此时你应当输出 NO

  2. 否则 Δ ≥ 0 \Delta \geq 0 Δ0,此时方程有两解(可能相等),记其中较大者为 x x x,则:

    1. x x x 为有理数,则按有理数的格式输出 x x x

    2. 否则根据上文公式, x x x 可以被唯一表示为 x = q 1 + q 2 r x = q _ 1 + q _ 2 \sqrt r x=q1+q2r 的形式,其中:

      • q 1 , q 2 q _ 1, q _ 2 q1,q2 为有理数,且 q 2 > 0 q _ 2 > 0 q2>0

      • r r r 为正整数且 r > 1 r > 1 r>1,且不存在正整数 d > 1 d > 1 d>1 使 d 2 ∣ r d ^ 2 \mid r d2r(即 r r r 不应是 d 2 d ^ 2 d2 的倍数);

    此时:

    1. q 1 ≠ 0 q _ 1 \neq 0 q1=0,则按有理数的格式输出 q 1 q _ 1 q1,并再输出一个加号 +
    2. 否则跳过这一步输出;

    随后:

    1. q 2 = 1 q _ 2 = 1 q2=1,则输出 sqrt({r})
    2. 否则若 q 2 q _ 2 q2 为整数,则输出 {q2}*sqrt({r})
    3. 否则若 q 3 = 1 q 2 q _ 3 = \frac 1{q _ 2} q3=q21 为整数,则输出 sqrt({r})/{q3}
    4. 否则可以证明存在唯一整数 c , d c, d c,d 满足 c , d > 1 , gcd ⁡ ( c , d ) = 1 c, d > 1, \gcd(c, d) = 1 c,d>1,gcd(c,d)=1 q 2 = c d q _ 2 = \frac cd q2=dc,此时输出 {c}*sqrt({r})/{d}

    上述表示中 {n} 代表整数 {n} 的值,详见样例。

    如果方程有实数解,则按要求的格式输出两个实数解中的较大者。否则若方程没有实数解,则输出 NO

输入格式

输入的第一行包含两个正整数 T , M T, M T,M,分别表示方程数和系数的绝对值上限。

接下来 T T T 行,每行包含三个整数 a , b , c a, b, c a,b,c

输出格式

输出 T T T 行,每行包含一个字符串,表示对应询问的答案,格式如题面所述。

每行输出的字符串中间不应包含任何空格

输入输出样例 #1

输入 #1

9 1000
1 -1 0
-1 -1 -1
1 -2 1
1 5 4
4 4 1
1 0 -432
1 -3 1
2 -4 1
1 7 1

输出 #1

1
NO
1
-1
-1/2
12*sqrt(3)
3/2+sqrt(5)/2
1+sqrt(2)/2
-7/2+3*sqrt(5)/2

说明/提示

【样例 #2】

见附件中的 uqe/uqe2.inuqe/uqe2.ans

【数据范围】

对于所有数据有: 1 ≤ T ≤ 5000 1 \leq T \leq 5000 1T5000 1 ≤ M ≤ 1 0 3 1 \leq M \leq 10 ^ 3 1M103 ∣ a ∣ , ∣ b ∣ , ∣ c ∣ ≤ M |a|,|b|,|c| \leq M a,b,cM a ≠ 0 a \neq 0 a=0

测试点编号 M ≤ M \leq M特殊性质 A特殊性质 B特殊性质 C
1 1 1 1 1 1
2 2 2 20 20 20
3 3 3 1 0 3 10 ^ 3 103
4 4 4 1 0 3 10 ^ 3 103
5 5 5 1 0 3 10 ^ 3 103
6 6 6 1 0 3 10 ^ 3 103
7 , 8 7, 8 7,8 1 0 3 10 ^ 3 103
9 , 10 9, 10 9,10 1 0 3 10 ^ 3 103

其中:

  • 特殊性质 A:保证 b = 0 b = 0 b=0
  • 特殊性质 B:保证 c = 0 c = 0 c=0
  • 特殊性质 C:如果方程有解,那么方程的两个解都是整数。

解题思路

纯纯的模拟题,做这种题的时候一定要理清思路,模块化你的代码,方便调试。

具体思路看下面代码:

#include <bits/stdc++.h>
#define int long long // 偷懒了using namespace std;int T, m;
int a, b, c;
int F; // F 判断左边输出了没int delta(int a, int b, int c) // 计算 Δ
{return b * b - 4 * a * c;
}int gcd(int x, int y) // 两个数字的最大公约数
{if (y == 0)return x;return gcd(y, x % y);
}void left() // 计算 -b/2a
{int d = delta(a, b, c), p, q;p = -b;q = 2 * a;if ((int)sqrt(d) * (int)sqrt(d) == d) // 如果 Δ 可以被开方就直接加到 -b 里面if (a > 0)p += sqrt(d);elsep -= sqrt(d);int f = 1; // 通过除号上下两部分判断整体的正负if (p < 0) f = -f;if (q < 0) f = -f;p = abs(p); // 取绝对值,方便输出q = abs(q);if (p == 0) // 左边是 0 不用输出{F = 1; // 标记一下return ;}if (p % q == 0) //可以被整除cout << f * p / q;else{int g = gcd(p, q); // 化简后输出cout << f * p / g << "/" << q / g;}
}void right() // +/-sqrt(Δ)/2a
{int d = delta(a, b, c), f = 1; // 用 f 判断正负if ((int)sqrt(d) * (int)sqrt(d) == d) // 如果可以被开方,说明 left 函数已经计算过一次了,直接结束{if (F == 1) // 左边没输出,说明结果是 0cout << 0;return ;}if (a < 0) f = -1;int k = 1, q = abs(2 * a);for (int i = 2; i <= sqrt(d); i++) // 尝试对 Δ 进行开方,把整数提出来while (d % (i * i) == 0){k *= i;d /= i * i;}// 我们要注意一点,题目让我们输出较大值,那么当 2a 是负数,sqrt(Δ) 前面也是负号,当 2a 是正数,sqrt(Δ) 前面就是 + 号,所以无论如何都该输出 "+"if (F == 0) // 左边如果输出了,那么我们用符号进行连接cout << "+";  int g = gcd(k, q); // 求最大公约数方便化简if (k != g)cout << k / g << "*"; // 整除cout << "sqrt(" << d << ")"; if (q != g) // 看看 2a 是不是需要化简cout << "/" << q / g;return ;
}signed main()
{cin >> T >> m;while (T--) // 多组数据{cin >> a >> b >> c;int d = delta(a, b, c);if (d < 0){cout << "NO" << '\n';continue;}left();right();F = 0;cout << '\n';}return 0;
}

旅游巴士

题目描述

小 Z 打算在国庆假期期间搭乘旅游巴士去一处他向往已久的景点旅游。

旅游景点的地图共有 n n n 处地点,在这些地点之间连有 m m m 条道路。其中 1 1 1 号地点为景区入口, n n n 号地点为景区出口。我们把一天当中景区开门营业的时间记为 0 0 0 时刻,则从 0 0 0 时刻起,每间隔 k k k 单位时间便有一辆旅游巴士到达景区入口,同时有一辆旅游巴士从景区出口驶离景区。

所有道路均只能单向通行。对于每条道路,游客步行通过的用时均为恰好 1 1 1 单位时间。

小 Z 希望乘坐旅游巴士到达景区入口,并沿着自己选择的任意路径走到景区出口,再乘坐旅游巴士离开,这意味着他到达和离开景区的时间都必须是 k k k 的非负整数倍。由于节假日客流众多,小 Z 在旅游巴士离开景区前只想一直沿着景区道路移动,而不想在任何地点(包括景区入口和出口)或者道路上停留

出发前,小 Z 忽然得知:景区采取了限制客流的方法,对于每条道路均设置了一个
“开放时间” a i a _ i ai,游客只有不早于 a i a _ i ai 时刻才能通过这条道路。

请帮助小 Z 设计一个旅游方案,使得他乘坐旅游巴士离开景区的时间尽量地早。

输入格式

输入的第一行包含 3 个正整数 n , m , k n, m, k n,m,k,表示旅游景点的地点数、道路数,以及旅游巴士的发车间隔。

输入的接下来 m m m 行,每行包含 3 个非负整数 u i , v i , a i u _ i, v _ i, a_ i ui,vi,ai,表示第 i i i 条道路从地点 u i u _ i ui 出发,到达地点 v i v _ i vi,道路的“开放时间”为 a i a _ i ai

输出格式

输出一行,仅包含一个整数,表示小 Z 最早乘坐旅游巴士离开景区的时刻。如果不存在符合要求的旅游方案,输出 -1

输入输出样例 #1

输入 #1

5 5 3
1 2 0
2 5 1
1 3 0
3 4 3
4 5 1

输出 #1

6

说明/提示

【样例 #1 解释】

小 Z 可以在 3 3 3 时刻到达景区入口,沿 1 → 3 → 4 → 5 1 \to 3 \to 4 \to 5 1345 的顺序走到景区出口,并在 6 6 6 时刻离开。

【样例 #2】

见附件中的 bus/bus2.inbus/bus2.ans

【数据范围】

对于所有测试数据有: 2 ≤ n ≤ 1 0 4 2 \leq n \leq 10 ^ 4 2n104 1 ≤ m ≤ 2 × 1 0 4 1 \leq m \leq 2 \times 10 ^ 4 1m2×104 1 ≤ k ≤ 100 1 \leq k \leq 100 1k100 1 ≤ u i , v i ≤ n 1 \leq u _ i, v _ i \leq n 1ui,vin 0 ≤ a i ≤ 1 0 6 0 \leq a _ i \leq 10 ^ 6 0ai106

测试点编号 n ≤ n \leq n m ≤ m \leq m k ≤ k \leq k特殊性质
1 ∼ 2 1 \sim 2 12 10 10 10 15 15 15 100 100 100 a i = 0 a _ i = 0 ai=0
3 ∼ 5 3 \sim 5 35 10 10 10 15 15 15 100 100 100
6 ∼ 7 6 \sim 7 67 1 0 4 10 ^ 4 104 2 × 1 0 4 2 \times 10 ^ 4 2×104 1 1 1 a i = 0 a _ i = 0 ai=0
8 ∼ 10 8 \sim 10 810 1 0 4 10 ^ 4 104 2 × 1 0 4 2 \times 10 ^ 4 2×104 1 1 1
11 ∼ 13 11 \sim 13 1113 1 0 4 10 ^ 4 104 2 × 1 0 4 2 \times 10 ^ 4 2×104 100 100 100 a i = 0 a _ i = 0 ai=0
14 ∼ 15 14 \sim 15 1415 1 0 4 10 ^ 4 104 2 × 1 0 4 2 \times 10 ^ 4 2×104 100 100 100 u i ≤ v i u _ i \leq v _ i uivi
16 ∼ 20 16 \sim 20 1620 1 0 4 10 ^ 4 104 2 × 1 0 4 2 \times 10 ^ 4 2×104 100 100 100

解题思路

动态规划 + 最短路,在我们建完这个有向图之后,我们需要考虑一下状态转移的问题。

当我们从一个点转移到另外一个点,然后发现因为开放时间的问题,我们没有办法进行移动的时候。我们可以将时间加上若干个 k,也就相当于我晚几个时间 k 进入景点,这样的话就合法了。

我们令 d p [ i ] [ j ] dp[i][j] dp[i][j] 表示从起点出发到达 i i i 号点,花费时间 % k \%k %k 等于 j j j 所需要花费的最小时间,那么我们要求的最终答案就是 d p [ n ] [ 0 ] dp[n][0] dp[n][0]

我们可以用类似于 dijkstra 的操作(spfa应该也行)来进行状态转移。

#include <bits/stdc++.h>
#define int long long // 偷懒了
#define INF 1000000000000000000 // 极大值using namespace std;const int maxn = 1e4 + 5;
int n, m, k, dis[maxn][105], head[maxn], tot;
bool vis[maxn][105]; struct edge{int nxt, to, w;
}e[maxn << 1];void addedge(int u, int v, int w) // 链式前向星建边
{e[++tot].nxt = head[u];e[tot].to = v;e[tot].w = w;head[u] = tot;
}int Ceil(int a, int b) // 把 a 加到恰好比 b 大
{return a + (b - a + k - 1) / k * k;
}void dijkstra()
{priority_queue<pair<int, int>, vector<pair<int, int>>, greater<pair<int, int>>> q;for (int i = 1; i <= n; i++) // 初始化成极大值for (int j = 0; j <= 100; j++)dis[i][j] = INF;dis[1][0] = 0; // 起点达到的时间肯定是 0q.push(make_pair(0, 1)); while (!q.empty()){int u = q.top().second, p = q.top().first;q.pop();if (vis[u][p % k] == 1)continue;vis[u][p % k] = 1;for (int i = head[u]; i; i = e[i].nxt){int v = e[i].to, w = e[i].w;if (p >= w) // 这条边可以过{if (dis[v][(p + 1) % k] > p + 1) // 当前这个走法可以更新状态{dis[v][(p + 1) % k] = p + 1; // 更新一下q.push(make_pair(p + 1, v));}}else // 过不了{int ti = Ceil(p, w); // 加若干个 k 使得自己可以通过if (dis[v][(p + 1) % k] > ti + 1){dis[v][(p + 1) % k] = ti + 1; // 更新q.push(make_pair(ti + 1, v));}}}}
}signed main() 
{cin >> n >> m >> k;for (int i = 1; i <= m; i++) // 建边{int u, v, w;cin >> u >> v >> w;addedge(u, v, w);}dijkstra();if (dis[n][0] == INF) // 到达不了cout << -1;else    cout << dis[n][0]; // 否则输出答案return 0;
}
关键字:免费网络课程平台_百度知道入口_企业seo网站营销推广_百度网盘网页版官网

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: