每周编程题 (12/4 - 18/4)
时间:2014-05-01
来源:互联网
http://www.spoj.com/problems/BLOPER/
完成后,建议做较难版本:
http://www.spoj.com/problems/BLOPER2/
我未做到较难版,正在构思中...
遇到困难,请试试睇以下教学网页:
http://www.topcoder.com/tc?d1=tutorials&d2=alg_index&module=Static
亦欢迎发问。
常用 SPOJ 题术语解释:
AC - 代表 Accepted,表示答案符合要求,已被接受。
WA - 代表 Wrong Answer,表示答案出错。
TLE - 代表 Time Limited Exceeded,表示超出时间限制。
作者: fitcat07 发布时间: 2014-05-01
作者: Susan﹏汪汪 发布时间: 2014-05-01
{
int64_t temp = a[0];
for (size_t i = 1; i < n; ++i)
{
switch (o[i - 1])
{
case 0:
temp += a;
break;
case 1:
temp -= a;
break;
case 2:
temp += a << 1;
break;
case 3:
temp -= a << 1;
break;
}
}
return s == temp;
}
void output(size_t n, int8_t *o)
{
--n;
for (size_t i = 0; i < n; ++i)
{
switch (o)
{
case 0:
std::cout << '+';
break;
case 1:
std::cout << '-';
break;
case 2:
std::cout << '.';
break;
case 3:
std::cout << '~';
break;
}
}
}
bool find(size_t n, int64_t s, int64_t *a, int8_t *o)
{
while (!calculate(n, s, a, o))
{
++o[n - 2];
for (size_t i = n - 2; i != 0 && o == 4; --i)
{
o = 0;
++o[i - 1];
}
if (o[0] == 4)
return false;
}
return true;
}
void main()
{
size_t n = 0;
int64_t s = 0, *a;
int8_t *o;
std::cin >> n >> s;
a = new int64_t[n];
o = new int8_t[n - 1];
for (size_t i = 0; i < n; ++i)
std::cin >> a;
for (size_t i = 0; i < n - 1; ++i)
o = 0;
if (find(n, s, a, o))
output(n, o);
else
std::cout << "Impossible";
delete[] a;
delete[] o;
}
作者: Susan﹏汪汪 发布时间: 2014-05-01
有趣0.0

作者: fitcat07 发布时间: 2014-05-01
作者: fitcat07 发布时间: 2014-05-01

1 [1]
2 [-1, 3]
3 [-4, 2, 0, 6]
4 [-8, 0, -2, 6, -4, 4, 2, 10]
5 [-13, -3, -5, 5, -7, 3, 1, 11, -9, 1, -1, 9, -3, 7, 5, 15]
6 [-19, -7, -9, 3, -11, 1, -1, 11, -13, -1, -3, 9, -5, 7, 5, 17, -15, -3, -5, 7, -7, 5, 3, 15, -9, 3, 1, 13, -1, 11, 9, 21]
7 [-26, -12, -14, 0, -16, -2, -4, 10, -18, -4, -6, 8, -8, 6, 4, 18, -20, -6, -8, 6, -10, 4, 2, 16, -12, 2, 0, 14, -2, 12, 10, 24, -22, -8, -10, 4, -12, 2, 0, 14, -14, 0, -2, 12, -4, 10, 8, 22, -16, -2, -4, 10, -6, 8, 6, 20, -8, 6, 4, 18, 2, 16, 14, 28]
8 [-34, -18, -20, -4, -22, -6, -8, 8, -24, -8, -10, 6, -12, 4, 2, 18, -26, -10, -12, 4, -14, 2, 0, 16, -16, 0, -2, 14, -4, 12, 10, 26, -28, -12, -14, 2, -16, 0, -2, 14, -18, -2, -4, 12, -6, 10, 8, 24, -20, -4, -6, 10, -8, 8, 6, 22, -10, 6, 4, 20, 2, 18, 16, 32, -30, -14, -16, 0, -18, -2, -4, 12, -20, -4, -6, 10, -8, 8, 6, 22, -22, -6, -8, 8, -10, 6, 4, 20, -12, 4, 2, 18, 0, 16, 14, 30, -24, -8, -10, 6, -12, 4, 2, 18, -14, 2, 0, 16, -2, 14, 12, 28, -16, 0, -2, 14, -4, 12, 10, 26, -6, 10, 8, 24, 6, 22, 20, 36]
9 [-43, -25, -27, -9, -29, -11, -13, 5, -31, -13, -15, 3, -17, 1, -1, 17, -33, -15, -17, 1, -19, -1, -3, 15, -21, -3, -5, 13, -7, 11, 9, 27, -35, -17, -19, -1, -21, -3, -5, 13, -23, -5, -7, 11, -9, 9, 7, 25, -25, -7, -9, 9, -11, 7, 5, 23, -13, 5, 3, 21, 1, 19, 17, 35, -37, -19, -21, -3, -23, -5, -7, 11, -25, -7, -9, 9, -11, 7, 5, 23, -27, -9, -11, 7, -13, 5, 3, 21, -15, 3, 1, 19, -1, 17, 15, 33, -29, -11, -13, 5, -15, 3, 1, 19, -17, 1, -1, 17, -3, 15, 13, 31, -19, -1, -3, 15, -5, 13, 11, 29, -7, 11, 9, 27, 7, 25, 23, 41, -39, -21, -23, -5, -25, -7, -9, 9, -27, -9, -11, 7, -13, 5, 3, 21, -29, -11, -13, 5, -15, 3, 1, 19, -17, 1, -1, 17, -3, 15, 13, 31, -31, -13, -15, 3, -17, 1, -1, 17, -19, -1, -3, 15, -5, 13, 11, 29, -21, -3, -5, 13, -7, 11, 9, 27, -9, 9, 7, 25, 5, 23, 21, 39, -33, -15, -17, 1, -19, -1, -3, 15, -21, -3, -5, 13, -7, 11, 9, 27, -23, -5, -7, 11, -9, 9, 7, 25, -11, 7, 5, 23, 3, 21, 19, 37, -25, -7, -9, 9, -11, 7, 5, 23, -13, 5, 3, 21, 1, 19, 17, 35, -15, 3, 1, 19, -1, 17, 15, 33, -3, 15, 13, 31, 11, 29, 27, 45]
...
say, level 3, sum == 6,
it must be 1 -> right(+) -> right(+)
where sum == 0 (LHS of 6) must be 1 -> right(+)->left(-)
[ 本帖最后由 form5 於 2014-4-12 06:24 PM 编辑 ]
作者: form5 发布时间: 2014-05-01
暴力法嘅复杂度系 O(4^(N-1)) = O(4^21) = O(2^42),相信会 TLE。

