社区讨论
一些问题
AT_abc129_d [ABC129D] Lamp参与者 1已保存回复 1
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @mhjdqlzk
- 此快照首次捕获于
- 2025/11/04 00:54 4 个月前
- 此快照最后确认于
- 2025/11/04 00:54 4 个月前
这是我昨天下午考试的代码:
CPP#include <bits/stdc++.h>
#include <cstdio>
#define int long long
#define ull unsigned long long
#define mod 998244353
#define MOD 1000000007
using namespace std;
const int N = 2e6 + 5,maxn = 2e3 + 5;
const double goldnum = (sqrt (5) + 1) / 2;
int a [maxn] [maxn];
vector <int> G1 [maxn],G2 [maxn],G3 [maxn],G4 [maxn];
void exitit ()
{
fclose(stdin);
fclose(stdout);
exit (0);
}
signed main ()
{
freopen("Lamp.in","r",stdin);
freopen("Lamp.out","w",stdout);
int h,w;
cin >> h >> w;
for (int i = 1;i <= h;i ++)
{
for (int j = 1;j <= w;j ++)
{
char c;
cin >> c;
if (c == '#')
{
a [i] [j] = 1;
G1 [i].push_back (j);
G2 [j].push_back (i);
G3 [i].push_back (w - j + 1);
G4 [j].push_back (h - i + 1);
}
}
}
for (int i = 1;i <= h;i ++) sort (G1 [i].begin (),G1 [i].end ()),sort (G3 [i].begin (),G3 [i].end ());
for (int i = 1;i <= w;i ++) sort (G2 [i].begin (),G2 [i].end ()),sort (G4 [i].begin (),G4 [i].end ());
// for (int i = 1;i <= w;i ++)
// {
// cout << i << ' ' << G2 [i].size () << endl;
// for (auto p : G2 [i]) cout << p << ' ';
// cout << endl;
// }
// cout << "qqq\n";
// for (int i = 1;i <= w;i ++)
// {
// cout << i << ' ' << G4 [i].size () << endl;
// for (auto p : G4 [i]) cout << p << ' ';
// cout << endl;
// }
int ans = 0;
for (int i = 1;i <= h;i ++)
{
for (int j = 1;j <= w;j ++)
{
int cnt = 0;
if (a [i] [j]) continue;
// cout << i << ' ' << j << ' ';
auto it1 = lower_bound (G1 [i].begin (),G1 [i].end (),j);
auto it2 = upper_bound (G3 [i].begin (),G3 [i].end (),w - j + 1);
auto it3 = lower_bound (G2 [j].begin (),G2 [j].end (),i);
auto it4 = upper_bound (G4 [j].begin (),G4 [j].end (),h - i + 1);
int x1,x2,x3,x4;
if (it1 == G1 [i].end ()) x1 = w;
else x1 = *it1 - 1;
if (it2 != G3 [i].end ()) x2 = w - (*it2) + 2;
else x2 = 1;
if (it3 == G2 [j].end ()) x3 = h;
else x3 = *it3 - 1;
if (it4 != G4 [j].end ()) x4 = h - (*it4) + 2;
else x4 = 1;
cnt += x1 - x2 + 1;
cnt += x3 - x4 + 1;
cnt --;
// if (it == G1 [i].end ()) cnt += w - j + 1;
// else
// {
// int x = *it;
// cnt += x - j;
// cout << x << ' ';
// }
// auto it2 = lower_bound (G2 [j].begin (),G2 [j].end (),i);
// if (it2 == G2 [j].end ())
// {
// cout << cnt << ' ';
// cnt += (h - i + 1);
// cout << cnt << ' ';
// }
// else
// {
// int x = *it2;
// cnt += x - i;
// cout << 1 << x << ' ';
// }
// cnt --;
// cout << cnt << endl;
ans = max (ans,cnt);
}
}
cout << ans;
fclose(stdin);
fclose(stdout);
return 0;
}
显然不是正解,然后补测此代码在其他平台对于相同数据可以通过,但是CCR只跑了46pts,就是想知道如果在OI比赛是否会丢分,会挂多少?
回复
共 1 条回复,欢迎继续交流。
正在加载回复...