码迷,mamicode.com
首页 > 其他好文 > 详细

Codeforces Round #329 div2

时间:2016-05-26 21:50:31      阅读:245      评论:0      收藏:0      [点我收藏+]

标签:

Problem_A(593A):

题意:

  给n个单词, 每个单词由小写字母组成, 且长度<=1000.

  组成一篇文章的要求是:

    所有单词所用字母 <= 2

    即最多只能有两个不同的字母。

  求一篇文章的最长长度。

 

思路:

  首先注意到单词都是由小写字母组成,小写字母只有26个, 所以可以转换一下:

    如果一个单词所用字母超过2个, 那么我们舍弃它。因为它怎么都不可能会是一篇文章的组成部分。

    如果没有超过两个, 那么找出这两个单词, 记录它的长度即可。

  设f[i][j] = 只有字母为i + ‘a‘ 和 j + ‘a‘的单词的长度,如果i == j则只有一个字母。

  答案则为 max(f[i][j] + f[i][i] + f[j][j] (f[i][j] > 0), f[i][i] + f[j][j])

 

代码:

  

技术分享
 1 #include <cmath>
 2 #include <cstdio>
 3 #include <cstring>
 4 #include <cstdlib>
 5 #include <ctime>
 6 #include <set>
 7 #include <map>
 8 #include <list>
 9 #include <stack>
10 #include <queue>
11 #include <string>
12 #include <vector>
13 #include <fstream>
14 #include <iterator>
15 #include <iostream>
16 #include <algorithm>
17 using namespace std;
18 #define LL long long
19 #define INF 0x3f3f3f3f
20 #define MOD 1000000007
21 #define eps 1e-6
22 #define MAXN 100010
23 #define MAXM 100
24 #define dd {cout<<"debug"<<endl;}
25 #define pa {system("pause");}
26 #define p(x) {printf("%d\n", x);}
27 #define pd(x) {printf("%.7lf\n", x);}
28 #define k(x) {printf("Case %d: ", ++x);}
29 #define s(x) {scanf("%d", &x);}
30 #define sd(x) {scanf("%lf", &x);}
31 #define mes(x, d) {memset(x, d, sizeof(x));}
32 #define do(i, x) for(i = 0; i < x; i ++)
33 #define dod(i, x, l) for(i = x; i >= l; i --)
34 #define doe(i, x) for(i = 1; i <= x; i ++)
35 struct node
36 {
37     LL l;
38     LL r;
39 };
40 int n;
41 LL x[2];
42 bool flag;
43 struct node f[MAXN];
44 bool cmp(struct node x, struct node y)
45 {
46     if(((x.l - y.l < 0) && (x.r - y.r > 0)) || ((x.l - y.l > 0) && (x.r - y.r < 0)))
47         flag = true;
48     if(x.l == y.l) return x.r < y.r;
49     return x.l < y.l;
50 }
51 
52 int main()
53 {
54     flag = false;
55     scanf("%d", &n);
56     scanf("%I64d %I64d", &x[0], &x[1]);
57     LL k, b;
58     for(int i = 0; i < n; i ++)
59     {
60         scanf("%I64d %I64d", &k, &b);
61         f[i].l = x[0] * k + b;
62         f[i].r = x[1] * k + b;
63     }
64     sort(f, f + n, cmp);
65     printf("%s\n", flag? "YES" : "NO");
66     return 0;
67 }
View Code

 

Codeforces Round #329 div2

标签:

原文地址:http://www.cnblogs.com/By-ruoyu/p/5532600.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!