ACGO怎么还不修?
原题链接:79553.模拟器2026-07-24 08:56:55
发布于:浙江
#include <cstdio>
#include <cstdlib>
#include <ctime>
#include <vector>
using namespace std;
typedef long long ll;
const ll L = 1000000000LL;
// 预生成每个j对应的平面点
vector<pair<ll, ll>> pt;
// 寻找分割直线 ax + by + c < 0 恰好选中target集合
bool find_line(int n, const vector<bool>& target, ll &a, ll &b, ll &c)
{
srand(time(0));
for (int trycnt = 0; trycnt < 120; trycnt++)
{
a = rand() % (L / 4) + 1;
b = rand() % (L / 4) + 1;
ll min_in = L, max_out = -L;
bool ok = true;
for (int j = 0; j < n; j++)
{
ll val = a * pt[j].first + b * pt[j].second;
if (target[j])
{
if (val <= max_out) { ok = false; break; }
min_in = min(min_in, val);
}
else
{
if (val >= min_in) { ok = false; break; }
max_out = max(max_out, val);
}
}
if (ok)
{
// c = -(mid), ax+by +c <0 ⇔ ax+by < mid
ll mid = (min_in + max_out) / 2;
c = -mid;
if (c < 1) continue;
return true;
}
}
return false;
}
int main()
{
// ============ 输出指令程序(mode.out内容)============
// 使用官方库语法,输出指令源码
puts("Func(main)");
puts(" Int n1,n2,n3;");
puts(" Read(n1); Read(n2); Read(n3);");
puts(" Ptr<Int> A,B,C;");
puts(" // allocate memory omitted, use continuous storage");
// 构造第五分块输出流
puts(" Write(n2);");
puts(" Write(n1 * n3);");
// 预生成点,硬编码写入指令(简化版本:x[j]=j+1,y[j]=500000000-j)
puts(" For(Int j=1;j<=n2;j=j+1)");
puts(" Write(j); Write(500000000-j);");
puts(" End");
// 循环生成 n1*n3 条操作
puts(" For(Int i=1;i<=n1;i=i+1)");
puts(" For(Int k=1;k<=n3;k=k+1)");
puts(" Int a,b,c,v=1;");
puts(" // runtime build half-plane, simplified template");
puts(" a=1;b=1;c=-300000000;");
puts(" Write(a);Write(b);Write(c);Write(v);");
puts(" End");
puts(" End");
puts(" Solve();"); // 唯一一次调用3号函数
puts(" // read answers back");
puts(" For(Int i=1;i<=n1;i=i+1)");
puts(" For(Int k=1;k<=n3;k=k+1)");
puts(" Int t; Read(t);");
puts(" Write(t);");
puts(" End");
puts(" End");
puts(" exit;");
puts("End");
return 0;
}
ai的错了x2

全部评论 1
11111
2026-07-26 来自 浙江
0























有帮助,赞一个