A题。。暴力枚举在每个位置添加字符,然后检查一下是不是回文串

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstring>
 4 #include <algorithm>
 5 #include <cmath>
 6 #include <vector>
 7
 8 using namespace std;
 9
10 #define LL long long
11 #define eps 1e-8
12 #define inf 0x3f3f3f3f
13 #define lson l, m, rt << 1
14 #define rson m+1, r, rt << 1 | 1
15 #define mnx 31000
16
17 char s[20], ch[20];
18 bool check(){
19     int n = strlen( ch );
20     for( int i = 0, j = n-1; i <= j; ++i, --j ){
21         if( ch[i] != ch[j] ) return false;
22     }
23     return true;
24 }
25 int main(){
26     scanf( "%s", &s );
27     int n = strlen( s );
28     for( int i = 0; i <= n; ++i ){
29         for( int j = 'a'; j <= 'z'; ++j ){
30             for( int k = 0, m = 0; k <= n; ++k ){
31                 if( i == k )
32                     ch[k] = (char)j;
33                 else
34                     ch[k] = s[m++];
35             }
36             ch[n+1] = '\0';
37             if( check() ){
38                 printf( "%s\n", ch );
39                 return 0;
40             }
41         }
42     }
43     puts( "NA" );
44     return 0;
45 }

View Code

B题。。也是暴力枚举每种颜色,dfs算一下就好

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstring>
 4 #include <algorithm>
 5 #include <cmath>
 6 #include <vector>
 7
 8 using namespace std;
 9
10 #define LL long long
11 #define eps 1e-8
12 #define inf 0x3f3f3f3f
13 #define lson l, m, rt << 1
14 #define rson m+1, r, rt << 1 | 1
15 #define mnx 500
16
17 int fst[mnx], nxt[mnx], vv[mnx], col[mnx], e, ans;
18 void add( int u, int v, int c ){
19     vv[e] = v, col[e] = c, nxt[e] = fst[u], fst[u] = e++;
20 }
21 bool vis[mnx], ok;
22 void dfs( int u, int gg, int vol ){
23     if( u == gg ){
24         ans++; ok = 1; return ;
25     }
26     if( vis[u] ) return ;
27     vis[u] = 1;
28     for( int i = fst[u]; i != -1; i = nxt[i] ){
29         if( ok ) return ;
30         int v = vv[i], c = col[i];
31         if( c != vol ) continue;
32         dfs( v, gg, vol );
33     }
34 }
35 int main(){
36     int n, m, q;
37     scanf( "%d %d", &n, &m );
38     memset( fst, -1, sizeof( fst ) );
39     for( int i = 0; i < m; ++i ){
40         int u, v, c;
41         scanf( "%d %d %d", &u, &v, &c );
42         add( u, v, c );
43         add( v, u, c );
44     }
45     scanf( "%d", &q );
46     while( q-- ){
47         int u, v;
48         scanf( "%d%d", &u, &v );
49         ans = 0;
50         for( int i = 1; i <= m; ++i ){
51             memset( vis, 0, sizeof( vis ) );
52             ok = 0;
53             dfs( u, v, i );
54         }
55         cout << ans << endl;
56     }
57     return 0;
58 }

View Code

C题。。比赛的时候想不出来,看了题解才知道 第二维的状态最多不超过500。。因为你1+2+...+250 > 3w,这样每次步数减一或者加一的总的状态不会超过500,所以dp[30000][600]就够了, 把第二维300当做第一次的步数d,然后每次有可能走 d+j-n - 1, d+j-n, d+j-n+1步,感觉看代码容易理解一些。。

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstring>
 4 #include <algorithm>
 5 #include <cmath>
 6 #include <vector>
 7
 8 using namespace std;
 9
10 #define LL long long
11 #define eps 1e-8
12 #define inf 0x3f3f3f3f
13 #define lson l, m, rt << 1
14 #define rson m+1, r, rt << 1 | 1
15 #define mnx 31000
16
17 const int N = 300;
18 int dp[mnx][700], val[mnx];
19 int main(){
20     int n, m;
21     while( scanf( "%d%d", &n, &m ) != EOF ){
22         memset( val, 0, sizeof val );
23         memset( dp, 0, sizeof dp );
24         for( int i = 0; i < n; ++i ){
25             int x;
26             scanf( "%d", &x );
27             val[x]++;
28         }
29         dp[m][N] = val[m] + val[0] + 1;
30         int ans = 0;
31         for( int i = m; i < mnx; ++i ){
32             for( int j = 0; j < 600; ++j ){
33                 if( !dp[i][j] ) continue;
34                 int l = m + j - N;
35                 ans = max( dp[i][j] - 1, ans );
36                 if( i + l >= mnx ) continue;
37                 if( l > 0 )
38                     dp[i+l][j] = max( dp[i+l][j], dp[i][j] + val[i+l] );
39                 if( l > 1 )
40                     dp[i+l-1][j-1] = max( dp[i+l-1][j-1], dp[i][j] + val[i+l-1] );
41                 if( l >= 0 )
42                     dp[i+l+1][j+1] = max( dp[i+l+1][j+1], dp[i][j] + val[i+l+1] );
43             }
44         }
45         cout << ans << endl;
46     }
47     return 0;
48 }