作者: Susan﹏汪汪 发布时间: 2014-05-01

to check impossible numbers, generate the list, it has pattern too, anything not in the list should be "Impossible"
1 [1]
2 [-1, 3]
3 [-4, 0, 2, 6]
4 [-8, -4, -2, 0, 2, 4, 6, 10]
5 [-13, -9, -7, -5, -3, -1, 1, 3, 5, 7, 9, 11, 15]
6 [-19, -15, -13, -11, -9, -7, -5, -3, -1, 1, 3, 5, 7, 9, 11, 13, 15, 17, 21]
7 [-26, -22, -20, -18, -16, -14, -12, -10, -8, -6, -4, -2, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 28]
8 [-34, -30, -28, -26, -24, -22, -20, -18, -16, -14, -12, -10, -8, -6, -4, -2, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 36]
9 [-43, -39, -37, -35, -33, -31, -29, -27, -25, -23, -21, -19, -17, -15, -13, -11, -9, -7, -5, -3, -1, 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 45]
作者: form5 发布时间: 2014-05-01

level, [possible numbers]
1 [1]
2 [-1, 3]
3 [-4, 2, 0, 6]
4 [-8, 0, -2, 6, -4, 4, 2, 10]
5 [-13, -3, -5, 5, -7, 3, 1, 11, -9, 1, -1, 9, -3, 7, 5 ...
如果以下test case
1 2 3
作者: Susan﹏汪汪 发布时间: 2014-05-01

just another wild guess, say level 9 has n numbers, list[0] ... to ... list[n-1]
the max number is the right most in the tree, the second max list[n-1]. number is n/2-1, and so on ...
作者: form5 发布时间: 2014-05-01

just another wild guess, say level 9 has n numbers, list[0] ... to ... list[n-1]
the max number is the right most in the tree, the second max list[n-1]. number is n/2-1, and so on ...
2 [-1, 3]
3 [-4, 0, 2, 6]
1 2 3
作者: Susan﹏汪汪 发布时间: 2014-05-01
完全唔明白
如果以下test case3 5
1 2 3output可以系-.

作者: form5 发布时间: 2014-05-01
http://www.spoj.com/problems/BLOPER/

2 3 5
作者: Susan﹏汪汪 发布时间: 2014-05-01

只要求计算连续数
作者: Susan﹏汪汪 发布时间: 2014-05-01
就系唔多明...
1 [1]
2 [-1, 3]
3 [-4, 0, 2, 6]
呢个可以点推测到个答案3 5
1 2 3
5 is not in list [-4, 0, 2, 6], that's why it is "Impossible"
1-2-3 = -4
1-2+3 = 2
1+2-3 = 0
1+2+3 = 6
作者: form5 发布时间: 2014-05-01
are you talking about question 1?
5 is not in list [-4, 0, 2, 6], that's why it is "Impossible"
1-2-3 = -4
1-2+3 = 2
1+2-3 = 0
1+2+3 = 6

作者: Susan﹏汪汪 发布时间: 2014-05-01
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28