noip13
11.22
颓死了,不想改。
t1
场切。
观察大样例大胆猜测答案很小(实际上答案不超过6,伏笔)。
然后手模inf组数据即可发现结论。
将每个数在这几步中每次选几个看成 \(x\) 进制数 (\(x=a_{i+1}/a_i\)) ,而 \(x^{步数}\)有 \(x^{步数}-1\)个子集(减1是因为去除0),所以最多可判断 \(x^{步数}-1\) 个数。
之后便是找最小的步数。
然后就没了。
代码简单,主要就是能不能发现上面的性质。
伏笔回收,wy_x特判完前4个点后直接输出4,结果只有40pts,套数据发现10个点中有五个1,两个2, 3,5,6各一个,就是没有4。
无敌了wy_x,不愧是大手子,总能整出新活。
code
t1
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N = 70;
int n, a[N];
map<int, int> mp;
signed main()
{
freopen("coin.in", "r", stdin);
freopen("coin.out", "w", stdout);
ios::sync_with_stdio(0);
cin.tie(0);
cin >> n;
for (int i = 1; i <= n; ++i)
cin >> a[i];
// sort(a + 1, a + 1 + n);
for (int i = 2; i <= n; ++i)
++mp[a[i] / a[i - 1]];
int ans = 1, res = 0;
for (auto y : mp)
{
int val = y.first;
// cout << "val=" << y.first << " cnt=" << y.second << "\n";
int cnt = 1;
while (1)
{
if (val - res - y.second - 1 >= 0)
{
res += y.second;
ans = max(ans, cnt);
// cout << "ans=" << ans << " res=" << res << "\n";
break;
}
++cnt;
val *= y.first;
}
}
cout << ans;
return 0;
}
咕了。
本文来自博客园,作者:HS_fu3,转载请注明原文链接:https://www.cnblogs.com/HS-fu3/p/19258455

浙公网安备 33010602011771号