Codeforces Round #265 (Div. 2) 题解

A:给你一个二进制数,问你加一以后改变多少位

解题思路:乱搞

解题代码:

 1 // File Name: a.cpp
 2 // Author: darkdream
 3 // Created Time: 2014年09月07日 星期日 23时27分31秒
 4
 5 #include<vector>
 6 #include<list>
 7 #include<map>
 8 #include<set>
 9 #include<deque>
10 #include<stack>
11 #include<bitset>
12 #include<algorithm>
13 #include<functional>
14 #include<numeric>
15 #include<utility>
16 #include<sstream>
17 #include<iostream>
18 #include<iomanip>
19 #include<cstdio>
20 #include<cmath>
21 #include<cstdlib>
22 #include<cstring>
23 #include<ctime>
24 #define LL long long
25
26 using namespace std;
27 int a[200];
28 int main(){
29   int n , m ;
30   scanf("%d",&n);
31   for(int i =1;i <= n;i ++)
32   {
33      scanf("%1d",&a[i]);
34   }
35   int ans = 0;
36   int temp = 1;
37   for( int i = 1;i <= n;i ++)
38   {
39      temp = (a[i] + temp)/2;
40      if(temp == 0 || a[i] == 0)
41         {
42           ans = i ;
43           break;
44         }
45   }
46   if(ans == 0 )
47       ans = n ;
48   printf("%d\n",ans);
49 return 0;
50 }

B:给你邮件列表,有些邮件已读,有些没读,给你三种操作

1.点开这个邮件

2.退出这封邮件

3.在这封邮件里面点开上一封和下一封邮件。

解题代码:

 1 // File Name: b.cpp
 2 // Author: darkdream
 3 // Created Time: 2014年09月07日 星期日 23时39分39秒
 4
 5 #include<vector>
 6 #include<list>
 7 #include<map>
 8 #include<set>
 9 #include<deque>
10 #include<stack>
11 #include<bitset>
12 #include<algorithm>
13 #include<functional>
14 #include<numeric>
15 #include<utility>
16 #include<sstream>
17 #include<iostream>
18 #include<iomanip>
19 #include<cstdio>
20 #include<cmath>
21 #include<cstdlib>
22 #include<cstring>
23 #include<ctime>
24 #define LL long long
25
26 using namespace std;
27 int a[1004];
28 int main(){
29   int n;
30   scanf("%d",&n);
31   scanf("%d",&a[1]);
32   int sum = 0 ;
33   if(a[1] == 1 )
34       sum = 1;
35   for(int i =2 ;i <= n;i++)
36   {
37     scanf("%d",&a[i]);
38     if(a[i] == 0 && a[i-1] == 1)
39     {
40       sum ++;
41     }
42     if(a[i] == 1)
43     {
44        sum ++ ;
45     }
46   }
47   if(a[n] == 0 )
48   {
49     sum = max(sum-1,0) ;
50   }
51   printf("%d\n",sum);
52 return 0;
53 }

C:给你一个不包含回文子串,问你最多使用前p个字母且长度等于这个字符串且字典序比这个序列大而且不包含回文子串的的字符串。

解题思路:枚举改变第几位就行

解题代码:

 1 // File Name: c.cpp
 2 // Author: darkdream
 3 // Created Time: 2014年09月07日 星期日 23时55分52秒
 4
 5 #include<vector>
 6 #include<list>
 7 #include<map>
 8 #include<set>
 9 #include<deque>
10 #include<stack>
11 #include<bitset>
12 #include<algorithm>
13 #include<functional>
14 #include<numeric>
15 #include<utility>
16 #include<sstream>
17 #include<iostream>
18 #include<iomanip>
19 #include<cstdio>
20 #include<cmath>
21 #include<cstdlib>
22 #include<cstring>
23 #include<ctime>
24 #define LL long long
25
26 using namespace std;
27 int a[1005];
28 int b[1005];
29 char str[1005];
30 int main(){
31    int n , p ;
32    scanf("%d %d",&n,&p);
33    scanf("%s",&str[1]);
34    memset(a,0,sizeof(a));
35    memset(b,0,sizeof(b));
36    for(int i = 1;i <= n;i ++)
37    {
38      a[i] =  str[i] - ‘a‘ + 1;
39    }
40    int ans = 0 ;
41    //for(int i =1 ;i <= n;i++)
42      //  printf("%d ",a[i]);
43    for(int i = n;i >= 1 ;i --)
44    {
45      int j ;
46      int s;
47      for(s = a[i] + 1 ; s <= p ;s ++)
48      {
49         if(s != a[i-1] &&( i-2 == -1 || (s != a[i-2]) ))
50         {
51            b[i] = s;
52            b[i-1] = a[i-1];
53            break;
54         }
55      }
56      if(s == p + 1)
57          continue;
58      //printf("\n%d %d\n",i,s);
59      for( j = i+1;j<= n;j ++)
60      {
61         for( s = 1; s <= p;s ++)
62         {
63           if(s != b[j-1] && s!= b[j-2])
64           {
65               b[j] = s;
66               //printf("%d***\n",s);
67               break;
68           }
69         }
70         if(s == p + 1)
71         {
72           break;
73         }
74      }
75      if(j == n+1)
76      {
77        ans = i;
78        break;
79      }
80     }
81    if(!ans)
82    {
83      printf("NO\n");
84      return 0 ;
85    }
86    for(int i = 1;i <= ans -1;i ++)
87        printf("%c",a[i] + ‘a‘ -1 );
88    for(int j = ans ;j <= n;j ++)
89        printf("%c",b[j] + ‘a‘ -1);
90
91 return 0;
92 }