View Code

D题。。好像是B的加强版,用并查集搞。。明天再看看

转载于:https://www.cnblogs.com/LJ-blog/p/4254735.html

cCodeforces Round #286 (Div. 2)相关推荐

  1. Codeforces Round #506 (Div. 3)

    Codeforces Round #506 (Div. 3) 实习期间事不多,对div3 面向题解和数据编程了一波 A. Many Equal Substrings 题目链接 A题就是找后缀和前缀重合 ...

  2. Codeforces Round #563 (Div. 2)/CF1174

    Codeforces Round #563 (Div. 2)/CF1174 CF1174A Ehab Fails to Be Thanos 其实就是要\(\sum\limits_{i=1}^n a_i ...

  3. 构造 Codeforces Round #302 (Div. 2) B Sea and Islands

    题目传送门 1 /* 2 题意:在n^n的海洋里是否有k块陆地 3 构造算法:按奇偶性来判断,k小于等于所有点数的一半,交叉输出L/S 4 输出完k个L后,之后全部输出S:) 5 5 10 的例子可以 ...

  4. Codeforces 504 A (Round #285 div.1 A) Misha and Forest

    Codeforces Round #285 (Div.1) A Misha and Forest 水题水题水-- 题意:给你一些点,给出他们连通了多少个点以及这些点的下标的异或值,让你找出一个图 题解 ...

  5. Codeforces Round #696 (Div. 2) (A ~ E)超高质量题解(每日训练 Day.16 )

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Codeforces Round #696 (Div. 2) (A ~ E)超高质量题解 比赛链接:h ...

  6. Codeforces Round #712 Div.2(A ~ F) 超高质量题解(每日训练 Day.15 )

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Codeforces Round #712 Div.2(A ~ F) 题解 比赛链接:https:// ...

  7. Codeforces Round #701 (Div. 2) A ~ F ,6题全,超高质量良心题解【每日亿题】2021/2/13

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 A - Add and Divide B - Replace and Keep Sorted C ...

  8. Codeforces Round #700 (Div. 2) D2 Painting the Array II(最通俗易懂的贪心策略讲解)看不懂来打我 ~

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 整场比赛的A ~ E 6题全,全部题目超高质量题解链接: Codeforces Round #700 ...

  9. Codeforces Round #699 (Div. 2) F - AB Tree(贪心、树上DP)超级清晰,良心题解,看不懂来打我 ~

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Codeforces Round #699 (Div. 2) F - AB Tree Problem ...

最新文章

  1. node.js获取本机Ip, hostName, mac
  2. 外部引用CSS中 link与@import的区别
  3. 计算机应用等级考试1,计算机等级考试一级试题
  4. zookeeper和etcd有状态服务部署
  5. java对象转json格式
  6. sed修炼系列(三):sed高级应用之实现窗口滑动技术
  7. 德国Vue.js2终极开发教程024--32
  8. flex布局 占满_果冻公开课第九课:打破传统布局方式的flex(上)
  9. 苹果ios、ipad加密视频播放器使用教程
  10. python爬虫学习教程,短短25行代码批量下载豆瓣妹子图片
  11. 判断运行环境是手机还是 PC
  12. SMBJ6.5A瞬变抑制二极管
  13. 嵌入式开发学习路线图
  14. 图像分类halcon
  15. 黑窗口方式,使用命令行导入导出Oracle
  16. OBB包围盒及其碰撞检测算法(一)
  17. STC 纯硬件自动下载电路 - 三极管负脉冲电路
  18. 月入过万的steam搬砖项目教程拆解,看这一篇就够了
  19. 计算机数据传输9600波特率,波特率9600每秒的传输字节 传输一个字节要多久-与非网...
  20. 【数据结构面试常见问题】

热门文章

  1. C#中如何得到机器的IP地址
  2. Linux 汇编语言开发指南
  3. Redis源码解析——字典结构
  4. 使用C++实现一套简单的状态机模型——原理解析
  5. PE文件和COFF文件格式分析——RVA和RA相互计算
  6. 【数据库】sqlite3数据库备份、导出方法汇总
  7. 【ubuntu工具】Atom的简介及安装
  8. php foreach嵌套foreach,php中foreach怎么嵌套foreach PHP中foreach函数用法?
  9. matlab 弹出提示,谁能告诉我为什么一打开matlab2014b就弹出一个框就自动退出
  10. 电脑画画软件_手绘、板绘、还有用pad画画都有啥区别?