
日记
我刚上的青名啊!!!
Serval and Kaitenzushi BuffetLink to
这个喷不了这个是纯糖。
我们发现第 盘寿司一定是在 分钟前吃掉,所以我们直接维护一个大根堆。如果当前的位置满足有一个整数 使得 等于当前位置的下标,我们就把堆顶取出来。
这道题是个人都会去想 dp 吧?
Simple PermutationLink to
你说我怎么糖成这样,黄题都做不来。
一句话:从小往大取,取不到就往下找一个质数取。
我赛时还一个劲的猜结论。
Serval and ModuloLink to
我们发现,当一个 成立,当且仅当 ,对于 也一样。于是我们枚举 的每个因子。然后 check
它是否合法,总复杂度
Uniform SumLink to
泥硕德兑,但是 atcoder 的 rmj 为啥也挂了?
考虑 何时可行。当且仅当 且 。其中 和 分别表示 中的 个数。我们可以用 map
记录对于每一个 的 ,然后看最大的是否大于等于 。
CPP
123456789101112131415161718192021222324252627282930313233343536373839404142434445
#include<bits/extc++.h>
#define int long long
using namespace std;
int n,cnta,cntb,_max;
int a[2005],b[2005];
__gnu_pbds::gp_hash_table<int,int> mpa,mpb,tmp;
signed main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin >> n;
for (int i = 1; i <= n; i++)
{
cin >> a[i];
_max = max(_max,a[i]);
if (~a[i])
mpa[a[i]]++;
else
cnta++;
}
for (int i = 1; i <= n; i++)
{
cin >> b[i];
_max = max(_max,b[i]);
if (~b[i])
mpb[b[i]]++;
else
cntb++;
}
//重中之重
for (auto [xa,ya] : mpa)
for (auto [xb,yb] : mpb)
if (xa + xb >= _max)
tmp[xa + xb] += min(ya,yb);
int ans = 0;
for (auto [x,y] : tmp)
ans = max(ans,y);
if (ans >= n - cnta - cntb)
cout << "Yes";
else
cout << "No";
return 0;
}
[国家集训队] middleLink to
设中位数为 ,大于等于 的置为 ,反之置为 。那么区间和大于等于 的一定大于等于实际的中位数。我们就可以二分了。对于每个值维护一个线段树,线段树里存区间和,区间最大前缀和,区间最大后缀和。但是 个线段树开不下,于是我们考虑可持久化。
后日谈 Link to 后日谈
NOIp 是 11 月下旬,现在是 3 月中旬,我还有 8 个月的时间。
然而 6 月就要决定能不能继续冲省选了,所以只有 3 个月了。
日记
© 伊埃斯 | CC BY-NC-SA 4.0