D. Dima and Hares

problem

输入n (1 ≤ n ≤ 3000) a1 a2 ... an.   b1, b2, ..., bn.   c1, c2, ..., cn.

n只兔子,每只兔子喂一遍,abc分别是旁边两只都饿着一直饿着一直饱着两只都饱着的joy值,按照某种顺序喂,求最大joy和。

think

两边的情况太模糊。。我纠结了很久。。

dp[i][0]表示喂完前i-1只第i只在第i-1只之后喂

dp[i][1]表示喂完前i-1只第i只在第i-1只之前喂

答案就是dp[n+1][0]

code

int a[N], b[N], c[N], dp[N][2];int main ()
{int n;scanf("%d", &n);for(int i = 1; i <= n; ++i) scanf("%d", &a[i]);for(int i = 1; i <= n; ++i) scanf("%d", &b[i]);for(int i = 1; i <= n; ++i) scanf("%d", &c[i]);dp[1][0] = -100000;for(int i = 1; i <= n; ++i){dp[i+1][0] = max(dp[i][0] + b[i], dp[i][1] + a[i]);dp[i+1][1] = max(dp[i][0] + c[i], dp[i][1] + b[i]);}cout<<dp[n+1][0]<<endl;return 0;
}

E. Dima and Kicks

problem

输入n m 和一个n*m的01矩阵,问是否存在“一笔画”,并且中间每笔的长度一样并且大于1

think

先判断是否有

11

11这样的,因为这样不能大于1

还有判断是否联通,还有基数点的个数最多2

code

int a[1111][1111];
int vis[1111][1111];
int ans[1111];
int dx[] = {0, 0, 1, -1};
int dy[] = {-1, 1, 0, 0};
int n, m, amount;int gcd(int x, int y){return (x==0 ? y : gcd(y % x, x));
}int cal(int x, int y){int ans = 0;if(x > 1 && a[x-1][y]) ++ans;if(x < n && a[x+1][y]) ++ans;if(y > 1 && a[x][y-1]) ++ans;if(y < m && a[x][y+1]) ++ans;return ans;
}bool sq(){for(int i = 1; i < n; ++i)for(int j = 1; j < m; ++j){if(a[i][j]==1 && a[i+1][j]==1 && a[i][j+1]==1 && a[i+1][j+1]==1) return true;}return false;
}int dfs(int i,int j){if(i<1 || i>n || j<1 || j>m) return 0;if(!a[i][j] || vis[i][j]) return 0;vis[i][j]=true;return  dfs(i+1,j) + dfs(i-1,j) + dfs(i,j+1) + dfs(i,j-1) + 1;
}bool ou(){memset(vis, 0, sizeof(vis));for(int i = 1; i <= n; ++i){for(int j = 1; j <= m; ++j){if(a[i][j]==1){if(dfs(i, j)==amount) return true;else return false;}}}
}int solve(){memset(vis, 0, sizeof(vis));memset(ans, 0, sizeof(ans));int odd = 0;for(int i = 1; i <= n; ++i){for(int j = 1; j <= m; ++j){if(a[i][j]){int num = cal(i, j);odd += (num&1);if(odd >= 3) return 0;if(num == 2 && ((a[i+1][j]==1 && a[i-1][j]==1) || (a[i][j+1]==1 && a[i][j-1]==1))) continue;vis[i][j] = 1;}}}int gg = 1;for(int i = 1; i <= n; i++){for(int j = 1; j <= m; ++j) if(vis[i][j]){for(int d = 0, k; d < 4; ++d){for(k = 1; a[i+dx[d]*k][j+dy[d]*k] && !vis[i+dx[d]*k][j+dy[d]*k]; ++k);if(k > 1){ans[k] = 1;gg = k;}}}}for(int k = max(n, m); k > 1; --k)if(ans[k]) gg = gcd(gg, k);return gg;
}int main(){amount = 0;scanf("%d%d", &n, &m);memset(a, 0, sizeof(a));for(int i = 1; i <= n; ++i) for(int j = 1; j <= m; amount += a[i][j], ++j) scanf("%d", &a[i][j]);if(sq() || !ou()){puts("-1");return 0;}int res = solve();if(res < 2) puts("-1");else{for(int i = 2; i < res; ++i){if(res % i == 0) printf("%d ", i);}printf("%d\n", res);}return 0;
}

