srm 533
250
Description
给你一串数字序列,每次删掉第i个数。获得权值w[i−1]×w[i+1],求最后剩下第一个和最后一个数获得的最大权值和
Solution
简单dp,枚举断点就可以
Code
#include <bits/stdc++.h>
using namespace std;
const int N = 55;
typedef long long LL;
LL f[N][N];
vector<int> w;
LL dp(int l, int r) {
if (r - l == 1) return f[l][r] = 0;
LL &t = f[l][r];
if (~t) return t;
t = 0;
for (int i = l + 1; i < r; ++i) {
t = max(t, dp(l, i) + dp(i, r) + w[l] * w[r]);
}
return t;
}
class CasketOfStar {
public:
int maxEnergy(vector <int> weight) {
w = weight;
int n = weight.size();
memset(f, -1, sizeof(f));
return dp(0, n - 1);
}
};
500
Description:
给定一个字符矩阵。我们要按顺序取遍全部的”#”。规定操作顺序是取同行的一个”#”,再取同列的一个”#”,以此类推,问能不能取遍
Solution
非常easy反应到,这是一道欧拉回路的题,行列单独考虑。处理一些细节就能够了。注意到假设是欧拉通路的话起始点的问题就能够了。整体来说比較简单。
Code:
#include <bits/stdc++.h>
using namespace std;
const int N = 55;
int r[N], c[N];
bool ok[N][N], vis[N][N];
int n, m, tot;
void dfs(int x, int y) {
vis[x][y] = 1;
--tot;
for (int j = 0; j < m; ++j)
if (ok[x][j] && !vis[x][j]) dfs(x, j);
for (int i = 0; i < n; ++i)
if (ok[i][y] && !vis[i][y]) dfs(i, y);
}
class MagicBoard {
public:
string ableToUnlock(vector <string> board) {
n = board.size(), m = board[0].size();
int x, y;
for (int i = 0; i < n; ++i)
for (int j = 0; j < m; ++j)
if (board[i][j] == '#') {
ok[i][j] = 1;
++r[i], ++c[j];
x = i, y = j;
++tot;
}
int rr = 0, cc = 0;
for (int i = 0; i < n; ++i) if (r[i] & 1) ++rr;
for (int j = 0; j < m; ++j) if (c[j] & 1) ++cc;
if (rr + cc > 2) return "NO";
if (rr + cc == 2 && !cc) return "NO";
dfs(x, y);
cout << tot << endl;
return tot ? "NO" : "YES";
}
}P;
int main() {
vector<string> s;
s.push_back("##"), s.push_back(".#");
P.ableToUnlock(s);
return 0;
}
版权声明:本文博主原创文章,博客,未经同意不得转载。
srm 533的更多相关文章
- 记第一次TopCoder, 练习SRM 583 div2 250
今天第一次做topcoder,没有比赛,所以找的最新一期的SRM练习,做了第一道题. 题目大意是说 给一个数字字符串,任意交换两位,使数字变为最小,不能有前导0. 看到题目以后,先想到的找规律,发现要 ...
- SRM 513 2 1000CutTheNumbers(状态压缩)
SRM 513 2 1000CutTheNumbers Problem Statement Manao has a board filled with digits represented as St ...
- SRM 510 2 250TheAlmostLuckyNumbersDivTwo(数位dp)
SRM 510 2 250TheAlmostLuckyNumbersDivTwo Problem Statement John and Brus believe that the digits 4 a ...
- SRM 657 DIV2
-------一直想打SRM,但是感觉Topcoder用起来太麻烦了.题目还是英文,不过没什么事干还是来打一打好了.但是刚注册的号只能打DIV2,反正我这么弱也只适合DIV2了.. T1: 题目大意: ...
- SRM DIV1 500pt DP
SRM 501 DIV1 500pt SRM 502 DIV1 500pt SRM 508 DIV1 500pt SRM 509 DIV1 500pt SRM 511 DIV1 500pt SRM 5 ...
- TC srm 673 300 div1
TC srm.673 300 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 Description 给你n(n<=50)匹马和n个人,一匹马和一个人能 ...
- SRM 584 第一次玩TopCoder。。。只水题一道。。。
第一次topcoder,以前老感觉没有资格去做tc,cf什么的,现在已经慢慢接触了. 感觉还可以,还是有让我们这些蒻菜安慰的水题. tc的确很好玩,用客户端比赛,还有各种规则,而且还是只编写一个类提交 ...
- SRM 616 ColorfulCoins
题意:给定一个从小到大的货币面值,每一个面额都是其前面面额的倍数(倍数大于等于2),每一种货币面值对应一种颜色,目前不清楚面值与颜色的对应关系.要求用最少的查询次数来确定面额与颜色的对应关系.(一次查 ...
- SRM144 - SRM 148(少144-DIV1-LV3,147-DIV2-LV3)
SRM 144 DIV 1 500pt tag:组合 题意:彩票中奖.给定n, m,从1-n中选择m个数组成数列a1, a2, a3...am.对于数列{am}分别满足以下条件的概率: (1)数列所有 ...
随机推荐
- quarze的工作原理
quartz的工作原理 http://lavasoft.blog.51cto.com/62575/181907/ 几种定时任务的比較 http://blog.sina.com.cn/s/blog_69 ...
- c语言指针具体解释
指针是C语言中广泛使用的一种数据类型. 运用指针编程是C语言最基本的风格之中的一个.利用指针变量能够表示各种数据结构: 能非常方便地使用数组和字符串: 并能象汇编语言一样处理内存地址,从而编出精练而高 ...
- 【Dev Club 分享】腾讯验证码的十二年
源:http://mp.weixin.qq.com/s?__biz=MzA3NTYzODYzMg==&mid=2653578147&idx=3&sn=94a8f8f8b4a23 ...
- Please verify you invoked Maven from the correct directory
解决办法: 在cmd中,把当前路径转换到一个含有pom文件的 项目路径下 再使用 类似下面的deploy就行 mvn deploy:deploy-file -DgroupId=com.taobao.n ...
- error: /usr/include/stdio.h: Permission denied 的一种情况分析
error: /usr/include/stdio.h: Permission denied 的一种情况分析 代码: #include <stdio.h> int main(){ prin ...
- Servlet和JSP读书笔记(三)之Cookie
一. 浏览器和服务器之间通信的简单介绍引出Cookie和Session(只是简单的简介,不包含协议方面的知识) 1.当我们在浏览器中输入一个地址后,回车后就可以看到浏览器给我们展示的漂亮页面.在这个过 ...
- [C#基础] 泛型
为什么泛型? 在泛型中,最重要的应用便是集合类,因此我们模拟一个简单的集合类 对于上述示例,可以有如下应用 从上可看出,自定义的代码太丑陋了,只能用于string类型. 当然我们可以用object作为 ...
- TCP、UDP数据包大小的限制(UDP数据包一次发送多大为好)——数据帧的物理特性决定的,每层都有一个自己的数据头,层层递减
1.概述 首先要看TCP/IP协议,涉及到四层:链路层,网络层,传输层,应用层. 其中以太网(Ethernet)的数据帧在链路层 IP包在网络层 TCP或UDP包在传输层 TCP或UDP中的数据(Da ...
- MIPS平台目标机安装Oprofile时出现error
在Debian下安装Oprofile 重要:应该使linux内核选项支持 在 .config 文件中设置CONFIG_PROFILING=y和CONFIG_OPROFILE=y. 重新编译,烧写.使用 ...
- IT忍者神龟之Photoshop解析新手抠图的5个高速选择工具
一:魔棒工具 这是建立选区最简单的方法.但仅仅有在背景色为纯色时才会比較有效. 因此,当要选择的对象的背景为空白背景时.可使用魔棒工具,比如一张产品拍摄图. 在建立选区时,首先,要确保图片在一个图层中 ...