Skip to content

Commit 350b4ff

Browse files
committed
problem(A1054): fix generator
1 parent 12b293f commit 350b4ff

File tree

2 files changed

+66
-44
lines changed

2 files changed

+66
-44
lines changed

problems/A/A1054/A1054.md

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,15 +22,13 @@ Quento 游戏的规则非常简单,给定一个“Quento 棋盘格”,你会
2222

2323
# 输入格式
2424

25-
输入由多个测试用例组成。第一行包含一个整数 $t(1 \leq t \leq {10}^5)$,代表测试用例的数量。测试用例的描述如下:
25+
输入由多个测试用例组成。第一行包含一个整数 $t$,代表测试用例的数量。测试用例的描述如下:
2626

27-
前三行,每行三个整数,代表给定的“Quento 棋盘格”。黑色数字格上的整数代表该格子上的数字,保证这个数字的绝对值小于等于 $20$。白色运算符格上的整数只会为 $1$ 或 $-1$:若为 $1$,则代表该格子上的运算符为 `+`若为 $-1$,则代表该格子上的运算符为 `-`
27+
前三行,每行三个整数,代表给定的“Quento 棋盘格”。黑色数字格上的整数代表该格子上的数字。白色运算符格上若为 $1$,则代表该格子上的运算符为 `+`若为 $-1$,则代表该格子上的运算符为 `-`
2828

29-
第四行,一个整数 $m(1 \leq m \leq {10}^5)$,代表询问的数量。
29+
第四行,一个整数 $m$,代表询问的数量。
3030

31-
接下来 $m$ 行,每行两个整数 $x_i, y_i(|x_i| \leq 100$,$1 \leq y_i \leq 5)$,代表一次询问。
32-
33-
保证 $\sum m \leq 2 \times {10}^5$。
31+
接下来 $m$ 行,每行两个整数 $x_i, y_i$,代表一次询问。
3432

3533
# 输出格式
3634

@@ -84,3 +82,9 @@ Yes
8482
第三个询问可以通过以下方式达成($5+6-7-8+3=-1$):
8583

8684
![](file://quento5.jpg)
85+
86+
【数据规模与约定】
87+
88+
对于 $30 \%$ 的数据,$t=1$,$m \leq 2000$。
89+
90+
对于 $100 \%$ 的数据,$1 \leq t \leq {10}^5$,$1 \leq m \leq {10}^5$,$\sum m \leq 5 \times {10}^5$,$|x_i| \leq 100$,$1 \leq y_i \leq 5$。保证黑色数字格上只会为绝对值小于等于 $20$ 的整数,白色运算符格上只会为 $1$ 或 $-1$。

problems/A/A1054/gen.cpp

Lines changed: 56 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -16,47 +16,65 @@ int main(int argc, char const* argv[])
1616
{
1717
ofstream fout(to_string(_t)+".in");
1818
// ==============================
19-
switch(_t)
19+
auto f = [&]()
2020
{
21-
case 1: case 2:
22-
fout<<200<<'\n';
23-
for(int o=0;o<200;o++)
24-
{
25-
fout<<rndx()<<' '<<1<<' '<<rndx()<<'\n';
26-
fout<<1<<' '<<rndx()<<' '<<1<<'\n';
27-
fout<<rndx()<<' '<<1<<' '<<rndx()<<'\n';
28-
fout<<1000<<'\n';
29-
for(int j=1;j<=5;j++)
30-
for(int i=-100;i<=100;i++)
31-
fout<<i<<' '<<j<<'\n';
32-
}
33-
break;
34-
case 3: case 4:
35-
fout<<200<<'\n';
36-
for(int o=0;o<200;o++)
37-
{
38-
fout<<rndx()<<' '<<-1<<' '<<rndx()<<'\n';
39-
fout<<-1<<' '<<rndx()<<' '<<-1<<'\n';
40-
fout<<rndx()<<' '<<-1<<' '<<rndx()<<'\n';
41-
fout<<1000<<'\n';
42-
for(int j=1;j<=5;j++)
43-
for(int i=-100;i<=100;i++)
44-
fout<<i<<' '<<j<<'\n';
45-
}
46-
break;
47-
default:
48-
fout<<200<<'\n';
49-
for(int o=0;o<200;o++)
21+
for(int j=1;j<=5;j++)
22+
for(int i=-100;i<=100;i++)
23+
fout<<i<<' '<<j<<'\n';
24+
};
25+
auto one = [&]() { fout<<1005<<'\n'; f(); };
26+
auto two = [&]() { fout<<2010<<'\n'; f(); f(); };
27+
auto b_pos = [&]()
28+
{
29+
fout<<rndx()<<' '<<1<<' '<<rndx()<<'\n';
30+
fout<<1<<' '<<rndx()<<' '<<1<<'\n';
31+
fout<<rndx()<<' '<<1<<' '<<rndx()<<'\n';
32+
};
33+
auto b_neg = [&]()
34+
{
35+
fout<<rndx()<<' '<<-1<<' '<<rndx()<<'\n';
36+
fout<<-1<<' '<<rndx()<<' '<<-1<<'\n';
37+
fout<<rndx()<<' '<<-1<<' '<<rndx()<<'\n';
38+
};
39+
auto b_rnd = [&]()
40+
{
41+
fout<<rndx()<<' '<<rndo()<<' '<<rndx()<<'\n';
42+
fout<<rndo()<<' '<<rndx()<<' '<<rndo()<<'\n';
43+
fout<<rndx()<<' '<<rndo()<<' '<<rndx()<<'\n';
44+
};
45+
int t;
46+
if(_t<=0.3*CASES) t = 1;
47+
else t = 200;
48+
fout<<t<<'\n';
49+
while(t--)
50+
{
51+
switch(_t)
5052
{
51-
fout<<rndx()<<' '<<rndo()<<' '<<rndx()<<'\n';
52-
fout<<rndo()<<' '<<rndx()<<' '<<rndo()<<'\n';
53-
fout<<rndx()<<' '<<rndo()<<' '<<rndx()<<'\n';
54-
fout<<1000<<'\n';
55-
for(int j=1;j<=5;j++)
56-
for(int i=-100;i<=100;i++)
57-
fout<<i<<' '<<j<<'\n';
53+
case 1:
54+
b_pos();
55+
one();
56+
break;
57+
case 2:
58+
b_neg();
59+
one();
60+
break;
61+
case 3:
62+
b_rnd();
63+
one();
64+
break;
65+
case 4: case 5:
66+
b_pos();
67+
two();
68+
break;
69+
case 6: case 7:
70+
b_neg();
71+
two();
72+
break;
73+
default:
74+
b_rnd();
75+
two();
76+
break;
5877
}
59-
break;
6078
}
6179
// ==============================
6280
fout.flush();

0 commit comments

Comments
 (0)