zoukankan      html  css  js  c++  java
  • 防线

     

     

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 const int N = 200010;
     4 typedef long long ll;
     5 struct seq {
     6     int s, e, d;
     7 } seqs[N];
     8 int n;
     9 ll get_sum(int x) { //get_sum返回小于等于x的数的个数
    10     ll res = 0;
    11     for (int i = 0; i < n; i++) { //遍历所有序列
    12         if (seqs[i].s <= x) {
    13             res += (min(seqs[i].e, x) - seqs[i].s) / seqs[i].d + 1;
    14         }
    15     }
    16     return res;
    17 }
    18 int main() {
    19     ios::sync_with_stdio(false);
    20     cin.tie(0);
    21     cout.tie(0);
    22     int t;
    23     cin >> t;
    24     while (t--) {
    25         int l = 0, r = 0;
    26         cin >> n;
    27         for (int i = 0; i < n; i++) {
    28             int s, e, d;
    29             cin >> s >> e >> d;
    30             seqs[i] = {s, e, d};
    31             r = max(r, e);
    32         }
    33         while (l < r) {
    34             int mid = (l + r) / 2;
    35             if (get_sum(mid) & 1) { //如果是奇数的话
    36                 r = mid;
    37             } else {
    38                 l = mid + 1;
    39             }
    40         }
    41         //看一下二分出来的这个点上的数的个数是多少
    42         //小于等于l的数的个数减去小于等于l - 1的数的个数就是等于l的数的个数
    43         ll sum = get_sum(l) - get_sum(l - 1); 
    44         if (sum & 1) { //如果是奇数,就是答案
    45             cout << l << " " << sum << endl;
    46         } else { //否则无解
    47             cout << "There's no weakness." << endl;
    48         }
    49     }
    50     return 0;
    51 }
  • 相关阅读:
    利用scanf函数修改内存中任意位置内容
    TSql
    完整性约束及其违约处理
    实现关机、重启、注销
    建立索引的原则
    我只想安静的大便
    格式化GridView特定的值
    SELECT语句执行顺序解析
    CPU对存储器的读写
    Linux常用97条命令
  • 原文地址:https://www.cnblogs.com/fx1998/p/14009488.html
Copyright © 2011-2022 走看看