【MZ】CF 358D - 358E #209 (Div. 2)相关推荐

  1. 【MZ】CF 359C - 359E #209 (Div. 2)

    C. Prime Number problem: 输入 n and x (1 ≤ n ≤ 105, 2 ≤ x ≤ 109) a1, a2, ..., an (0 ≤ a1 ≤ a2 ≤ ... ≤  ...

  2. 【MZ】CF 356A - 356D #207 (Div. 1)

    A. Knight Tournament problem 输入 n m 和 m 行 每行 l r x 表示把区间[l, r]中除了x还没有值的变成x 问最后每个n的值分别是多少,没有就是0 think ...

  3. 【题解】CF#24 D-Broken Robots

    在某次考试的时候用过的办法,懒人必备--[笑哭] 一个非常显然的 dp,我们用 \(f[i][j]\) 表示第 \(i\) 行第 \(j\) 列的格子走到最后一排的期望步数转移即为 \(f[i][j] ...

  4. 黑马推荐系统项目实战【四】CF的评分预测

    User-based CF评分预测 Item-based CF的评分预测  下面是模拟的小案例(分别采用上面的公式) import pandas as pdusers = ["User1&q ...

  5. 【20200203】【jwh】CF 1292C DP

    怎么每次写题解都打不开CF啊qwq 题意 给一棵n个点的树,给树边加0~n-1的权,权值不重复 求 ∑ u , v ∈ V , u ≠ v m e x ( p a t h u , v ) \sum_ ...

  6. 【Codeforces】CF 5 C Longest Regular Bracket Sequence(dp)

    题目 传送门:QWQ 分析 洛谷题解里有一位大佬讲的很好. 就是先用栈预处理出可以匹配的左右括号在数组中设为1 其他为0 最后求一下最长连续1的数量. 代码 1 #include <bits/s ...

  7. 【题解】CF#611 H-New Year and Forgotten Tree

    有趣啊~手玩一下这棵树,发现因为连边只对相连点的位数有限制,我们可以认为是在往一棵已经有 m 个结点的树上挂叶子结点直到满足要求.(m = log(10) n).注意由于 m 超级无敌小,我们可以直接 ...

  8. 【题解】CF#960 H-Santa's Gift

    好久没有写过数据结构题目了,果然还是太不自信.实际上就是要求统计一个式子: \(\sum (c[k]*p[k] - C)^{2}\) 拆开,分别统计和与平方和 \(co[k] * \sum p[k]^ ...

  9. 【题解】CF#403 D-Beautiful Pairs of Numbers

    这题还挺对胃口的哈哈~是喜欢的画风!回家路上一边听歌一边想到的解法,写出来记录一下-- 首先,由于 \(b_{k} < a_{k + 1}\) ,所以我们可以看作是在一个长度为 n 的序列上选择 ...

最新文章

  1. Zabbix实战之客户端自动注册
  2. ajax异步请求验证ua的网页,ajax 异步请求数据
  3. OpenCV中CalonderDescriptorExtractor
  4. SQL Server 数据库 'xxx' 正处于转换状态。请稍后再尝试该语句。
  5. 十年WEB技术发展历程
  6. C++学习之路:适合C++新手的练手项目,高薪之路必备项目!
  7. 改造Python中文拼音扩展库pypinyin补充自定义声母全过程
  8. mendeley 笔记_免费文献管理器 Mendeley,其实比你想象的好用!
  9. 关于Java中的final关键字
  10. 第四期_Metasploit 基础(二)MSFconsole《Metasploit Unleashed Simplified Chinese version(Metasploit官方文档教程中文版)》
  11. matlab 正弦信号合成三角波,【matlab求助】正弦波叠加成三角波信号
  12. Mathematica 取整函数
  13. 如何写简单实用的产品需求文档PRD
  14. 高德路径规划预估打车价格
  15. 视频会议turbomeeting支持高度灵活桌面共享
  16. 我的世界服务器宝石系统,我的世界1.9-1.7宝石镶嵌插件
  17. 国际网络收款工具Paypal注册图文教程
  18. ECMAScript简史 和 JavaScript的未来(译)
  19. matlab基于遗传算法的最大熵值法的双阈值图像分割
  20. 细细品味Hadoop_Hadoop集群精华文档合集

热门文章

  1. 云安全监控及云数据保护
  2. matlab 高频数据,高频股价数据 算 波动率 的matlab code (Yacine Ait-Sahalia)
  3. Linux命令安装mysql(超详细)
  4. 1225-上期所结算延迟+我脑子坏了,写作业不看要求,多写了一个哈哈哈。
  5. PaddleOCR 使用以及用自己的数据训练
  6. python学习好书推荐
  7. 项目管理解决方案4:Oracle全生命周期平台之现金流
  8. linux取消注释快捷键设置,Notepad++怎么增加整行删除快捷键?添加/取消区块注释?...
  9. 模式识别(十四)最小误判概率准则判决
  10. PDF 补丁丁 0.6.0.3413 版发布(修复提取图片问题,增加自动检查软件更新功能)...