首页 > 其他分享 >[ABC269F] Numbered Checker

[ABC269F] Numbered Checker

时间:2023-05-17 22:33:35浏览次数:55  
标签:Numbered __ ABC269F Checker num int128 ll mod

[ABC269F] Numbered Checker

题意

有一个 \(n \times m\) 的矩阵,有:
\(a_{ij} = \begin{cases}(i - 1)m + j&i + j\equiv0\pmod{2}\\0&i + j\equiv1\pmod{2}\end{cases}\)
给定 \(a, b, c, d\) 问从 \((a, c)\) 到 \((b, d)\) 的数字和是多少。

思路

数学,我们可以发现,每一行可以表示为:\(x, 0, x + 2, 0, x + 4 \dots\) 或是 \(0, y, 0, y + 2, 0, y + 4 \dots\)所以我们发现每一行的和是可以用等差数列来求的,再看列

         x,         0,         x + 2,             0,         x + 4
         0,         y,             0,         y + 2,             0
 x + 2 * m,         0, x + 2 + 2 * m,             0, x + 4 + 2 * m
         0, y + 2 * m,             0, y + 2 + 2 * m,             0

发现每一行的和按列来看也是等差数列,所以分类讨论然后用等差数列求和即可。

代码

#include <iostream>

using namespace std;
using ll = long long;

const int mod = 998244353;

ll n, m, q, a, b, c, d, x, y, fh, sh, oh, eh;

ll F(__int128_t a, __int128_t d, __int128_t n) {
  return ((((a % mod) * n % mod)) % mod + (n * (n - 1) / 2 * d) % mod) % mod;
}

ll num(__int128_t x, __int128_t y) {
  return ((((x - 1) % mod) * (m % mod)) % mod + y) % mod;
}

int main() {
  for (cin >> n >> m >> q; q; q--) {
    cin >> a >> b >> c >> d;
    if ((a + c) % 2) {
      x = (d - c + 1) / 2, fh = F(num(a, c + 1), 2, x);
      y = (d - c) / 2 + 1, sh = F(num(a + 1, c), 2, y);
    } else {
      x = (d - c) / 2 + 1, fh = F(num(a, c), 2, x);
      y = (d - c + 1) / 2, sh = F(num(a + 1, c + 1), 2, y);
    }
    cout << (F(fh, x * 2 * m % mod, (b - a) / 2 + 1) + F(sh, y * 2 * m % mod, (b - a + 1) / 2)) % mod << endl;
  }
  return 0;
}

标签:Numbered,__,ABC269F,Checker,num,int128,ll,mod
From: https://www.cnblogs.com/ybtarr/p/17410541.html

相关文章

  • ABC269F 题解
    前言题目传送门!更好的阅读体验?题解区的方法思维难度都过大(?),提供一种极其容易的方法。思路题目就是求\(\sum\limits_{i=x_1}^{x_2}\sum\limits_{j=y_1}^{y_2}a_{i,j}\)。所以很容易想到先算\(\sum\limits_{j=y_1}^{y_2}a_{i,j}\)。这个并不困难:如果\(i\)是奇数,那一行应......
  • DNS Checker - DNS Check Propagation Tool
    DNSChecker-DNSCheckPropagationToolDNSPropagationChecker-HowtoCheckDNSPropagationGloballyDNSCheckerprovidesafreeonlineDNSCheckertooltocheckDNSpropagationglobally.ThetoolcheckstheDNSdataofanyhostnameordomainfromthe......
  • 中英文拼写检测纠正开源项目使用入门 word-checker 1.1.0
    项目简介word-checker本项目用于单词拼写检查。支持英文单词拼写检测,和中文拼写检测。特性说明可以迅速判断当前单词是否拼写错误可以返回最佳匹配结果可以返回纠正匹配列表,支持指定返回列表的大小错误提示支持i18n支持大小写、全角半角格式化处理支持自定......
  • js performance checker All In One
    jsperformancecheckerAllInOnejs性能检测console.timeconsole.timeLogconsole.timeEndconsole.time(`⏰performance`);for(leti=0;i<10**3;......
  • [LeetCode] 2299. Strong Password Checker II
    Apasswordissaidtobe strong ifitsatisfiesallthefollowingcriteria:Ithasatleast 8 characters.Itcontainsatleast onelowercase letter.It......
  • #盲盒+码# Clang Static Analyzer (2) CodeChecker
    【本文正在参加「盲盒」+码有奖征文活动】https://ost.51cto.com/posts/19288ClangStaticAnalyzer(2)CodeChecker1、ClangStaticAnalyzer介绍Clang静态分析器CSA是......
  • 『题解』UVA 148 Anagram checker
    题目传送门分析貌似除了递归式暴力搜索外,没有其它的有效算法了。这样的话,对代码性能的要求就比较高了,为了快速的判断一个短语是否包含某个单词,必须找出一种特定的数据结......
  • P1219 [USACO1.5]八皇后 Checker Challenge
    题目描述:把n个皇后无伤放进n*n的棋盘上。输出要求:按字典序输出前三个放置方案中第1~n行的皇后的列数构成的序列。 思路:核心难点在于如何记录前一个状态用于......
  • POJ 1035 Spell checker
    DescriptionYou,asamemberofadevelopmentteamforanewspellcheckingprogram,aretowriteamodulethatwillcheckthecorrectnessofgivenword......
  • Checkerboard Pattern Shader
    写在前面:本文章为个人学习笔记,方便以后自己复习,也希望能帮助到他人。由于本人水平有限难免出现错误,还请评论区指出,多多指教。部分图元和素材来源于网络,如有侵权请联系本......