您的位置:首页 > 其它

hdu 4631 Sad Love Story(暴力)

2015-10-26 22:13 363 查看
题目连接:hdu 4631 Sad Love Story

代码

#include <cstdio>
#include <cstring>
#include <set>
#include <vector>
#include <algorithm>

using namespace std;
typedef long long ll;
typedef pair<ll, ll> pii;
typedef set<pii>::iterator iter;

ll ans;
set<pii> G;

ll get(ll x, ll y) { return x * x + y * y; }

void solve (ll x, ll y) {
iter it = G.lower_bound(make_pair(x, y));

for (iter i = it; i != G.end(); i++) {
ll tmp = i->first - x;
if (tmp * tmp >= ans) break;
ans = min(ans, get(i->first - x, i->second - y));
}

for (iter i = it; i != G.begin();) {
i--;
ll tmp = x - i->first;
if (tmp * tmp >= ans) break;
ans = min(ans, get(i->first - x, i->second - y));
}
}

int main () {
int cas, n;
scanf("%d", &cas);
while (cas--) {
G.clear();
scanf("%d", &n);
ll Ax, Bx, Cx;
ll Ay, By, Cy;
scanf("%lld%lld%lld", &Ax, &Bx, &Cx);
scanf("%lld%lld%lld", &Ay, &By, &Cy);

ans = 1e18;
ll x = Bx % Cx, y = By % Cy, ret = 0;

for (int i = 1; i < n; i++) {
G.insert(make_pair(x, y));
x = (x * Ax + Bx) % Cx;
y = (y * Ay + By) % Cy;
solve(x, y);
ret += ans;
}
printf("%lld\n", ret);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: