SRM 638 Div.2
Posted qdscwyy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SRM 638 Div.2相关的知识,希望对你有一定的参考价值。
250
给一个字符串
要求从一种形式换成另一形式
class NamingConvention{
private:
int a, b, c;
public:
int d;
string toCamelCase(string str) {
int p = 0;
while ((p = str.find('_', p)) != string:: npos) {
str[p + 1] = toupper(str[p + 1]);
str.erase(p, 1);
p = p + 1;
}
return str;
}
};
500
一道惊险刺激的好题
可惜就是数据小了点
所以直接枚举答案就能过
这套比赛Div.1的600分题就是它的加强版.
class NarrowPassage2Easy {
public:
int count(vector <int> size, int maxSizeSum) {
int len = size.size();
memset(vis, 0, sizeof(vis));
for (int i = 1; i <= len; i++) {
for (int j = i + 1; j <= len; j++) {
int x = size[i - 1] + size[j - 1];
if (x > maxSizeSum) vis[j][i] = 1;
}
}
int sum = 0;
if (len == 1) return 1;
if (len == 2) {
if (size[0] + size[1] > maxSizeSum) return 1;
return 2;
}
if (len == 3) {
for (int i = 1; i <= len; i++) {
for (int j = 1; j <= len; j++) {
if (i == j) continue;
for (int k = 1; k <= len; k++) {
if (k == i || k == j) continue;
if (vis[i][j] || vis[i][k] || vis[j][k]) continue;
sum++;
}
}
}
}
if (len == 4) {
for (int i1 = 1; i1 <= len; i1++) {
for (int i2 = 1; i2 <= len; i2++) {
if (i1 == i2) continue;
for (int i3 = 1; i3 <= len; i3++) {
if (i1 == i3 || i2 == i3) continue;
for (int i4 = 1; i4 <= len; i4++) {
if (i1 == i4 || i2 == i4 || i3 == i4) continue;
if (vis[i1][i2] || vis[i1][i3] || vis[i1][i4]
|| vis[i2][i3] || vis[i2][i4]
|| vis[i3][i4]) continue;
sum++;
}
}
}
}
}
if (len == 5) {
for (int i1 = 1; i1 <= len; i1++) {
for (int i2 = 1; i2 <= len; i2++) {
if (i1 == i2) continue;
for (int i3 = 1; i3 <= len; i3++) {
if (i1 == i3 || i2 == i3) continue;
for (int i4 = 1; i4 <= len; i4++) {
if (i1 == i4 || i2 == i4 || i3 == i4) continue;
for (int i5 = 1; i5 <= len; i5++) {
if (i1 == i5 || i2 == i5 || i3 == i5 || i4 == i5) continue;
if (vis[i1][i2] || vis[i1][i3] || vis[i1][i4] || vis[i1][i5]
|| vis[i2][i3] || vis[i2][i4] || vis[i2][i5]
|| vis[i3][i4] || vis[i3][i5]
|| vis[i4][i5]) continue;
sum++;
}
}
}
}
}
}
if (len == 6) {
for (int i1 = 1; i1 <= len; i1++) {
for (int i2 = 1; i2 <= len; i2++) {
if (i1 == i2) continue;
for (int i3 = 1; i3 <= len; i3++) {
if (i1 == i3 || i2 == i3) continue;
for (int i4 = 1; i4 <= len; i4++) {
if (i1 == i4 || i2 == i4 || i3 == i4) continue;
for (int i5 = 1; i5 <= len; i5++) {
if (i1 == i5 || i2 == i5 || i3 == i5 || i4 == i5) continue;
for (int i6 = 1; i6 <= len; i6++) {
if (i1 == i6 || i2 == i6 || i3 == i6 || i4 == i6 || i6 == i5) continue;
if (vis[i1][i2] || vis[i1][i3] || vis[i1][i4] || vis[i1][i5] || vis[i1][i6]
|| vis[i2][i3] || vis[i2][i4] || vis[i2][i5] || vis[i2][i6]
|| vis[i3][i4] || vis[i3][i5] || vis[i3][i6]
|| vis[i4][i5] || vis[i4][i6]
|| vis[i5][i6]) continue;
sum ++;
}
}
}
}
}
}
}
return sum;
}
};
1000
Description
从一颗有边权的无根树的任意节点出发能到达最远的点有多少种
Solution
看了一下数据范围, 感觉好像这个题是来搞笑的
口胡一下吧
首先最多19个点的话(2^19)大概是50万, 然后从这些点宽搜或者求最短路?
以上是关于SRM 638 Div.2的主要内容,如果未能解决你的问题,请参考以下文章
Codeforces Round #638 (Div. 2)
Codeforces Round #638 (Div. 2)