当前位置: 首页 > news >正文

F. Counting Necessary Nodes 【Codeforces Round 1009 (Div. 3)】

Codeforces Round 1009 (Div. 3)

在这里插入图片描述

思路:

很有线段树美感的题。

  1. 初始假设:假设每个1x1的正方形都是叶子节点,总数为矩形的面积。
  2. 层级合并:从小到大逐层检查是否存在可以覆盖多个小节点的正方形。每个层级的正方形边长为2的幂次。
  3. 覆盖计算
    • 对每个层级,计算该层级下可以覆盖的完整正方形数目。
    • 每个大正方形可以减少3个小节点(用1个大节点代替4个小节点,节省3个)。
  4. 终止条件:当当前层级的正方形无法覆盖任何区域时停止。

代码:

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define endl '\n'
#define int long long
#define pb push_back
#define pii pair<int,int>
#define FU(i, a, b) for(int i = (a); i <= (b); ++ i)
#define FD(i, a, b) for(int i = (a); i >= (b); -- i)
const int MOD = 1e9+7;
const int INF = 0x3f3f3f3f;

void solve() {
    int l1,r1,l2,r2;
    cin>>l1>>r1>>l2>>r2;
    int cnt = (r1-l1)*(r2-l2);
    for(int i=1;i<=20;i++){
        int t=1<<i;
        int lx=(l1>>i<<i);
        if(l1 %t!=0)lx+=t;
        int ly=(l2>>i<<i);
        if(l2 %t!=0)ly+=t;
        int rx=r1>>i<<i;
        int ry=r2>>i<<i;
        // cout<<lx<<" "<<rx<<" "<<ly<<" "<<ry<<endl;
        if(lx>=rx || ly>=ry)break;
        cnt-=3*(rx-lx)/t *(ry-ly)/t; 
    }
    cout<<cnt<<endl;
}	

signed main() {
    cin.tie(0)->ios::sync_with_stdio(0);
    int T = 1;
    cin >> T;
    while (T--) {
        solve();
    }
    return 0;
}	

相关文章:

  • 【实战ES】实战 Elasticsearch:快速上手与深度实践-8.2.1AWS OpenSearch无服务器方案
  • PySide(PyQt),使用types.MethodType动态定义事件
  • USB、DWC3与Gadget关系解析
  • 数据库管理员助理(DP-300)适合什么群体考?
  • 向量点积计算(信息学奥赛一本通-1108)
  • OpenHarmony项目的应用在DevEco Studio配置项目中固定的一键签名
  • 最节省服务器,手搓电子证书查询系统
  • 【C++语言】vector
  • 如何在vscode中编译linux中的c++文件
  • 广西建筑安全员C证考试的报名时间和考试时间是什么时候?
  • 大模型应用(一):RAG
  • 【redis】list类型:基本命令(上)
  • 深入浅出:HTML 中 <a> 标签嵌入链接教程
  • 并行算法_第十章_《C++并发编程实战》笔记
  • 创客匠人创始人IP变现大课将于3月在成都举办 助力知识付费转型
  • redis数据库
  • Seq2Seq:让机器学会同声传译的魔法架构
  • 上下文微调(Contextual Fine-Tuning, CFT)提高大型语言模型(LLMs)在特定领域的学习和推理能力
  • ​2024华为OD机试真题-太阳能板最大面积(C++)-E卷B卷-100分
  • MySQL 企业版 TDE加密后 测试和问题汇总
  • wordpress 宠物/seo关键词
  • 福州建网站/公司网站模版
  • 邹城做网站/网站域名查询官网
  • 广东网站开发公司/全球搜索引擎大全
  • 建网页和网站的区别/十大禁止安装应用入口
  • 怎么做猫的静态网站/网站优化推广外包