首页 > 其他分享 >n维前缀和

n维前缀和

时间:2022-11-09 15:57:03浏览次数:42  
标签:MD const 前缀 int sum state sta

n维前缀和

DP法

每一维考虑,从低维向高维转移。

#include <bits/stdc++.h>
using namespace std;
#define LL long long
#define endl '\n'
const int MAXN = 1e5;
const int MD = 7; //每维小于7
const double eps = 1e-6;
int n, t;
map<int, int> sum;
void clean()
{
    sum.clear();
}
void solve()
{
    clean();
    cin >> t >> n;
    int MA = 1; // state范围
    for (int i = 1; i <= n; ++i)
        MA *= MD;
    // input t points of n dimension
    for (int i = 1; i <= t; ++i)
    {
        int state = 0;
        for (int j = 1; j <= n; ++j)
        {
            int x;
            cin >> x;
            state = state * MD + x;
        }
        sum[state] = 1;
    }
    int now = 1;
    for (int i = 1; i <= n; ++i)
    {
        for (int j = 0; j < MA; ++j)
        {
            if (j % (now * MD) / now)
                sum[j] += sum[j - now];
        }
        now *= MD;
    }
    int q;
    cin >> q;
    while (q--)
    {
        int sta = 0;
        for (int i = 1; i <= n; ++i)
        {
            int x;
            cin >> x;
            sta = sta * MD + x;
        }
        cout << sum[sta] << endl;
    }
}
int main()
{
    ios::sync_with_stdio(false);
    cout.tie(NULL);
    int T = 1;
    cin >> T;
    while (T--)
    {
        solve();
    }
    return 0;
}

容斥原理

利用容斥原理方法

标签:MD,const,前缀,int,sum,state,sta
From: https://www.cnblogs.com/0CarryT0/p/16874035.html

相关文章

  • 使用前缀和数组解决"区间和查询"问题
    本文已收录到 GitHub·AndroidFamily,有Android进阶知识体系,欢迎Star。技术和职场问题,请关注公众号[彭旭锐]进Android面试交流群。前言大家好,我是小彭。今......
  • 树上前缀和与差分(边权)
    问题描述有一棵n个点的树,每个点i有点树v[i],q个询问求点u到点v最简路径上所有点权之和输入格式第一行n,q表示有n个点,q个询问第二行n个整数表示每个点的权下面n-1每行三个整......
  • 树上前缀和
    树上前缀和问题描述有一棵n个点的树,每个点i有点树v[i],q个询问求点u到点v最简路径上所有点权之和输入格式第一行n,q表示有n个点,q个询问第二行n个整数表示每个点的权下面......
  • 二维数组的前缀和
    二维数组的前缀和设二维数组,intarr[5][7];,以arr[1][1]作为作为矩形的左上角坐标,以此开始存储数据,数组最左边,最上边不存储数据,为空设二维数组,int......
  • 基础算法篇——前缀和与差分
    基础算法篇——前缀和与差分本次我们介绍基础算法中的快速排序,我们会从下面几个角度来介绍前缀和:前缀和介绍前缀和基本题型前缀和介绍首先我们来简单介绍一下前缀和......
  • 浏览器私有前缀
    浏览器私有前缀1、私有前缀-moz-:代表Firefox浏览器私有属性-ms-:代表ie浏览器私有属性-webkit-:代表Safari、Chrome浏览器私有属性-o-:代表Opera浏览器私有属性2、提......
  • P5369 [PKUSC2018]最大前缀和
    题意给定一个序列\(a\),求\(a\)的所有排列的最大前缀和的和。\(1\len\le20\)。Solution考虑到\(n\)很小的性质,想到状压。先考虑一手,最大前缀和应该满足什么条件......
  • Nt、Ki、Zw等前缀含义
    搜索到如下回答。 https://stackoverflow.com/questions/4770553/windows-native-api-when-and-why-use-zw-vs-nt-prefixed-api-callsWindows本机系统服务例程的名称......
  • 862. 和至少为 K 的最短子数组 : 前缀和 + 离散化 + 权值树状数组
    题目描述这是LeetCode上的​​863.二叉树中所有距离为K的结点​​,难度为困难。Tag:「前缀和」、「离散化」、「二分」、「树状数组」给你一个整数数组​​nums​......
  • 【P4198】楼房重建(线段树维护前缀最值)
    线段树维护前缀最值相关的模板题。关键思想在于合并,\([l,mid]\)的前缀最值仍然是\([l,r]\)的前缀最值,而\((mid,r]\)中只有\(\geqmx_l\)的前缀最值才是\([l,r]\)......