zoukankan      html  css  js  c++  java
  • 【二分】Codeforces Round #478 (Div. 2) C. Valhalla Siege (前缀和+二分)

    链接:http://codeforces.com/contest/975/problem/C

    想到了用前缀和+二分来写这道题,心想 没想到劳资刚学的lower_bound()这么快就派上用场了 我真是个天才
    然后我竟然不知道怎么想的构造了两个前缀和,然后xjb二分,改了一个小时也没改对···

    代码:

     

     1 #include <bits/stdc++.h>
     2 
     3 using namespace std;
     4 
     5 #define ll long long
     6 #define max3(a,b,c) fmax(a,fmax(b,c))
     7 #define ios ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);
     8 
     9 const int MAXN = 2e5+10;
    10 ll pre[MAXN],a[MAXN],b[MAXN];
    11 
    12 int main()
    13 {
    14     ios
    15     int n,q;
    16     scanf("%d %d",&n,&q);
    17     for(int i = 0;i < n;i++)    scanf("%lld",&a[i]);
    18     pre[0] = a[0];
    19     for(int i = 1;i < n;i++)    pre[i] = pre[i-1]+a[i];
    20     for(int i = 0;i < q;i++)    scanf("%lld",&b[i]);
    21     ll ans = 0;
    22     for(int i = 0;i < q;i++)
    23     {
    24         ans += b[i];
    25         if(ans >= pre[n-1])
    26         {
    27             printf("%d
    ",n);
    28             ans = 0;
    29         }
    30         else
    31         {
    32             int pos = lower_bound(pre,pre+n,ans)-pre;
    33             
    34             int tt = 0;
    35             if(pre[pos] == ans)
    36             {
    37                 printf("%d
    ",n-pos-1);
    38             }
    39             else
    40             {
    41                 printf("%d
    ",n-pos);
    42             }
    43         }
    44     }
    45     return 0;
    46 }
    文章搬运自我的个人博客http://duny31030.top 原博客为静态博客,因备份丢失无法继续更新,所以又搬运回博客园,可能部分文章阅读体验不好,可以到我的静态博客搜索相同标题查看
  • 相关阅读:
    OC
    OC
    核心动画
    核心动画
    核心动画
    数据存储1
    plsql语句基础
    Oracle3连接&子查询&联合查询&分析函数
    oracle2约束添加&表复制&拼接
    Oracle表空间创建及表创建
  • 原文地址:https://www.cnblogs.com/duny31030/p/8982684.html
Copyright © 2011-2022 走看看