CF 1490G - Old Floppy Drive 思维,二分
发布日期:2021-05-10 11:29:08 浏览次数:23 分类:精选文章

本文共 4309 字,大约阅读时间需要 14 分钟。

���������������������������������������������

���������������������������������������������������������������������������������������������������������������

������������a������1,2,2,3������������������A������������a���������������������������1,2,2,3,1,2,2,3...������������������������q������������������i���������A���������i+1���������������������������q���

������������

������������������������������������������������A������������������������������������������A������������������a������������������������������������������a=[1,2,2,3]������A���������[1,2,2,3,1,2,2,3,1,2,2,3,...]���

������������������������������������������������������������������������������������������������������������������������������������

���������������������

  • ���������������������������������������������������������
  • ������������������������������������������
  • ������1������������������������������������������

    ���������������������������a������������������sum������������������������max_���������������i���sum[i]������a���������i������������������max_[i]������sum���������������������������

    sum���������������sum[0]=0���sum[i] = sum[i-1]+a[i]���

    max_[i]������������������max_[i] = max(max_[i-1], sum[i])���

    ���������������a=[1,2,2,3]������sum���������[0,1,3,5,8]���max_���������[0,1,3,5,8]���

    ������2���������������������q

    ������������������q������������������������������i���������A���������i+1���������������>=q���

    ���������A���������a������������������������������������������������������k���������������k���������������������������������������i���

    ���������������������

    • ������sum���max_���������
    • ������q <= max_������������q������������a���������������������������������������������
    • ���������sum[n]���a���������������������������������������������������������������������

    ������3���������������

    ���������������������������������i������������������������������������

    ���������������������

    ������q <= max_[n]������q������������a���������������������������������������

    ���������������sum[n] <=0������������������������������������������q���

    ���������k = (q - max_[n]) / sum[n]���k������������������������������������������������

    ������������������i������������ q <= max_[n] + k*sum[n]������������k������������������������������

    ���������������������������������������������������������k = ceil((q - max_[i]) / sum[n])���

    ���������������

    ���������������������������������������������������

  • ������������������

    ���������������������������������������������������������k = (q - max_[i]) / sum[n] + (1 - ( (q - max_[i]) % sum[n] ) != 0 ? 1 : 0 )

  • ���������������������

    ������sum���max_������������������������������������������������n���200,505������������maxn������200,505���

  • ������������

    ���������������������������������������������������������������������������������������������������������������������

  • ������������

    ������������������������

    #include 
    #include
    #include
    #include
    #include
    using namespace std;
    signed main() {
    IOS
    int n, m, tn;
    vector
    a, sum, max_; maxn = 200505; sum.resize(maxn + 1); max_.resize(maxn + 1); for(int i=1; i<=n; i++) { int t; cin >> t; a.push_back(t); } for(int i=1; i<=n; i++) { sum[i] = sum[i-1] + a[i-1]; max_[i] = max(max_[i-1], sum[i]); } for(int i=1; i<=m; i++) { int q; cin >> q; if(q <= max_[n]) { auto it = lower_bound(max_, n+1, q) - max_; if(it == max_ + n + 1) { // ������������������ cout << "-1"; continue; } // ... } else { // ������������������ if(sum[n] <=0) { cout << "-1"; continue; } int k = ((q - max_[n]) + sum[n]-1)/sum[n]; // ������������ // ��������������������� q = q - k*sum[n]; // ���max_���������������������������q auto it = lower_bound(max_, n+1, q) - max_; if(it == max_ +n +1) { // ��������������������������� k++; // ... } // ������i // i = k*n + (it - max_[-1]) // ... } } return 0; }

    ������������������������������������������������������������������������

    ������������������������������������

  • ���������������������

    ������������������������������������������������������������������������

  • ������������������������

    ������sum���max_���������������������������������������������

  • ���������������������������

    ������������������������������������������������������

  • ���������������������������������������������������������������������������������������������������

    上一篇:2021年度训练联盟热身训练赛第二场 J-Lowest Common Ancestor 进制转换,LCA
    下一篇:应对unordered_map被卡的方法

    发表评论

    最新留言

    路过按个爪印,很不错,赞一个!
    [***.219.124.196]2025年04月14日 21时38分52秒