Codeforces Round #440 (Div. 2)【A、B、C、E】

Codeforces Round #440 (Div. 2)

 

codeforces 870 A. Search for Pretty Integers(水题)

题意:给两个数组,求一个最小的数包含两个数组各至少一个数。

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<algorithm>
 4 using namespace std;
 5 int n, m;
 6 int a[11], b[11];
 7 int main() {
 8     int i, j, x = 10, y = 10, s = 10;
 9     scanf("%d%d", &n, &m);
10     for(i = 1; i <= n; ++i) {
11         scanf("%d", &a[i]); if(a[i] < x) x = a[i];
12     }
13     for(i = 1; i <= m; ++i) {
14         scanf("%d", &b[i]); if(b[i] < y) y = b[i];
15         for(j = 1; j <= n; ++j)
16             if(a[j] == b[i] && b[i] < s) s = b[i];
17     }
18     if(s < 10) printf("%d\n", s);
19     else {
20         if(x > y) swap(x, y);
21         printf("%d%d\n", x, y);
22     }
23     return 0;
24 }
31ms

codeforces 870 B. Maximum of Maximums of Minimums(模拟)

题意:给一排N个数,要求分割成K份,每份里面取出最小的数,再从取出的这些数中求最大的数,,求能得到的最大的数。

题解:K=1时答案即为最小的数,K≥3时,答案为这排数中最大的数,K=2时,就是两端 两个数的最大的一个。

 

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<algorithm>
 4 using namespace std;
 5 const int N = 100005;
 6 int n, m;
 7 int a[N];
 8 int main() {
 9     int i, j, mi = 1000000001, ma = -1000000001;
10     scanf("%d%d", &n, &m);
11     for(i = 1; i <= n; ++i) {
12         scanf("%d", &a[i]);
13         if(a[i] < mi) mi = a[i];
14         if(a[i] > ma) ma = a[i];
15     }
16     if(m==1) printf("%d\n", mi);
17     else if(m==2) printf("%d\n", max(a[1], a[n]));
18     else printf("%d\n", ma);
19     return 0;
20 }
31ms

 

codeforces 870 C. Maximum splitting(数学)

题意:一个数拆分成几个合数之和,求最多能拆分成几个数之和。

题解:合数为4,6,9最优咯。

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<algorithm>
 4 using namespace std;
 5 int main() {
 6     int t, n;
 7     scanf("%d", &t);
 8     while(t--) {
 9         scanf("%d", &n);
10         int ans = 0;
11         if(n & 1) {
12             n -=9; ans++;
13         }
14         if(n < 4 && n != 0)    puts("-1");
15         else {
16             ans += n/4;
17             printf("%d\n", ans);
18         }
19     }
20     return 0;
21 }
61ms

codeforces 870 E. Points, Lines and Ready-made Titles(思维)

题意:对每个点,可以绘制一条垂直线,或一条水平线,或什么都不做。几条重合的直线是一条直线,求可以得到多少个不同的图片。

题解:排序,将同一行的用并查集合并,再将同一列的也合并,假设一个集合的点在原图的不重复行列数为s,如果该集合的点在原图中不能形成环,则该集合的贡献是2^s-1(少一种是环的图形),否则贡献为2^s。

 

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<algorithm>
 4 using namespace std;
 5 typedef long long ll;
 6 const int N = 100005;
 7 const ll mod = 1e9+7;
 8 int f[N], r1[N], r2[N];
 9 struct node {
10     int x, y, id;
11 }p[N];
12 int cmp1(node a, node b) {return a.x < b.x;}
13 int cmp2(node a, node b) {return a.y < b.y;}
14 int fin(int x) {
15     if(f[x]!=x) f[x] = fin(f[x]);
16     return f[x];
17 }
18 void uni(int x, int y) {
19     if((x=fin(x)) == (y=fin(y))) r2[y]++;
20     else {
21         f[x] = y;
22         r1[y] += r1[x];
23         r2[y] += r2[x] + 1;
24     }
25 }
26 int main() {
27     int n, i, j;
28     ll ans = 1;
29     ll a[2*N]; a[0] = 1ll;
30     for(i = 1; i < 2*N; ++i) a[i] = (a[i-1] * 2) % mod;
31     scanf("%d", &n);
32     memset(r2, 0, sizeof(r2));
33     for(i = 1; i <= n; ++i) {
34         scanf("%d%d", &p[i].x, &p[i].y);
35         p[i].id = i;
36         f[i] = i;
37         r1[i] = 1;
38     }
39     sort(p+1, p+1+n, cmp1);
40     for(i = 2; i <= n; ++i)
41         if(p[i].x == p[i-1].x) uni(p[i].id, p[i-1].id);
42     sort(p+1, p+1+n, cmp2);
43     for(i = 2; i <= n; ++i)
44         if(p[i].y == p[i-1].y) uni(p[i].id, p[i-1].id);
45 
46     for(i = 1; i <= n; ++i)
47         if(f[i] == i) {
48             if(r1[i] == r2[i]+1) ans = ans * (ll)(a[r1[i]+1] - 1) % mod;
49             else ans = ans * (ll)(a[2*r1[i] - r2[i]]) % mod;
50         }
51     printf("%lld\n", ans);
52     return 0;
53 }
93ms

 

posted @ 2017-10-15 22:36  GraceSkyer  阅读(393)  评论(0编辑  收藏  举报

~~~~~~ACM大牛语录,激励一下~~~~~~

为了世界的和平,为了女生的安全,我拼命做题,做题,做题!

用最短的时间,刷最多的题!

给我一滴泪,我就看到了你全部的海洋!

seize the hour, seize the day.

人生难免有无奈,幸福走远了,或是感叹幸福来迟了.其实我一直相信,无论手中的幸福是多么微不足道的感觉,我会把握住那每一分,每一秒,当幸福依旧像那百鸟般飞逝,终究无法掌握时,我会感谢它,曾经降临过!

A自己的题,让别人郁闷去吧

WA肠中过,AC心中留 TLE耳边过,AC特别牛

天然的悲苦和伤逝,过去有过,以后还会有

^*^一步一步往上爬^*^

AC就像练级,比赛就像PK. 练级不如PK好玩

其实,世上本没有ACM,AC的人多了,也便有了!

AC无止尽~ Seek you forever~

找呀找呀找水题,找到一个AC一个呀!

AC是检验程序的唯一标准。

真的猛士,敢于直面惨淡的人生,敢于正视淋漓的鲜血……