java判断素数1037_PAT 甲级真题题解(1-62)

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 #include

2 #include

3 #include

4 #include

5 #include

6 using namespacestd;7

8 const int N=123;9 vectorE[N];10 int ans[N], mx = 0;11

12 void dfs(int u, int fa, intlevel) {13 if(E[u].size()==0) {14 mx =max(mx, level);15 ans[level]++;16 return;17 }18 for(int i = 0; i < E[u].size(); i++){19 int v =E[u][i];20 if(v != fa) dfs(v, u, level + 1);21 }22 }23

24 intmain() {25 intn, m;26 scanf("%d %d", &n, &m);27 for(int i = 1; i <= m; i++) {28 intu, v, k;29 scanf("%d %d", &u, &k);30 for(int j = 1; j <= k; j++) {31 scanf("%d", &v);32 E[u].push_back(v);33 }34 }35 dfs(1, 0, 1);36 printf("%d", ans[1]);37 for(int i = 2; i <= mx; i++){38 printf("%d", ans[i]);39 }40 return 0;41 }

View Code

1005 Spell It Right

每位数字加起来,转成英文直接输出就好,注意特判0的情况

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 #include

2 #include

3 using namespacestd;4

5 strings;6 string str[10]={"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};7 int ans[123];8

9 intmain() {10 int num = 0, cnt = 0;11 cin >>s;12 for(int i = 0; i < s.size(); i++) {13 num = num + (s[i] - '0');14 }15 if(num == 0) {16 cout << str[0];17 return 0;18 }19 while(num) {20 ans[cnt++] = num % 10;21 num /= 10;22 }23 for(int i = cnt - 1; i >= 0 ; i--){24 cout <

View Code

1006 Sign In and Sign Out

直接把时间转成数字,大小比较,更新答案。

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 #include

2 #include

3 #include

4 using namespacestd;5

6 const int INF = 0x3f3f3f3f;7 char s[20], ans1[20], ans2[20];8

9 intmain() {10 int n, mi = INF, mx = 0;11 scanf("%d", &n);12 for(int i = 1; i <= n; i++) {13 inta, b, c, d, e, f;14 scanf("%s %d:%d:%d %d:%d:%d", s, &a, &b, &c, &d, &e, &f);15 a = a * 10000 + b * 100 +c;16 d = d * 10000 + e * 100 +f;17 if(a mx) {22 mx =d;23 strcpy(ans2, s);24 }25 }26 printf("%s %s", ans1, ans2);27 return 0;28 }

View Code

1007 Maximum Subsequence Sum

最大子段和,动态规划的一个想法。一直累加,加到小于0,重置为0,从下个开始重新加。

注意坑点:全负输出最前面和最后面的数字;数字全部<=0,并至少有一个0,输出0 0 0。

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 #include

2 #include

3 #include

4 #include

5 using namespacestd;6

7 typedef long longll;8 const int N = 1e4 + 10;9 ll a[N];10

11 intmain() {12 ll k, l, r, ans = 0, sum = 0;13 scanf("%lld", &k);14 for(int i = 1; i <= k; i++) {15 scanf("%lld", &a[i]);16 }17 l = a[1]; r =a[k];18 for(int i = 1; i <= k; i++) {19 sum +=a[i];20 if(sum < 0) sum = 0;21 if(sum >ans) {22 ans =sum;23 r =a[i];24 }25 }26 if(ans == 0) {27 for(int i = 1; i <= k; i++) {28 if(a[i] == 0) {29 //-1 0 -1

30 printf("0 0 0");31 return 0;32 }33 }34 //-1 -1 -1

35 printf("%lld %lld %lld", ans, l, r);36 return 0;37 }38 for(int i = 1; i <= k; i++) {39 if(a[i] ==r) {40 sum = 0;41 for(int j = i; j >= 1; j--) {42 sum +=a[j];43 if(sum ==ans) {44 l =a[j];45 printf("%lld %lld %lld", ans, l, r);46 return 0;47 }48 }49 }50 }51 return 0;52 }

View Code

1008 Elevator

模拟一下就好了。

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 #include

2 #include

3 #include

4 #include

5 using namespacestd;6

7 intmain() {8 int n, k, keep = 0, ans = 0;9 scanf("%d", &n);10 for(int i = 1; i <= n; i++) {11 scanf("%d", &k);12 if( k >keep) {13 ans += 6 * (k -keep);14 } else{15 ans += 4 * (keep -k);16 }17 ans += 5;18 keep =k;19 }20 printf("%d", ans);21 return 0;22 }

View Code

1009 Product of Polynomials

按照要求算出多项式,用map存下。多项式的系数可能为负。

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 #include

2 #include

3 #include

4 #include

5 #include

6 using namespacestd;7

8 const int N = 15;9 inta[N];10 doubleb[N];11 mapm;12

13 intmain() {14 int k, c, mx = 0, cnt = 0;15 doubled;16 scanf("%d", &k);17 for(int i = 1; i <= k; i++) {18 scanf("%d %lf", &a[i], &b[i]);19 }20 scanf("%d",&k);21 for(int i = 1; i <= k; i++) {22 scanf("%d %lf", &c, &d);23 for(int j = 1; j <= k; j++) {24 mx = max(mx, c +a[j]);25 m[(c + a[j])] += b[j] *d;26 }27 }28 for(int i = 0; i <= mx; i++) {29 if(m[i] != 0) cnt++;30 }31 printf("%d",cnt);32 for(int i = mx; i >= 0 ; i--) {33 if(m[i] != 0) printf("%d %.1f", i, m[i]);34 }35 return 0;36 }

View Code

1010 Radix

先把要判断的数,和另一个数每位上的数字处理出来,然后二分答案。右边界要开到$3*10^9$左右。这精度卡的真严谨呀。

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 #include

2 #include

3 #include

4 #include

5 using namespacestd;6

7 typedef long longll;8 strings1, s2;9 ll tag, radix, n1, n2;10 ll a[15], num = 0, k = 1, l = 0, r = 3e9, ans =1e18;11

12 boolcheck(ll mid) {13 ll res = 0, tmp = 1;14 for(int i = n2 - 1; i >= 0; i--) {15 res = res + a[i] *tmp;16 tmp *=mid;17 }18 if(res == num) ans =min(ans, mid);19 if(res >= num || res < 0) return true;20 else return false;21 }22

23 intmain() {24 cin >> s1 >> s2 >> tag >>radix;25 n1 = s1.size(); n2 =s2.size();26

27 if(tag == 2) {28 swap(s1, s2); swap(n1, n2);29 }30

31 for(int i = n1 - 1; i >= 0; i--) {32 if(s1[i] >= 'a' && s1[i] <= 'z') {33 num = num + ( (s1[i] - 'a') + 10 ) *k;34 } else{35 num = num + (s1[i] - '0') *k;36 }37 k *=radix;38 }39 for(int i = n2 - 1; i >= 0; i--) {40 if(s2[i] >= 'a' && s2[i] <= 'z') {41 a[i] = 1LL * ( (s2[i] - 'a') + 10);42 } else{43 a[i] = 1LL * (s2[i] - '0');44 }45 l = max(l, a[i] + 1);46 }47 while(l <=r) {48 ll mid = (l + r) /2;49 if(check(mid)) r = mid - 1;50 else l = mid + 1;51 }52 if(ans == 1e18) cout << "Impossible";53 else cout <

View Code

1011 World Cup Betting

按题目模拟一下,照着输出就好。

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 #include

2 #include

3 #include

4 using namespacestd;5

6 char ans[10];7

8 intmain() {9 double a, b, c, res = 0.65;10 for(int i = 1; i <= 3; i++) {11 scanf("%lf %lf %lf", &a, &b, &c);12 if(a >= b && a >= c) ans[i] = 'W', res *=a;13 else if(b >= a && b >= c) ans[i] = 'T', res *=b;14 else if(c >= a && c >= b) ans[i] = 'L', res *=c;15 }16 res = (res - 1) * 2;17 for(int i = 1; i <= 3; i++) printf("%c", ans[i]);18 printf("%.2f", res);19 return 0;20 }

View Code

1012 The Best Rank

结构体排序。按题目需要的优先级排序,记录下。判断的时候也按照要求的优先级判断,更新答案。注意存等级顺序的时候,相同分数的应排在同一等级。

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 #include

2 #include

3 #include

4 using namespacestd;5

6 const int N =1e6;7 const int INF = 0x3f3f3f3f;8 structnode {9 intid, c, m, e, a;10 }s[N];11 intA[N], C[N], M[N], E[N];12

13 boolcmpa(node s1, node s2) {14 if(s1.a == s2.a) return s1.id s2.a;16 }17

18 boolcmpc(node s1, node s2) {19 if(s1.c == s2.c) return s1.id s2.c;21 }22

23 boolcmpm(node s1, node s2) {24 if(s1.m == s2.m) return s1.id s2.m;26 }27

28 boolcmpe(node s1, node s2) {29 if(s1.e == s2.e) return s1.id s2.e;31 }32

33 intmain() {34 intn, m, id;35 scanf("%d %d", &n, &m);36 for(int i = 1; i <= n; i++) {37 scanf("%d %d %d %d", &s[i].id, &s[i].c, &s[i].m, &s[i].e);38 s[i].a = (s[i].c + s[i].m +s[i].e);39 }40 sort(s + 1, s + 1 +n, cmpa);41 for(int i = 1; i <= n; i++) {42 if(s[i].a == s[i-1].a) A[s[i].id] = A[ s[i - 1].id ];43 else A[s[i].id] =i;44 }45 sort(s + 1, s + 1 +n, cmpc);46 for(int i = 1; i <= n; i++) {47 if(s[i].c == s[i-1].c) C[s[i].id] = C[ s[i - 1].id ];48 else C[s[i].id] =i;49 }50 sort(s + 1, s + 1 +n, cmpm);51 for(int i = 1; i <= n; i++) {52 if(s[i].m == s[i-1].m) M[s[i].id] = M[ s[i - 1].id ];53 else M[s[i].id] =i;54 }55 sort(s + 1, s + 1 +n, cmpe);56 for(int i = 1; i <= n; i++) {57 if(s[i].e == s[i-1].e) E[s[i].id] = E[ s[i - 1].id ];58 else E[s[i].id] =i;59 }60 for(int i = 1; i <= m; i++) {61 int level =INF;62 charans;63 scanf("%d", &id);64 if(A[id] != 0 && A[id] < level) level = A[id], ans = 'A';65 if(C[id] != 0 && C[id] < level) level = C[id], ans = 'C';66 if(M[id] != 0 && M[id] < level) level = M[id], ans = 'M';67 if(E[id] != 0 && E[id] < level) level = E[id], ans = 'E';68 if(level == INF) printf("N/A\n");69 else printf("%d %c\n", level, ans);70 }71 return 0;72 }

View Code

1013 Battle Over Cities

考虑某个顶点(k)被占领,那么我们需要把剩余的城市连接起来(这时候不考虑那些和顶点k连接的线),假设剩余的城市形成了m个集合(每个集合内的点都是连通的),我们需要m-1条边连接它们。

(代码中的cnt-2,是计算的时候把顶点k也单独看成一个集合,但是这个点不需要计算,所以再cnt-1的基础上再减去1)

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 #include

2 #include

3 #include

4 #include

5 using namespacestd;6

7 const int N = 1234;8 int fa[N], u[N * N], v[N *N];9

10 int fi(intx) {11 return x == fa[x] ? x : fa[x] =fi(fa[x]);12 }13

14 void Union(int x, inty) {15 int fx = fi(x), fy =fi(y);16 if(fx !=fy) {17 fa[fx] =fy;18 }19 }20

21 intmain() {22 intn, m, k, p;23 scanf("%d %d %d", &n, &m, &k);24 for(int i = 1; i <= m; i++) {25 scanf("%d %d", &u[i], &v[i]);26 }27 for(int i = 1; i <= k; i++) {28 int cnt = 0;29 scanf("%d", &p);30 for(int j = 1; j <= n; j++) fa[j] =j;31 for(int j = 1; j <= m; j++) {32 if(u[j] == p || v[j] == p) continue;33 elseUnion(u[j], v[j]);34 }35 for(int j = 1; j <= n; j++) {36 if(fa[j] == j) cnt++;37 }38 printf("%d\n", cnt - 2);39 }40 return 0;41 }

View Code

1014 Waiting in Line

队列模拟下。注意能够在17:00之前被服务到的,不管他需要办理业务多长时间,都是能够有答案的。

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 #include

2 #include

3 #include

4 #include

5 #include

6 using namespacestd;7

8 const int N = 1234;9 queuewindow[N];10 intans1[N], ans2[N], t[N];11

12 intmain() {13 intn, m, k, q, time;14 scanf("%d %d %d %d", &n, &m, &k, &q);15 for(int i = 1; i <= k; i++) {16 int pos = 1;17 scanf("%d", &time);18 for(int j = 1; j <= n; j++) {19 if(i <= n *m) {20 if(window[j].size() < window[pos].size()) pos =j;21 } else{22 if(window[j].front() < window[pos].front()) pos =j;23 }24 }25 t[pos] +=time;26 window[pos].push(t[pos]);27 if(i > n *m) window[pos].pop();28 if(t[pos] - time < 540) ans1[i] = 8 + t[pos] / 60, ans2[i] = t[pos] % 60;29 else ans1[i] = -1;30 }31 for(int i = 1; i <= q; i++) {32 intpos;33 scanf("%d", &pos);34 if(ans1[pos] == -1) printf("Sorry\n");35 else printf("%02d:%02d\n", ans1[pos], ans2[pos]);36 }37 return 0;38 }

View Code

1015 Reversible Primes

把原来的数转换成对应进制下的逆反数。再对原来的数和逆反数进行素数判断。比如23在2进制下为10111,逆反数为11101,再转换成10进制为29。

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 #include

2 #include

3 using namespacestd;4

5 int Reverse(int n, intd) {6 int res = 0;7 while(n) {8 res = res * d + n %d;9 n /=d;10 }11 returnres;12 }13

14 bool Check(intk) {15 if(k <= 1) return false;16 for(int i = 2; i * i <= k; i++) {17 if(k % i == 0) return false;18 }19 return true;20 }21

22 intmain() {23 intn, d;24 while(scanf("%d", &n) != EOF && n >= 0) {25 scanf("%d", &d);26 if(Check(n) &&Check( Reverse(n, d) )) {27 printf("Yes\n");28 } else{29 printf("No\n");30 }31 }32 return 0;33 }

View Code

1016 Phone Bills

注意题目中给的24小时的花费是 分/分钟。所有记录放进结构体中,按优先级大小 名字的字典序 > 时间排序,因为题目中时间的唯一性和时间都是按开始到结束排序的,那么前后分别为on和off的必然是合法数据。排序完后再映射到每个人去(参考了柳神的做法,感觉很巧妙),接着计算差值,按照要求输出。

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 #include

2 #include

3 #include

4 #include

5 #include

6 using namespacestd;7

8 int cost[25];9 structnode{10 stringname;11 inttime, month, day, hour, minute, stuate, status;12 }rcd[1234];13 map >customer;14

15 boolcmp(node x, node y) {16 if(x.name == y.name) return x.time

20 intmain() {21 intn;22 for(int i = 0; i < 24; i++) scanf("%d", &cost[i]), cost[24] +=cost[i];23 scanf("%d", &n);24 for(int i = 1; i <= n; i++) {25 stringstr;26 cin >>rcd[i].name;27 scanf("%d:%d:%d:%d", &rcd[i].month, &rcd[i].day, &rcd[i].hour, &rcd[i].minute);28 cin >>str;29 if(str == "on-line") rcd[i].status = 1;30 else rcd[i].status = 0;31 rcd[i].time = rcd[i].day * 24 * 60 + rcd[i].hour * 60 +rcd[i].minute;32 }33 sort(rcd + 1, rcd + 1 +n, cmp);34 for(int i = 1; i <= n; i++) {35 if(rcd[i - 1].name == rcd[i].name && rcd[i - 1].status == 1 && rcd[i].status == 0) {36 customer[rcd[i].name].push_back(rcd[i - 1]);37 customer[rcd[i].name].push_back(rcd[i]);38 }39 }40 for(auto p : customer) {41 double res = 0;42 vector date =p.second;43 cout << p.first << " ";44 printf("%02d\n", date[0].month);45 for(int i = 0; i < date.size(); i += 2) {46 printf("%02d:%02d:%02d", date[i].day, date[i].hour, date[i].minute);47 printf("%02d:%02d:%02d", date[i + 1].day, date[i + 1].hour, date[i + 1].minute);48 double c1 = 0, c2 = 0;49 for(int j = 0; j < 24; j++) {50 if(j

69 return 0;70 }

View Code

1017 Queueing at Bank

直接模拟。每个窗口遍历一下,找到时间最前的窗口,维护下每个窗口的时间。这题和1014很像,但是有一个区别,1014题目中说的是17:00之前(包括17:00)服务得到就服务,这题是只要你17:00之前(包括17:00)到达银行,那你就能被服务,不用管你是不是在17:00后服务的。(这个就是最后一个点的trick)(还是要仔细看题呀)。

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 #include

2 #include

3 #include

4 #include

5 using namespacestd;6

7 const int N = 1e4 + 10;8 const int INF = 0x3f3f3f3f;9

10 intt[N];11 structnode{12 inttime, cost;13 }p[N];14

15 boolcmp(node x, node y) {16 return x.time

19 intmain(){20 int n, k, cnt = 0;21 double ans = 0;22 scanf("%d %d", &n, &k);23 for(int i = 1; i <= n; i++) {24 inthh, mm, ss;25 scanf("%d:%d:%d %d", &hh, &mm, &ss, &p[i].cost);26 p[i].time = 3600 * hh + 60 * mm +ss;27 p[i].cost *= 60;28 }29 sort(p + 1, p + 1 +n, cmp);30 for(int i = 1; i <= k; i++) t[i] = 8 * 3600;31 for(int i = 1; i <= n; i++) {32 if(p[i].time > 17 * 3600) break;33 int pos = 1;34 for(int j = 1; j <= k; j++) {35 if(t[pos] > t[j]) pos =j;36 }37 if(p[i].time >t[pos]) {38 t[pos] =p[i].time;39 } else{40 ans += 1.0 * (t[pos] -p[i].time);41 }42 t[pos] +=p[i].cost;43 cnt++;44 }45 printf("%.1f\n", ans/60.0/cnt);46 return 0;47 }

View Code

1018 Public Bike Management

一开始我用dijkstra,一直有几个点过不去。去看了下网上的题解,发现这题数据不大可以直接用暴力DFS+剪枝过。到达终点,判断的条件需要满足最短路条件,先满足从0点拿出最少,然后满足送回0点最少。

判断顺序需要注意。还有就是DFS的时候需要回溯,标记打完记得消除。

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 #include

2 #include

3 #include

4 #include

5 #include

6 using namespacestd;7

8 const int maxn = 555;9 const int INF = 0x3f3f3f3f;10 boolvis[maxn];11 intc[maxn], d[maxn];12 intCmax, N, Sp, M;13 ///take 拿去;bring 带回

14 int sum = 0, take = 0, bring = 0;15 int ans_sum = INF, ans_take = INF, ans_bring =INF;16 vectorpath;17 vectorans_path;18 vector< pair >E[maxn];19

20 void dfs(intu) {21 if(ans_sum < sum ) return;22 if(u ==Sp) {23 if(ans_sum >sum) {24 ans_sum =sum;25 ans_bring =bring;26 ans_take =take;27 ans_path =path;28 } else{29 if(ans_take > take || (ans_take == take && (ans_bring >bring) )) {30 ans_bring =bring;31 ans_take =take;32 ans_path =path;33 }34 }35 return;36 }37 for(int i = 0; i < E[u].size(); i++) {38 int v =E[u][i].first;39 int dis =E[u][i].second;40 int tmp_sum = sum, tmp_bring = bring, tmp_take =take;41 if(!vis[v] && d[v] >= d[u] +dis) {42 vis[v] = 1;43 sum +=dis;44 bring += (c[v] - Cmax / 2);45 if(bring < 0) take -= bring, bring = 0;46 path.push_back(v);47 d[v] = d[u] +dis;48 dfs(v);49 vis[v] = 0;50 sum =tmp_sum;51 bring =tmp_bring;52 take =tmp_take;53 path.pop_back();54 }55 }56

57 }58

59 intmain(){60 scanf("%d%d%d%d", &Cmax, &N, &Sp, &M);61 for(int i = 1; i <= N; i++) {62 scanf("%d", &c[i]);63 }64 for(int i = 1; i <= M; i++) {65 intu, v, w;66 scanf("%d %d %d", &u, &v, &w);67 E[u].push_back(make_pair(v, w));68 E[v].push_back(make_pair(u, w));69 }70 for(int i = 0; i< maxn; i++) d[i] =INF;71 d[0] = 0; vis[0] = 1;72 dfs(0);73 printf("%d 0", ans_take);74 for(int i = 0; i < ans_path.size(); i++) {75 printf("->%d", ans_path[i]);76 }77 printf("%d",ans_bring);78 return 0;79 }

View Code

1019 General Palindromic Number

把n转换成b进制下的数,判断下该数是否回文。

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 #include

2 #include

3 using namespacestd;4

5 int a[50];6

7 intmain() {8 bool f = 1;9 int n, m, cnt = 0;10 cin >> n >>m;11 while(n) {12 a[++cnt] = n %m;13 n /=m;14 }15 for(int i = 1; i <= cnt / 2; i++) {16 if(a[i] != a[cnt - i + 1]) {17 f = 0;18 break;19 }20 }21 if(f) printf("Yes\n");22 else printf("No\n");23 for(int i = cnt; i >= 1; i--) {24 printf("%d", a[i]);25 if(i != 1) printf(" ");26 }27 return 0;28 }

View Code

1020 Tree Traversals

前序遍历:根左右;中序遍历:左根右;后序遍历:左右根。

该题知道中序遍历和后序遍历,求层序遍历。 由后序遍历我们可以知道根节点。根据得到的根节点,去中序遍历中找到对应位置,该位置左边的就为左子树的顶点,右边的为右子树的顶点,根据长度我们可以同时在后序遍历中找到对应段。一直搜索下去,直到叶子节点,没有子树的设置-1。

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 #include

2 #include

3 #include

4 #include

5 using namespacestd;6

7 const int N = 1e7 + 10;8 int post[33], in[33];9 intnode[N];10

11 //l1 r1 后序; l2 r2 中序

12 void restore(int l1, int r1, int l2, int r2, intid) {13 if(l1 >r1) {14 node[id] = -1;15 return;16 }17 node[id] =post[r1];18 for(int i = l2; i <= r2; i++) {19 if(in[i] ==node[id]) {20 int len = i -l2;21 restore(l1, l1 + len -1, l2, i - 1, 2 *id);22 restore(l1 + len, r1 - 1, i + 1, r2, 2 * id + 1);23 }24 }25 }26

27 intmain() {28 intn;29 cin >>n;30 for(int i = 1; i <= n; i++) cin >>post[i];31 for(int i = 1; i <= n; i++) cin >> in[i];32 restore(1, n, 1, n, 1);33 queue Q;34 Q.push(1);35 while(!Q.empty()) {36 int u =Q.front();37 Q.pop();38 if(node[2 * u] != -1) Q.push(2 *u);39 if(node[2 * u + 1] != -1) Q.push(2 * u + 1);40 if(u != 1) cout << " ";41 if(node[u] != -1) cout <

View Code

1021 Deepest Root

先并查集判断下是不是树。DFS暴力跑每个顶点,求每个顶点能跑最远的距离。本来以为还要剪枝,做下标记什么的,没想到暴力一跑,A了。(数据可能比较水,暴力的时间复杂度达到O(n^2))

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 #include

2 #include

3 #include

4 #include

5 #include

6 using namespacestd;7

8 const int N = 1e4 + 10;9 intfa[N], d[N];10 vector E[N];11

12 int fi(intx) {13 return x == fa[x] ? fa[x] : fa[x] =fi(fa[x]);14 }15

16 void Union(int x, inty) {17 int fx = fi(x), fy =fi(y);18 if(fx !=fy) {19 fa[fx] =fy;20 }21 }22

23 void dfs(int st, int u, int F, intdeep) {24 d[st] =max(d[st], deep);25 for(int i = 0; i < E[u].size(); i++) {26 int v =E[u][i];27 if(v != F) dfs(st, v, u, deep + 1);28 }29 }30

31 intmain() {32 int n, cnt = 0;33 scanf("%d", &n);34 for(int i = 1; i <= n; i++) fa[i] =i;35 for(int i = 1; i < n; i++){36 intu, v;37 scanf("%d %d", &u, &v);38 E[u].push_back(v);39 E[v].push_back(u);40 Union(u, v);41 }42 for(int i = 1; i <= n; i++) {43 if(i == fa[i]) cnt++;44 }45 if(cnt > 1) {46 printf("Error: %d components", cnt);47 } else{48 int mx = 0;49 for(int i = 1;i <= n; i++) {50 dfs(i, i, -1, 1);51 mx =max(mx, d[i]);52 }53 for(int i = 1; i <= n; i++) {54 if(d[i] == mx) printf("%d\n", i);55 }56 }57

58 return 0;59 }

View Code

1022 Digital Library

这题就用map搞下就好了。本来想用hash,搞了一个多小时,一直过不了,就放弃了。注意输出ID的时候用%7d,一直没注意,卡了挺久的。

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 #include

2 #include

3 #include

4 #include

5 using namespacestd;6

7

8 strings;9 map > mp[10];10

11 intmain() {12 intn, m, id, pos;13 cin >>n;14 for(int i = 1; i <= n; i++) {15 cin >>id;16 getchar();17 for(int j = 1; j <= 5; j++) {18 if(j == 3) {19 while(cin >>s) {20 mp[j][s].insert(id);21 char c =getchar();22 if(c == '\n') break;23 }24 continue;25 }26 getline(cin, s);27 mp[j][s].insert(id);28 }29 }30 cin >>m;31 for(int i = 1; i <= m; i++) {32 charc;33 cin >> pos >>c;34 getchar();35 getline(cin, s);36 cout << pos << ":" << s <

View Code

1023 Have Fun with Numbers

把2倍的计算出来与原来的比较一下。字符串存,no的时候也要输出字符串。

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 #include

2 #include

3 #include

4 #include

5 using namespacestd;6

7 char s1[25], s2[25], ans[25];8

9 intmain() {10 int val, cnt = 0;11 scanf("%s", s1 + 1);12 int len = strlen(s1 + 1);13 for(int i = len; i >= 1; i--) {14 val = 2 * (s1[i] - '0') +cnt;15 cnt = 0;16 if(val >= 10) val -= 10, cnt++;17 s2[i] = (val + '0'); ans[i] =s2[i];18 }19 sort(s1 + 1, s1 + 1 +len);20 sort(s2 + 1, s2 + 1 +len);21 for(int i = 1; i <= len; i++) {22 if(s1[i] !=s2[i]) {23 printf("No\n");24 if(cnt > 0) printf("1%s", ans + 1);25 else printf("%s", ans + 1);26 return 0;27 }28 }29 printf("Yes\n");30 printf("%s", ans + 1);31 return 0;32 }

View Code

1024 Palindromic Number

考虑下最大能变成多少,每次加上翻转后的数,看成每次乘上2,那么最大的数会变成$10^10 * 2^100$。long long会爆,用string存。

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 #include

2 #include

3 #include

4 #include

5 using namespacestd;6

7 typedef long longll;8

9 bool check(stringn) {10 for(int i = 0, j = n.size() - 1; i < j; i++, j--) {11 if(n[i] != n[j]) return false;12 }13 return true;14 }15

16 string cal(stringn) {17 string m = n, res = "";18 reverse(n.begin(), n.end());19 int cnt = 0;20 for(int i = m.size() - 1; i >= 0; i--) {21 int d = (m[i] - '0') + (n[i] - '0') +cnt;22 cnt = 0;23 if(d >= 10) d -= 10, cnt++;24 char c = d + '0';25 res = c +res;26 }27 if(cnt > 0) res = "1" +res;28 returnres;29 }30

31 intmain() {32 intk;33 stringn;34 cin >> n >>k;35 for(int i = 1; i <= k; i++) {36 if(check(n)) {37 cout << n << endl << i - 1 <

View Code

1025 PAT Ranking

结构体排序。部分先排,再全部排序。

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 #include

2 #include

3 #include

4 #include

5 using namespacestd;6

7 typedef long longll;8 const int N = 30000 +10;9 structnode {10 ll id;11 intgrade, fin, loc_num, loc_rank;12 }p[N];13

14 boolcmp(node x, node y) {15 if(x.grade == y.grade) return x.id y.grade;17 }18

19 intmain() {20 int n, m, cnt = 0;21 scanf("%d", &n);22 for(int i = 1; i <= n; i++) {23 scanf("%d", &m);24 for(int j = 0; j < m; j++) {25 scanf("%lld %d", &p[cnt + j].id, &p[cnt +j].grade);26 p[cnt + j].loc_num =i;27 }28 sort(p + cnt, p + cnt +m, cmp);29 p[cnt].loc_rank = 1;30 for(int j = 1; j < m; j++) {31 if(p[cnt + j].grade == p[cnt + j - 1].grade) {32 p[cnt + j].loc_rank = p[cnt + j - 1].loc_rank;33 } else{34 p[cnt + j].loc_rank = j + 1;35 }36 }37 cnt +=m;38 }39 sort(p, p +cnt, cmp);40 printf("%d\n", cnt);41 for(int i = 0; i < cnt; i++) {42 if(i == 0 || p[i].grade != p[i - 1].grade) {43 p[i].fin = i + 1;44 } else{45 p[i].fin = p[i - 1].fin;46 }47 printf("%013lld %d %d %d\n", p[i].id, p[i].fin, p[i].loc_num, p[i].loc_rank);48 }49 return 0;50 }

View Code

1027 Colors in Mars

进制转换

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 #include

2 #include

3 #include

4 #include

5 using namespacestd;6

7 int c[4];8

9 void solve(intv) {10 charc1, c2;11 int a1 = v / 13, a2 = v % 13;12 if(a1 > 9) c1 = 'A' + (a1 - 10);13 else c1 = '0' +a1;14 if(a2 > 9) c2 = 'A' + (a2 - 10);15 else c2 = '0' +a2;16 cout << c1 <

19 intmain() {20 for(int i = 1; i <= 3; i++) cin >>c[i];21 cout << "#";22 for(int i = 1; i <= 3; i++) solve(c[i]);23 return 0;24 }

View Code

1028 List Sorting

结构体排序,strcmp函数。(这个函数都快忘记了,-_-||)

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 #include

2 #include

3 #include

4 #include

5 using namespacestd;6

7 const int N = 1e5 + 10;8 structnode {9 intid, grade;10 char name[10];11 }p[N];12

13 boolcmp1(node x, node y) {14 return x.id

17 boolcmp2(node x, node y) {18 if( strcmp(x.name, y.name) == 0) {19 return x.id

24 boolcmp3(node x, node y) {25 if(x.grade ==y.grade) {26 return x.id

31 intmain() {32 intn, k;33 scanf("%d %d", &n, &k);34 for(int i = 1; i <= n; i++) {35 scanf("%d %s %d", &p[i].id, &p[i].name, &p[i].grade);36 }37 if(k == 1) {38 sort(p + 1, p + 1 +n, cmp1);39 }40 else if(k == 2){41 sort(p + 1, p + 1 +n, cmp2);42 } else{43 sort(p + 1, p + 1 +n, cmp3);44 }45 for(int i = 1; i <= n; i++) {46 printf("%06d %s %d\n", p[i].id, p[i].name, p[i].grade);47 }48 return 0;49 }

View Code

1029 Median

最后一组卡内存。确定位置$(n+m+1)/2$,输入m个数字的同时,通过与之前输入的n个数字比较,用一个下标不断逼近位置。

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 #include

2 #include

3 #include

4 using namespacestd;5

6 const int N = 2e5 + 5;7 inta[N];8

9 intmain() {10 intn, m, num;11 scanf("%d", &n);12 for(int i = 1; i <= n; i++) scanf("%d", &a[i]);13 scanf("%d", &m);14 int id = 1, cnt = 0;15 int mid = (n + m + 1) / 2;16 for(int i = 1; i <= m; i++) {17 scanf("%d", &num);18 while(id <= n && num >a[id]) {19 cnt++;20 if(cnt == mid) {printf("%d", a[id]); return 0;}21 id++;22 }23 cnt++;24 if(cnt == mid) {printf("%d", num); return 0;}25 }26 while(cnt < mid && id

View Code

1030 Travel Plan

最短路套路题+遍历路径。

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 #include

2 #include

3 #include

4 #include

5 #include

6 #include

7 using namespacestd;8

9 const int N = 500 + 10;10 boolvis[N];11 intsum[N], d[N], pre[N];12 intn, m, c1, c2;13

14 structedge{15 intu, v, dis, cost;16 };17

18 structnode{19 intu, dis;20 friend bool operator b.dis;22 }23 };24

25 vectorE[N];26

27 voiddijkstra() {28 priority_queueQ;29 Q.push(node{c1, 0});30 memset(d, 0x3f, sizeof(d));31 d[c1] = 0;32 while(!Q.empty()) {33 int u =Q.top().u;34 Q.pop();35 if(vis[u]) continue;36 vis[u] = 1;37 for(int i = 0; i < E[u].size(); i++) {38 int v = E[u][i].v, w = E[u][i].dis, c =E[u][i].cost;39 if(d[v] > d[u] +w) {40 d[v] = d[u] +w;41 sum[v] = sum[u] +c;42 Q.push(node{v, d[v]});43 pre[v] =u;44 }45 else if(d[v] == d[u] +w) {46 if(sum[u] + c

55 }56

57 void print(intu){58 if(u != -1){59 print(pre[u]);60 printf("%d", u);61 }62 }63

64 intmain() {65 scanf("%d %d %d %d", &n, &m, &c1, &c2);66 for(int i = 1; i <= m; i++) {67 intu, v, w, c;68 scanf("%d %d %d %d", &u, &v, &w, &c);69 E[u].push_back(edge{u, v, w, c});70 E[v].push_back(edge{v, u, w, c});71 }72 dijkstra();73 pre[c1] = -1;74 print(c2);75 printf("%d %d", d[c2], sum[c2]);76 return 0;77 }

View Code

1031 Hello World for U

模拟暴力输出。

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 #include

2 #include

3 #include

4 #include

5 using namespacestd;6

7 char s[85];8

9 intmain() {10 scanf("%s", s);11 int n = strlen(s), n1 = (n + 2) / 3, n2 = n - 2 *n1;12 for(int i = 0; i < n1 - 1; i++) {13 printf("%c", s[i]);14 for(int j = 1; j <= n2; j++) printf(" ");15 printf("%c\n", s[n - i - 1]);16 }17 for(int i = n1 - 1; i <= n1 + n2; i++) {18 printf("%c",s[i]);19 }20 return 0;21 }

View Code

1032 Sharing

记录下位置往后跑。重复经过的第一个位置为答案。

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 #include

2 #include

3 #include

4 using namespacestd;5

6 const int N = 1e5 + 10;7 intnxt[N], vis[N];8

9 intmain() {10 ints1, s2, n;11 scanf("%d %d %d", &s1, &s2, &n);12 for(int i = 1; i <= n; i++) {13 intNow, Nxt;14 charc;15 scanf("%d %c %d", &Now, &c, &Nxt);16 nxt[Now] =Nxt;17 }18 while(s1 != -1) {19 vis[s1]++;20 s1 =nxt[s1];21 }22 while(s2 != -1) {23 if(vis[s2]) {24 printf("%05d\n", s2);25 return 0;26 }27 vis[s2]++;28 s2 =nxt[s2];29 }30 printf("-1\n");31 return 0;32 }

View Code

1033 To Fill or Not to Fill

贪心策略:优先前往油价低的站,若比当前油价低,直接跑到这个站;否则前往这些站中油价最低的站。更新当前位置和油桶中的油量和最后的答案。

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 #include

2 #include

3 #include

4 using namespacestd;5

6 const int N = 555;7 const double INF =1e18;8 structnode {9 doubledis, price;10 }sta[N];11

12 boolcmp(node x, node y) {13 return x.dis

16 intmain() {17 int now_pos = 0, n;18 double c_max, d, d_avg, ans = 0, now_tank = 0;19 scanf("%lf %lf %lf %d", &c_max, &d, &d_avg, &n);20 for(int i = 0; i < n; i++) {21 scanf("%lf %lf", &sta[i].price, &sta[i].dis);22 }23 sta[n].price = 0; sta[n].dis =d;24 sort(sta, sta + 1 +n, cmp);25 if(sta[0].dis != 0) {26 printf("The maximum travel distance = 0.00\n");27 return 0;28 }29 while(now_pos sta[i].price) {34 min_price =sta[i].price;35 nxt_pos =i;36 if(min_price =need) {45 now_tank -=need;46 } else{47 ans += (need - now_tank) *sta[now_pos].price;48 now_tank = 0;49 }50 } else{51 ans += (c_max - now_tank) *sta[now_pos].price;52 now_tank = c_max -need;53 }54 now_pos =nxt_pos;55 }56 if(now_pos ==n) {57 printf("%.2f\n", ans);58 } else{59 printf("The maximum travel distance = %.2f\n", sta[now_pos].dis + c_max *d_avg);60 }61 return 0;62 }

View Code

1034 Head of a Gang

并查集扔扔,map标记来标记过去,最后存起来排个序。

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 //1034 Head of a Gang

2 #include

3 #include

4 #include

5 #include

6 #include

7 using namespacestd;8

9 structnode{10 stringname;11 intcnt;12 };13

14 boolcmp(node x, node y) {15 return x.name

18 const int N = 2010;19 vector v[N];20 vector ans;21 mapm;22 maprm;23 intfa[N], t[N];24

25 int fi(intx) {26 return fa[x] == x ? x : fa[x] =fi(fa[x]);27 }28

29 intmain() {30 for(int i = 1; i < N; i++) fa[i] =i;31 int cnt = 0;32 intn, k, time;33 stringname1, name2, name;34 cin >> n >>k;35 for(int i = 1; i <= n; i++) {36 cin >> name1 >> name2 >>time;37 if(!m[name1]) m[name1] = ++cnt, rm[cnt] =name1;38 if(!m[name2]) m[name2] = ++cnt, rm[cnt] =name2;39 t[m[name1]] +=time;40 t[m[name2]] +=time;41 int fx = fi(m[name1]), fy =fi(m[name2]);42 if(fx !=fy) {43 fa[fx] =fy;44 }45 }46 for(int i = 1; i <= n; i++) {47 int id =fi(i);48 v[id].push_back(rm[i]);49 }50 for(int i = 1; i <= n; i++) {51 if(v[i].size() > 2) {52 int sum = 0, mx = 0;53 for(int j = 0; j < v[i].size(); j++) {54 sum +=t[m[v[i][j]]];55 if(mx 2 *k) ans.push_back(tmp);62 }63 }64 sort(ans.begin(), ans.end(), cmp);65 cout << ans.size() <

View Code

1035 Password

注意输出格式。

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 #include

2 #include

3 #include

4 #include

5 using namespacestd;6

7 const int N = 1005;8 boolvis[N];9 char s1[N][15], s2[N][15];10

11 intmain() {12 int n, m, cnt = 0;13 scanf("%d", &n);14 for(int i = 0; i < n; i++) {15 scanf("%s %s", s1[i], s2[i]);16 m =strlen(s2[i]);17 for(int j = 0; j < m; j++) {18 if(s2[i][j] == '1') s2[i][j] = '@', vis[i] = 1;19 if(s2[i][j] == '0') s2[i][j] = '%', vis[i] = 1;20 if(s2[i][j] == 'l') s2[i][j] = 'L', vis[i] = 1;21 if(s2[i][j] == 'O') s2[i][j] = 'o', vis[i] = 1;22 }23 if(vis[i]) cnt++;24 }25 if(!cnt) {26 if(n == 1) printf("There is %d account and no account is modified\n", n);27 else printf("There are %d accounts and no account is modified\n", n);28 } else{29 printf("%d\n", cnt);30 for(int i = 0; i < n; i++) {31 if(vis[i]) printf("%s %s\n", s1[i], s2[i]);32 }33 }34 return 0;35 }

View Code

1036 Boys vs Girls

模拟即可。

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 #include

2 #include

3 #include

4 #include

5 using namespacestd;6

7 structnode{8 stringname, gender, ID;9 intgrade;10 }ans;11

12 boolcmp(node x, node y) {13 return x.grade

16 vector M, F;17

18 intmain() {19 intn, grade;20 stringname, gender, ID;21 cin >>n;22 for(int i = 1; i <= n; i++) {23 cin >> name >> gender >> ID >>grade;24 if(gender == "M") M.push_back(node{name, gender, ID, grade});25 elseF.push_back(node{name, gender, ID, grade});26 }27 sort(M.begin(), M.end(), cmp);28 sort(F.begin(), F.end(), cmp);29 if(!M.size() || !F.size()) {30 if(F.size()) {31 ans = F[F.size() - 1];32 cout << ans.name << " " << ans.ID <

View Code

1037 Magic Coupon

先排序,接着前面负的搞一次,后面正的搞一次。

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 //1037

2 #include

3 #include

4 #include

5 using namespacestd;6

7 intn, m;8 const int N = 1e5 + 10;9 typedef long longll;10 ll a[N], b[N];11

12 intmain() {13 ll ans = 0;14 scanf("%d", &n);15 for(int i = 1; i <= n; i++) scanf("%lld", &a[i]);16 scanf("%d", &m);17 for(int i = 1; i <= m; i++) scanf("%lld", &b[i]);18 sort(a + 1, a + 1 +n);19 sort(b + 1, b + 1 +m);20 for(int i = 1, j = 1; i <= n && j <= m && b[j] < 0 && a[i] < 0; i++, j++) {21 ans += a[i] *b[j];22 }23 for(int i = n, j = m; i >= 1 && j >= 1 && b[j] > 0 && a[i] > 0; i--, j--) {24 ans += a[i] *b[j];25 }26 printf("%lld\n", ans);27 return 0;28 }

View Code

1038 Recover the Smallest Number

使得数字最小,字符串排序的时候可以这样考虑,判断是s1 s2 小还是 s2 s1小即可。

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 //1038

2 #include

3 #include

4 #include

5 #include

6 using namespacestd;7

8 vector v;9

10 bool cmp(string s1, strings2) {11 return s1 + s2 < s2 +s1;12 }13

14 intmain() {15 intn;16 bool vis = 0;17 strings;18 cin >>n;19 for(int i = 0; i < n; i++) {20 cin >>s;21 v.push_back(s);22 }23 sort(v.begin(), v.end(), cmp);24 s = "";25 for(int i = 0; i < n; i++) s = s +v[i];26 for(int i = 0; i < s.size(); i++) {27 if(s[i] == '0' && !vis) continue;28 else{29 vis = 1;30 cout <

View Code

1039 Course List for Student

map标记位置,按坑填就即可。题目中的N应该是400000吧(汗...)

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 #include

2 #include

3 #include

4 #include

5 #include

6 using namespacestd;7

8 char s[10];9 map m;10 const int N = 400000 + 10;11 vector v[N];12

13 intcal() {14 int res = (s[3] - '0');15 res += (s[2] - 'A') * 10;16 res += (s[1] - 'A') * 26 * 10;17 res += (s[0] - 'A') * 26 * 26 * 10;18 returnres;19 }20

21 intmain() {22 int n, k, a, b, name, cnt = 1;23 scanf("%d%d", &n, &k);24 for(int i = 1; i <= k; i++) {25 scanf("%d%d", &a, &b);26 for(int j = 1; j <= b; j++) {27 scanf("%s", s);28 name = cal() + 1;29 if(!m[name]) m[name] = cnt++;30 v[m[name]].push_back(a);31 }32 }33 for(int i = 1 ; i <= cnt; i++) sort(v[i].begin(), v[i].end());34 for(int i = 1; i <= n; i++) {35 scanf("%s", s);36 name = cal() + 1;37 int id =m[name];38 printf("%s %d", s, v[id].size());39 for(int j = 0; j < v[id].size(); j++) {40 printf("%d", v[id][j]);41 }42 printf("\n");43 }44 return 0;45 }

View Code

1040 Longest Symmetric String

从两个扩展和从一个扩展分别跑一次,更新答案。

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 //1040

2 #include

3 #include

4 #include

5 using namespacestd;6

7 const int N = 1234;8 chars[N];9

10 intmain() {11 int n = 0, ans = 1;12 charc;13 while(scanf("%c", &c) != EOF && c != '\n') {14 s[n++] =c;15 }16 for(int k = 0; k < n; k++) {17 int tmp = 1;18 for(int i = 1; (k - i) >= 0 && (k + i) < n; i++) {19 if(s[k - i] == s[k + i]) tmp += 2;20 else break;21 }22 ans =max(ans, tmp);23 }24 for(int k = 0; k < n; k++) {25 int tmp = 0;26 if(s[k] == s[k + 1]) {27 for(int i = 0; (k - i) >= 0 && (k + 1 + i) < n; i++) {28 if(s[k - i] == s[k + 1 + i]) tmp += 2;29 else break;30 }31 }32 ans =max(ans, tmp);33 }34 printf("%d\n", ans);35 return 0;36 }

View Code

1041 Be Unique

map一下,输出计数为1的即可。否则输出None

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 #include

2 #include

3 using namespacestd;4

5 const int N = 1e5 + 10;6 inta[N];7 mapm;8

9 intmain() {10 intn;11 cin >>n;12 for(int i = 1; i <= n; i++) {13 cin >>a[i];14 m[a[i]]++;15 }16 for(int i = 1; i <= n; i++) {17 if(m[a[i]] == 1) {18 cout << a[i] <

View Code

1042 Shuffling Machine

存放前后结果,模拟过去即可。

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 #include

2 using namespacestd;3

4 char s[5] = {'S','H','C','D','J'};5

6 int A[60], B[60], in[60];7

8 intmain() {9 intn;10 scanf("%d", &n);11 for(int i = 1; i <= 54; i++) A[i] =i;12 for(int i = 1; i <= 54; i++) scanf("%d", &in[i]);13 for(int i = 0; i < n; i++) {14 for(int j = 1; j <= 54; j++) B[in[j]] =A[j];15 for(int j = 1; j <= 54; j++) A[j] =B[j];16 }17 for(int i = 1; i <= 54; i++) {18 if(i > 1) printf(" ");19 printf("%c%d", s[(B[i]-1)/13], (B[i]-1)%13+1);20 }21 return 0;22 }

View Code

1043 Is It a Binary Search Tree

(学习一波柳神的写法。)由前序遍历找到左右孩子的边界。注意边界的调整,因为后序遍历是左右根,我们DFS的时候先往左搜索,搜完后把答案存下来。

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 #include

2 #include

3 #include

4 using namespacestd;5

6 const int N = 1234;7 bool f = 0;8 int pre[N], post[N], cnt = 0;9

10 void dfs(int root, inttail) {11 if(root > tail) return;12 int l = root + 1, r =tail;13 if(!f) {14 while(l <= tail && pre[l] < pre[root]) l++;15 while(r >= root && pre[r] >= pre[root]) r--;16 } else{17 while(l <= tail && pre[l] >= pre[root]) l++;18 while(r >= root && pre[r] < pre[root]) r--;19 }20 dfs(root + 1, r);21 dfs(l, tail);22 post[++cnt] =pre[root];23 }24

25 intmain() {26 intn;27 cin >>n;28 for(int i = 1; i <= n; i++) cin >>pre[i];29 dfs(1, n);30 if(cnt !=n) {31 cnt = 0;32 f = 1;33 dfs(1, n);34 }35 if(cnt ==n) {36 cout << "YES" <

View Code

1044 Shopping in Mars

先前缀和,然后两次二分,第一次找>=m最小的。第二次二分把符合的扔进去。

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 //1044 Shopping in Mars

2 #include

3 #include

4 #include

5 #include

6 using namespacestd;7

8 const int INF = 0x3f3f3f3f;9 const int N = 1e5 + 10;10 inta[N];11 vector< pair >v;12

13 intmain() {14 intn, m;15 int mi =INF;16 scanf("%d %d", &n, &m);17 for(int i = 0; i < n; i++) {18 scanf("%d", &a[i]);19 if(i != 0) a[i] += a[i - 1];20 }21 for(int i = 0; i < n; i++) {22 int val = 0;23 if(i != 0) val = a[i - 1];24 int pos = lower_bound(a + i, a + n, val + m) -a;25 if((a[pos] -val) >=m) {26 mi = min(mi, (a[pos] -val));27 }28 }29 for(int i = 0; i < n; i++) {30 int val = 0;31 if(i != 0) val = a[i - 1];32 int pos = lower_bound(a + i, a + n, val + mi) -a;33 if((a[pos] -val) ==mi) {34 v.push_back(make_pair(i + 1, pos + 1));35 }36 }37 for(int i = 0; i < v.size(); i++) {38 printf("%d-%d\n", v[i].first, v[i].second);39 }40 return 0;41 }

View Code

1045 Favorite Color Stripe

连dp渣渣的我都会写。从后往前,先找出该点位置在a数组中对应的颜色,然后从后面的颜色转移过来。

$dp[b[i]] = max( dp[b[i]], dp[a[j]] + 1)$

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 //1045 Favorite Color Stripe

2 #include

3 #include

4 #include

5 using namespacestd;6

7 const int N = 210;8 const int L = 10010;9 inta[N], dp[N], b[L];10

11 intmain() {12 int n, m, l, ans = 0;13 cin >> n >>m;14 for(int i = 1; i <= m; i++) cin >>a[i];15 cin >>l;16 for(int i = 1; i <= l; i++) cin >>b[i];17 for(int i = l; i >= 1; i--) {18 bool f = 0;19 for(int j = 1; j <= m; j++) {20 if(b[i] == a[j]) f = 1;21 if(f) {22 dp[b[i]] = max(dp[b[i]] ,dp[a[j]] + 1);23 ans =max(ans, dp[b[i]]);24 }25 }26 }27 cout << ans <

View Code

1046 Shortest Distance

小学数学题。前缀和下,再分别顺时针和逆时针比较下。

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 //1046 Shortest Distance

2 #include

3 #include

4 #include

5 #include

6 using namespacestd;7

8 const int N = 1e5 + 10;9 inta[N];10

11 intmain() {12 intn, m;13 cin >>n;14 for(int i = 1; i <= n; i++) {15 cin >>a[i];16 a[i] += a[i - 1];17 }18 cin >>m;19 for(int i = 1; i <= m; i++) {20 intl, r;21 cin >> l >>r;22 if(l >r) swap(l, r);23 int ans1 = a[r - 1] - a[l - 1];24 int ans2 = (a[n] - a[r - 1]) + a[l - 1];25 cout << min(ans1, ans2) <

View Code

1047 Student List for Course

对应存就好了。

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 //1047 Student List for Course

2 #include

3 #include

4 #include

5 #include

6 #include

7 using namespacestd;8

9 const int N = 2505;10 char s[20 * N][5];11 vector v[N];12

13 bool cmp(int a, intb) {14 return strcmp(s[a], s[b]) < 0;15 }16

17 intmain() {18 intn, m, k, id;19 scanf("%d %d", &n, &m);20 for(int i = 1; i <= n; i++) {21 scanf("%s %d", s[i], &k);22 for(int j = 1; j <= k; j++) {23 scanf("%d", &id);24 v[id].push_back(i);25 }26 }27 for(int i = 1; i <= m; i++) sort(v[i].begin(), v[i].end(), cmp);28 for(int i = 1; i <= m; i++) {29 printf("%d %d\n", i, v[i].size());30 for(int j = 0; j < v[i].size(); j++) {31 printf("%s\n", s[v[i][j]]);32 }33 }34 return 0;35 }

View Code

1048 Find Coins

标记,特判下m-a[i] 和a[i]相同的情况。

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 //1048 Find Coins

2 #include

3 #include

4 #include

5 using namespacestd;6

7 const int N = 1e5 + 10;8 inta[N], index[N];9

10 intmain() {11 intn, m;12 scanf("%d %d", &n, &m);13 for(int i = 1; i <= n; i++) {14 scanf("%d", &a[i]);15 index[a[i]]++;16 }17 sort(a + 1, a + 1 +n);18 for(int i = 1; i <= n; i++) {19 int other = m -a[i];20 if(other == a[i] && index[other] >= 2) {21 printf("%d %d\n", a[i], a[i]);22 return 0;23 }24 else if(other != a[i] &&index[other]) {25 printf("%d %d\n", a[i], other);26 return 0;27 }28 }29 printf("No Solution\n");30 return 0;31 }

View Code

1049 Counting Ones

题意:询问从1-n有多少个1,11这样算两个。考虑按位计算,分以下三种情况:

当前位=0,左边*当前位数。

当前位=1,左边*当前位数 + 右边 + 1

当前位>1,(左边+1)*右边

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 //1049 Counting Ones

2 #include

3 #include

4 #include

5 using namespacestd;6

7 typedef long longll;8

9 intmain() {10 ll n, base = 1, ans = 0;11 cin >>n;12 while(n / base) {13 ll now = (n % (10 * base) ) / base;14 ll left = (n / (10 * base) ), right = n % base;15 if(now == 0) ans += left * base;16 else if(now == 1) ans += left * base + right + 1;17 else ans += (left + 1) * base;18 base *= 10;19 }20 cout << ans <

View Code

1050 String Subtraction

map一下就可以了。

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 //1050 String Subtraction

2 #include

3 #include

4 #include

5 #include

6 using namespacestd;7

8 const int N = 1e4 + 10;9 chars[N];10 map m;11

12 intmain() {13 charc;14 int cnt = 0;15 while(scanf("%c", &s[++cnt]) != EOF && s[cnt] != '\n');16 while(scanf("%c", &c) != EOF && c != '\n') {17 m[c]++;18 }19 for(int i = 1; i <= cnt; i++) {20 if(!m[s[i]]) printf("%c", s[i]);21 }22 return 0;23 }

View Code

1051 Pop Sequence

模拟入栈操作,如果遍历到的数刚好和栈定元素相同,出栈一个元素,遍历位置+1,在比较直到不同,入栈过程中需要注意判断栈容量。

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 //1051 Pop Sequence

2 #include

3 #include

4 #include

5 #include

6 using namespacestd;7

8 const int N = 1234;9 inta[N];10 stacks;11

12 intmain() {13 intm, n, k;14 scanf("%d %d %d", &m, &n, &k);15 while(k--) {16 int now = 1;17 bool f = 1;18 while(s.size()) s.pop();19 for(int i = 1; i <= n; i++) scanf("%d", &a[i]);20 for(int i = 1; i <= n; i++) {21 s.push(i);22 if(a[now] == s.top() && s.size() <=m) {23 while(s.size() && a[now] ==s.top()) {24 now++;25 s.pop();26 }27 }28 else if(s.size() >m) {29 f = 0;30 break;31 }32 }33 if(s.size()) f = 0;34 if(f) printf("YES\n");35 else printf("NO\n");36 }37 return 0;38 }

View Code

1052 Linked List Sorting

先找到给定头节点的那条链,接着把这条链的元素拿出来按key从小到大排序。注意可能这样的链一条都没有。(输出0 -1)

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 //1052 Linked List Sorting

2 #include

3 #include

4 #include

5 #include

6 using namespacestd;7

8 const int N = 1e5 + 10;9 intrun[N], vis[N];10 structnode {11 intkey;12 intnow, next;13 }p[N];14

15 boolcmp(node x, node y) {16 return x.key

19 void dfs(intu) {20 if(u == -1) return;21 vis[u] = 1;22 dfs(run[u]);23 }24

25 intmain() {26 int n, head, cnt = 0;27 scanf("%d %d", &n, &head);28 for(int i = 1; i <= n; i++) {29 scanf("%d %d %d", &p[i].now, &p[i].key, &p[i].next);30 run[p[i].now] =p[i].next;31 }32 dfs(head);33 sort(p + 1, p + 1 +n, cmp);34 for(int i = 1; i <= n; i++) {35 if(vis[p[i].now]) {36 p[++cnt] =p[i];37 }38 }39 if(cnt == 0) {40 printf("0 -1\n");41 return 0;42 }43 printf("%d %05d\n", cnt, p[1].now);44 for(int i = 1; i < cnt; i++) {45 printf("%05d %d %05d\n", p[i].now, p[i].key, p[i + 1].now);46 }47 printf("%05d %d -1\n", p[cnt].now, p[cnt].key);48 return 0;49 }

View Code

1053 Path of Equal Weight

存边的时候先儿子节点权值从大到小排序,DFS把所有答案搜出来。

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 //1053 Path of Equal Weight

2 #include

3 #include

4 #include

5 #include

6 using namespacestd;7

8 const int N = 123;9 intn, m, s;10 int a[N], cnt = 0;11 vectorE[N], tmp;12 vectorres[N];13

14 structnode{15 intw,v;16 }b[N];17

18 boolcmp(node x, node y) {19 return x.w >y.w;20 }21

22 void dfs(int u, intsum) {23 if(sum > s) return;24 tmp.push_back(a[u]);25 if(sum + a[u] == s && !E[u].size()) {26 res[cnt++] =tmp;27 }28 for(int i = 0; i < E[u].size(); i++) {29 dfs(E[u][i], sum +a[u]);30 }31 tmp.pop_back();32 }33

34

35 intmain() {36 scanf("%d %d %d", &n, &m, &s);37 for(int i = 0; i < n; i++) scanf("%d", &a[i]);38 for(int i = 1; i <= m; i++) {39 intu, k;40 scanf("%d %d", &u, &k);41 for(int j = 1; j <= k; j++) {42 scanf("%d", &b[j].v);43 b[j].w =a[b[j].v];44 }45 sort(b + 1, b + 1 +k, cmp);46 for(int j = 1; j <= k; j++) E[u].push_back(b[j].v);47 }48 dfs(0, 0);49 for(int i = 0; i < cnt; i++) {50 for(int j = 0; j < res[i].size(); j++) {51 if(j == res[i].size() - 1) printf("%d\n", res[i][j]);52 else printf("%d", res[i][j]);53 }54 }55 return 0;56 }

View Code

1054 The Dominant Color

标记颜色出现次数即可。

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 //1054 The Dominant Color

2 #include

3 #include

4 #include

5 #include

6 using namespacestd;7

8 mapcnt;9

10 intmain() {11 intn, m, col;12 scanf("%d %d", &n, &m);13 for(int i = 1; i <= n; i++) {14 for(int j = 1; j <= m; j++) {15 scanf("%d", &col);16 cnt[col]++;17 if(2 * cnt[col] > n *m) {18 printf("%d", col);19 return 0;20 }21 }22 }23 return 0;24 }

View Code

1055 The World's Richest

结构体排序下,暴力遍历,输出即可。

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 //1055 The World's Richest

2 #include

3 #include

4 #include

5 #include

6 using namespacestd;7

8 const int N = 1e5 + 10;9 structnode {10 char name[10];11 intage, worth;12 }p[N];13

14 boolcmp(node x, node y) {15 if(x.worth ==y.worth) {16 if(x.age == y.age) return strcmp(x.name, y.name) < 0;17 return x.age y.worth;20 }21

22 intmain() {23 intn, k;24 scanf("%d %d", &n, &k);25 for(int i = 0; i < n; i++) {26 scanf("%s %d %d", p[i].name, &p[i].age, &p[i].worth);27 }28 sort(p, p +n, cmp);29 for(int i = 1; i <= k; i++) {30 int m, mi, mx, cnt = 0;31 scanf("%d %d %d", &m, &mi, &mx);32 printf("Case #%d:\n", i);33 for(int j = 0; j < n; j++) {34 if(p[j].age >= mi && p[j].age <=mx) {35 cnt++;36 printf("%s %d %d\n", p[j].name, p[j].age, p[j].worth);37 }38 if(cnt == m) break;39 }40 if(cnt == 0) printf("None\n");41 }42 return 0;43 }

View Code

1056 Mice and Rice

用队列模拟下每次遍历组的操作。每组清空,再把质量最大的入队。排名即为当前组数+1

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 //1056 Mice and Rice

2 #include

3 #include

4 #include

5 #include

6 #include

7 using namespacestd;8

9 const int N = 1234;10 intw[N], ans[N];11

12 queue q;13

14 intmain() {15 intn, m, u, v, cnt;16 scanf("%d %d", &n, &m);17 for(int i = 1; i <= n; i++) scanf("%d", &w[i]);18 for(int j = 1; j <= n; j++) {19 scanf("%d", &v);20 q.push(v + 1);21 }22 cnt =n;23 while(q.size() != 1) {24 int g = (cnt / m) + ( (cnt % m) > 0 ? 1 : 0);25 for(int i = 0; i < g; i++) {26 int k =q.front();27 for(int j = 1; j <= m; j++) {28 if(i * m + j > cnt) break;29 u =q.front();30 if(w[u] > w[k]) k =u;31 q.pop();32 ans[u] = g + 1;33 }34 q.push(k);35 }36 cnt =g;37 }38 ans[q.front()] = 1;39 for(int i = 1; i <= n; i++) {40 printf("%d%c", ans[i], i == n ? '\n' : ' ');41 }42 return 0;43 }

View Code

1057 Stack

模拟栈操作。查询的时候二分一下,从树状数组中存的值,查找最前面出现的中值。

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 //1057 Stack

2 #include

3 #include

4 #include

5 #define low(i) ((i)&(-i))

6 using namespacestd;7

8 const int N = 1e5 + 10;9 intc[N], n, u;10 char op[10];11 stack sta;12

13 void add(int pos, intv) {14 for(int i = pos; i < N; i += low(i)) c[i] +=v;15 }16

17 int query(intpos) {18 int res = 0;19 for(int i = pos; i; i -= low(i)) res +=c[i];20 returnres;21 }22

23 intPeekMedian() {24 int sz = (sta.size() + 1) / 2;25 int l = 1, r = N - 10 , ans = -1;26 while(l <=r) {27 int mid = (l + r) / 2;28 if(query(mid) >= sz) ans = mid, r = mid - 1;29 else l = mid + 1;30 }31 returnans;32 }33

34 intmain() {35 scanf("%d", &n);36 while(n--) {37 scanf("%s", op);38 if(op[1] == 'u') {39 scanf("%d", &u);40 add(u, 1);41 sta.push(u);42 }43 else if(op[1] == 'o') {44 if(sta.empty()) printf("Invalid\n");45 else{46 printf("%d\n", sta.top());47 add(sta.top(), -1);48 sta.pop();49 }50 } else{51 if(sta.empty()) printf("Invalid\n");52 else{53 printf("%d\n", PeekMedian());54 }55 }56 }57 return 0;58 }

View Code

1058 A+B in Hogwarts

水题。

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 //1058 A+B in Hogwarts

2 #include

3 using namespacestd;4

5 int a[6];6

7 intmain() {8

9 scanf("%d.%d.%d %d.%d.%d", &a[0], &a[1], &a[2], &a[3], &a[4], &a[5]);10 if(a[2] + a[5] >= 29) {11 a[1]++;12 a[2] -= 29;13 }14 if(a[1] + a[4] >= 17) {15 a[0]++;16 a[1] -= 17;17 }18 printf("%d.%d.%d", a[0] + a[3], a[1] + a[4], a[2] + a[5]);19 return 0;20 }

View Code

1059 Prime Factors

暴力sqrt(n)判断下,对应输出即可。

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 //1059 Prime Factors

2 #include

3 #include

4 #include

5 using namespacestd;6

7 typedef long longll;8

9 intmain() {10 bool f = 0;11 ll n;12 scanf("%lld", &n);13 printf("%lld=", n);14 for(ll i = 2; i * i <= n; i++) {15 if(n % i == 0) {16 ll cnt = 0;17 while(n % i == 0) {18 n /=i;19 cnt++;20 }21 if(!f) {22 printf("%lld", i), f = 1;23 } else{24 printf("*%lld", i);25 }26 if(cnt > 1) printf("^%lld", cnt);27 }28 }29 if(n > 1) {30 if(!f) {31 printf("%lld", n);32 } else{33 printf("*%lld", n);34 }35 }36 return 0;37 }

View Code

1060 Are They Equal

这题自己的写法一直只有21分(心态炸了)。搜了波题解,发现怎么还有前导0这种输入啊(妈耶),还要注意不够位要拿0去补。

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 //1060 Are They Equal

2 #include

3 #include

4 #include

5 using namespacestd;6

7 intn;8

9 string solve(string s, int&k) {10 int i = 0 , cnt = 0;11 string res = "";12 while(s.size() && s[0] == '0') {13 s.erase(s.begin());14 }15 if(s[0] == '.') {16 s.erase(s.begin());17 while(s.size() && s[0] == '0') {18 s.erase(s.begin());19 k--;20 }21 } else{22 while(i < s.size() && s[i] != '.') {23 i++;24 k++;25 }26 if(i < s.size()) s.erase(s.begin() +i);27 }28 if(s.size() == 0) k = 0;29 i = 0;30 while(cnt

38 intmain() {39 int k1 = 0, k2 = 0;40 strings1, s2, s3, s4;41 cin >> n >> s1 >>s2;42 s3 =solve(s1, k1);43 s4 =solve(s2, k2);44 if(s3 == s4 && k1 ==k2) {45 cout << "YES" << "0." << s3 << "*10^" << k1 <

View Code

1061 Dating

按照题目要求做即可。(题目一定多读几遍,想三遍,敲一遍)。做这题的时候太急了,题还没看清就去敲,wa了好几发。

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 //1061 Dating

2 #include

3 using namespacestd;4

5 string week[10] = {"MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN"};6

7 intmain() {8 int pos = 0;9 strings1, s2, s3, s4;10 cin >> s1 >> s2 >> s3 >>s4;11 int n =min(s1.size(), s2.size());12 for(int i = 0; i < n; i++) {13 if(s1[i] >= 'A' && s1[i] <= 'G') {14 if(s1[i] ==s2[i]) {15 pos = i + 1;16 int k = (s1[i] - 'A');17 cout <= 'A' && s1[i] <= 'N') || (s1[i] >= '0' && s1[i] <= '9') ) {24 if(s1[i] ==s2[i]) {25 if(s1[i] >= '0' && s1[i] <= '9') {26 cout << "0" << s1[i] << ":";27 } else{28 int k = (s1[i] - 'A' + 10);29 cout << " " << k << ":";30 }31 break;32 }33 }34 }35 n =min(s3.size(), s4.size());36 for(int i = 0; i < n; i++) {37 if(s3[i] >= 'a' && s3[i] <= 'z' || s3[i] >= 'A' && s3[i] <= 'Z') {38 if(s3[i] ==s4[i]) {39 if(i < 10) cout << "0" << i <

View Code

1062 Talent and Virtue

结构体排序,按照题目要求排序即可。

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 //1062 Talent and Virtue

2 #include

3 #include

4 #include

5 using namespacestd;6

7 const int N = 1e5 +10;8 structnode{9 intg, id, virtue, talent, total;10 }p[N];11

12 boolcmp(node x, node y) {13 if(x.g ==y.g) {14 if(x.total ==y.total) {15 if(x.virtue == y.virtue) return x.id y.virtue;17 }18 return x.total >y.total;19 }20 return x.g

23 intmain() {24 int n, l, h, cnt = 0;25 scanf("%d%d%d", &n, &l, &h);26 for(int i = 1; i <= n; i++) {27 scanf("%d %d %d", &p[i].id, &p[i].virtue, &p[i].talent);28 p[i].total = p[i].virtue +p[i].talent;29 p[i].g = 5;30 if(p[i].virtue < l || p[i].talent < l) continue;31 cnt++;32 if(p[i].virtue >= h && p[i].talent >=h) {33 p[i].g = 1;34 }35 else if(p[i].virtue >= h && p[i].talent =p[i].talent) {39 p[i].g = 3;40 } else{41 p[i].g= 4;42 }43 }44 sort(p + 1, p + 1 +n, cmp);45 printf("%d\n", cnt);46 for(int i = 1; i <= n; i++) {47 if(p[i].g > 4) break;48 printf("%08d %d %d\n", p[i].id, p[i].virtue, p[i].talent);49 }50 return 0;51 }

View Code

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值