华师一附中OI组
标题:
NOIP2015试题讨论贴
[打印本页]
作者:
hr567
时间:
2015-11-7 21:16
标题:
NOIP2015试题讨论贴
欢迎大家来此讨论2015年NOIP试题,提高组普及组皆可。
作者:
hr567
时间:
2015-11-7 21:17
本帖最后由 hr567 于 2015-11-7 21:35 编辑
提高组我的第一题
#include <iostream>
using namespace std;
int n, i, j, k, x, y;
int a[29][29];
int main()
{
cin >> n;
y = 0;
x = (n-1)/2;
do
{
a[y][x] = ++k;
x = (x+1)%n;
y = (y-1+n)%n;
if (a[y][x] != 0)
{
x = (x-1+n)%n;
y = (y+2)%n;
}
}
while (k != n*n);
for (i = 0; i < n; ++i)
{
for (j = 0; j < n; ++j)
cout << a[i][j] << ' ';
cout << endl;
}
}
复制代码
应该没什么问题吧。
作者:
hr567
时间:
2015-11-7 21:33
我的第二题
#include <iostream>
using namespace std;
int n, i, j, c, ans;
int a[200000];
bool b[200000];
int main()
{
cin >> n;
for (i = 0; i < n; ++i)
{
cin >> a[i];
--a[i];
}
for (i = 0; i < n; ++i)
{
for (j = 0; j < n; ++j)
b[j] = false;
j = i;
c = 0;
do
{
++c;
b[j] = true;
j = a[j];
}
while (!b[j] && j != i);
if (c < ans || ans == 0)
ans = c;
}
cout << ans;
return 0;
}
复制代码
请问数据有二十万个数字的话该怎么优化呀?
作者:
diggersun
时间:
2015-11-8 13:54
你的第一题每行的末尾多输出了一个空格
作者:
diggersun
时间:
2015-11-8 13:54
你的第一题每行的末尾多输出了一个空格
作者:
smileandyxu
时间:
2015-11-8 14:10
diggersun 发表于 2015-11-8 13:54
你的第一题每行的末尾多输出了一个空格
那个空格不会忽略吗(尽管我没打)?
作者:
diggersun
时间:
2015-11-8 14:11
最后一行的空格肯定会被忽略 不是最后一行的,没有定义,不过我想第一题,CCF不会如此无聊卡空格吧?
作者:
hr567
时间:
2015-11-8 15:16
本帖最后由 hr567 于 2015-11-8 15:18 编辑
diggersun 发表于 2015-11-8 13:54
你的第一题每行的末尾多输出了一个空格
我在考试的时候写的代码注意到空格的问题了,把数组的第一个数单独输出了,回家重新写的时候就没有注意,输入输出考试的时候写的是<fstream>。
作者:
hr567
时间:
2015-11-8 15:20
本帖最后由 hr567 于 2015-11-10 10:50 编辑
我考试时写的代码原样:
#include <fstream>
using namespace std;
ifstream cin("magic.in");
ofstream cout("magic.out");
int n, i, j, k, x, y;
int a[29][29];
int main()
{
cin >> n;
y = 0;
x = (n-1)/2;
do
{
a[y][x] = ++k;
x = (x+1)%n;
y = (y-1+n)%n;
if (a[y][x] != 0)
{
x = (x-1+n)%n;
y = (y+2)%n;
}
}
while (k != n*n);
for (i = 0; i < n; ++i)
{
cout << a[i][0];
for (j = 1; j < n; ++j)
cout << ' ' << a[i][j];
cout << '\n';
}
return 0;
}
复制代码
作者:
diggersun
时间:
2015-11-8 19:22
本帖最后由 diggersun 于 2015-11-8 19:27 编辑
那么你100分到手了,避免了爆零的尴尬。
作者:
hr567
时间:
2015-11-10 10:28
想想去年,第一题一群三十分……
作者:
smileandyxu
时间:
2015-11-20 12:54
http://www.tyvj.cn/Contest/449
tyvj比赛
作者:
smileandyxu
时间:
2015-11-20 12:55
另外,跳石头那一题究竟要怎么选择向左合并还是向右合并距离?
欢迎光临 华师一附中OI组 (http://hsyit.cn/)
Powered by Discuz! X3.2