• Codeforces Round #481 (Div. 3) C. Letters (模拟,二分)


    • 题意:有个\(n\)个公寓,每个公寓\(a_{i}\)代表着编号为\(1-a_{i}\)个房间,给你房间号,问它在第几栋公寓的第几个房间.

    • 题解:对每个公寓的房间号记一个前缀和,二分查找属于第几个公寓,然后求个差即可.

    • 代码:

      #include <iostream>
      #include <cstdio>
      #include <cstring>
      #include <cmath>
      #include <algorithm>
      #include <stack>
      #include <queue>
      #include <vector>
      #include <map>
      #include <set>
      #include <unordered_set>
      #include <unordered_map>
      #define ll long long
      #define fi first
      #define se second
      #define pb push_back
      #define me memset
      const int N = 1e6 + 10;
      const int mod = 1e9 + 7;
      using namespace std;
      typedef pair<int,int> PII;
      typedef pair<long,long> PLL;
       
      int n,m;
      ll a[N],b[N];
       
      int main() {
          ios::sync_with_stdio(false);cin.tie(0);
          cin>>n>>m;
           for(int i=1;i<=n;++i){
               cin>>a[i];
               a[i]+=a[i-1];
           }
           for(int i=1;i<=m;++i) cin>>b[i];
       
           for(int i=1;i<=m;++i){
               ll pos=lower_bound(a+1,a+1+n,b[i])-a;
               printf("%lld %lld\n",pos,b[i]-a[pos-1]);
           }
       
          return 0;
      }
      
  • 相关阅读:
    线程间协作的两种方式:wait、notify、notifyAll和Condition
    Lock
    线程池ExecutorService的使用
    使用volatile的条件
    解决共享资源竞争
    并发时捕获异常
    Executor执行器
    BufferedReader 和BufferedWriter
    彻底理解Java的Future模式
    贝叶斯网络简介--翻译版
  • 原文地址:https://www.cnblogs.com/lr599909928/p/12934724.html
Copyright © 2020-2023  润新知