时间: 2024-10-10 10:55:55

Codeforces Round #265 (Div. 2) 题解的相关文章

Codeforces Round #262 (Div. 2) 题解

A. Vasya and Socks time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output Vasya has n pairs of socks. In the morning of each day Vasya has to put on a pair of socks before he goes to school. When

Codeforces Round #FF (Div. 2) 题解

比赛链接:http://codeforces.com/contest/447 A. DZY Loves Hash time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output DZY has a hash table with p buckets, numbered from 0 to p?-?1. He wants to insert n 

Codeforces Round #265 (Div. 2)

Codeforces Round #265 (Div. 2) 题目链接 A:把数字变换后比较一下几个不一样即可 B:连续2个以上0当作一次操作,开头的0和结尾的0可以忽略 C:贪心从末尾去构造,由于保证一开始是回文,所以保证修改后出现回文只可能为长度2或3的,这样的话判断复杂度就很小了 D:暴力枚举情况,然后判断 E:把操作逆过来处理出每个数字对应的位数和相应数字,然后在for一遍计算答案即可 代码: A: #include <cstdio> #include <cstring>

Codeforces Round #259 (Div. 2) 题解

A. Little Pony and Crystal Mine time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output Twilight Sparkle once got a crystal from the Crystal Mine. A crystal of size n (n is odd; n?>?1) is an n?×?n 

Codeforces Round #177 (Div. 2) 题解

[前言]咦?现在怎么流行打CF了?于是当一帮大爷在执着的打div 1的时候,我偷偷的在刷div 2.至于怎么决定场次嘛,一般我报一个数字A,随便再拉一个人选一个数字B.然后开始做第A^B场.如果觉得机密性不高,来点取模吧.然后今天做的这场少有的AK了.(其实模拟赛只做完了4题,最后1题来不及打了) 等等,话说前面几题不用写题解了?算了,让我难得风光一下啦. [A] A. Polo the Penguin and Segments time limit per test 2 seconds mem

Codeforces Round #534 (Div. 2)题解

Codeforces Round #534 (Div. 2)题解 A. Splitting into digits 题目大意 将一个数字分成几部分,几部分求和既是原数,问如何分可以使得分出来的各个数之间的差值尽可能小 解题思路 将n分成n个1相加即可 AC代码 #include<cstring> #include<string> #include<iostream> #include<cstdio> using namespace std; int main

Codeforces Round #561 (Div. 2) 题解

Codeforces Round #561 (Div. 2) 题解 题目链接 A. Silent Classroom 水题. Code #include <bits/stdc++.h> using namespace std; typedef long long ll; const int N = 105; int n; char s[N], t[N]; int main() { cin >> n; for(int i = 1; i <= n; i++) { scanf(&q

Codeforces Round #608 (Div. 2) 题解

目录 Codeforces Round #608 (Div. 2) 题解 前言 A. Suits 题意 做法 程序 B. Blocks 题意 做法 程序 C. Shawarma Tent 题意 做法 程序 D. Portals 题意 做法 程序 E. Common Number 题意 做法 程序 结束语 Codeforces Round #608 (Div. 2) 题解 前言 题目链接:仅仅只是为了方便以题目作为关键字能查找到我的题解而已(逃 Codeforces 1271A Codeforce

Codeforces Round #617 (Div. 3) 题解

目录 Codeforces Round #617 (Div. 3) 题解 前言 A. Array with Odd Sum 题意 做法 程序 B. Food Buying 题意 做法 程序 C. Yet Another Walking Robot 题意 做法 程序 D. Fight with Monsters 题意 做法 程序 E1. String Coloring (easy version) 题意 做法 程序 E2. String Coloring (hard version) 题意 做法