首页 > 其他分享 >【10-25模拟赛】

【10-25模拟赛】

时间:2024-10-25 13:42:29浏览次数:1  
标签:subset 10 freopen 25 int 数组 tie 模拟

你有 \(n\) 个正整数 \(a_1,a_2,\cdots,a_n\),它们的和是 \(m\)。你想对他们的每个子集 \(S\),求出它们的和。

现在你得到了 \(2 ^ n\) 个 \([0,m]\) 之间的和,其中数字 \(i\) 出现了 \(b\) 次。

现在给出数组 \(b\),请还原 \(a\) 数组。

显然,最小的满足 \(b_i > 0\) 的 \(i\) 肯定在 \(a\) 中出现了 \(b_i\) 次,我们新建一个数组 \(f\) 维护当前集合中每个子集和的出现次数,我们暴力把 \(i\) 往集合里加 \(b_i\) 次(注意当前真实的 \(b_i\) 是 \(b_i - f_i\),\(f_i\) 相当于 \(i\) 被从 \(b\) 中删除的次数)。

复杂度 \(O(能过)\)(有人能帮我分析一下吗)。

#include<bits/stdc++.h>
using namespace std;
const int N = 59,M = 10009;
int n,m;
int b[M],f[M];
void insert(int v) {
    for (int j = m;j >= v;j--)
        f[j] += f[j - v];
}
int main(){
    freopen("subset.in","r",stdin);
    freopen("subset.out","w",stdout);
    ios::sync_with_stdio(false);
    cin.tie(0);cout.tie(0);
    cin >> n >> m;
    for (int i = 0;i <= m;i++)
    	cin >> b[i];
    f[0] = 1;
    int cnt = 0;
    for(int i = 1;i <= m;i++){
        int val = b[i] - f[i];
        while(val--){
            insert(i);
            cout << i << ' ';
            if(++cnt == n)//不加这个会 TLE
            	return 0;
        }
    }
    return 0;
}

标签:subset,10,freopen,25,int,数组,tie,模拟
From: https://www.cnblogs.com/5002-qwq/p/18502351

相关文章

  • 20222326 2024-2025-1 《网络与系统攻防技术》实验三实验报告
    1.实验内容实验具体内容正确使用msf编码器,veil-evasion,自己利用shellcode编程等免杀工具或技巧正确使用msf编码器,使用msfvenom生成如jar之类的其他文件veil,加壳工具使用C+shellcode编程通过组合应用各种技术实现恶意代码免杀用另一电脑实测,在杀软开启的情况下,可......
  • 1024程序员征文节
    hello,大家好,我是@#陈orange,明天就是征文节了,这个节日非常重要,如今全球信息技术高速发展,截至今年,全世界大约有2780万名程序员;获奖奖品如下:活动奖品奖项类别   评选规则   奖品   获奖人数10·24特别奖   ★10月22/23/24日任一天发文   10·24专属勋章......
  • 2024-10-23-leetcode每日一题-构成整天的下标对数目 II
    题目描述给你一个整数数组 hours,表示以 小时 为单位的时间,返回一个整数,表示满足 i<j 且 hours[i]+hours[j] 构成 整天 的下标对 i, j 的数目。整天 定义为时间持续时间是24小时的 整数倍 。例如,1天是24小时,2天是48小时,3天是72小时,以此类推。......
  • CSP模拟 Town
    题意有一棵树,将它的一些边断开,使得每个连通块的点权异或和为给定的一个数\(x\),求方案数。原题好像是牛客的NC200547,没有账号看不到题,不确定。思路朴素的想法是用f[i][j]记录“\(i\)子树中与\(i\)相连的连通块异或和为\(j\)(\(i\)子树内其他连通块异或和为\(x\))”的方......
  • 2024年软件设计师中级(软考中级)详细笔记【7】面向对象技术(上)(分值10+)
    目录前言第7章面向对象技术(上)7.1面向对象基础(3-4分)7.1.1面向对象的基本概念7.1.2面向对象分析(熟记)7.1.3面向对象设计7.1.4面向对象程序设计7.1.5面向对象测试7.2UML(3~4分)7.2.1事务7.2.2关系7.2.2.1多重度7.2.3UML中的的图结语前言在备考软件设......
  • 针对灵活性进行优化的FPGA ,推出AGFC023R25A1I1V AGFC023R24C3E3V AGFC023R24C3E4X AGF
    产品简介Agilex™7F-系列设备是基于英特尔10纳米SuperFin制程技术构建的常规用途FPGA。它们是许多市场中的一系列应用的理想选择,其特性包括高达58Gbps的收发器速率、支持多种精度的定点和浮点运算的高级数字信号处理(DSP)模块,以及高性能加密块。优势•第二代英特尔......
  • 10.12日总结
    今天上午睡觉,下午学javaJava今日总结一.数据库初步了解1.数据库,像仓库一样存储数据,同时也提供了对数据查询修改删除等功能。2.对于关系型数据库(还有非关系型数据库,很少用到)而言,会将类似的数据存储在一张表中,如雇员表。每个表也包含了各个条目,如雇员的id、名字等,每个条目叫做表......
  • 题解:P10298 [CCC 2024 S4] Painting Roads
    涉及知识点:图的遍历。我们观察样例可以发现,染色之后的图是一颗树,而且还是dfs树。题目要求所以路径上的颜色都是交替的,所以直接交替染色即可。注意:建图的时候需要记录当前边的编号。代码#include<bits/stdc++.h>#defineintlonglong#definell__int128#definedbd......
  • 题解:SP25334 NPC2015A - Eefun Guessing Words
    涉及知识点:字符串处理。解题思路记录每个字符出现的第$1$个位置和最后$1$个位置,询问时比较大小即可。代码#include<bits/stdc++.h>//#defineintlonglong#definell__int128#definedbdouble#defineldblongdouble#definevovoid#defineendl'\n'#defin......
  • 利用010Editor修改so
    这里使用的so还是demo中的libBileton.so010Editor对so进行修改利用010Editor打开libBileton.so找到一部分字符串内容这里把这里面的字符串进行修改,我把大写的字母手动patch为了小写字母保存!把修改后的so放进app里先把它push到/sdcard/Download/目录下查一下apk中......