HDU 6682 Make Rounddog Happy

题意:给你一个集合,求它的所有子集的子集和中数字4出现了多少次

例如

4

4 4 44 44

中4(1),4(2),44(3),44(4),48(1,3),48(1,4),48(2,3),48(2,4),总共有10个数字4

 

思路:

明显数据范围就是要拆开来做,先将子集尽可能平均分

这样就有两个大小不超过220的子集和集合。

考虑集合里所有数字的每一位对答案的贡献

只有两种可能,一种是当前位数两位相加没有进位,一种是当前位数两位相加有进位

分别统计就是答案

而如果将当前位之后的那一部分数字从小到大有序排列好,就可以用两个指针分别从两边去扫

然而直接排序会超时

所以考虑类似于归并的思想,转移时候将当前位拆开按顺序重新丢入大集合里

就可以保证答案的正确性了

注意卡常

 1 #include<bits/stdc++.h>
 2 #define pb push_back
 3 using namespace std;
 4 int read(){
 5     int x=0,f=1;char c=getchar();
 6     for(;!isdigit(c);c=getchar())if(c=='-')f=-1;
 7     for(;isdigit(c);c=getchar())x=(x<<3)+(x<<1)+(c^48);
 8     return x*f;
 9 }
10 typedef long long ll;
11 struct data{ll fi,se;};
12 data mp(ll a,ll b){
13     data ret;
14     ret.fi=a;ret.se=b;
15     return ret;
16 }
17 typedef data pll;
18 int n,li[50];
19 vector<pll> X,Y,A[10],B[10];
20 
21 void get_X(int dep,ll sum){
22     if(dep>(n/2)){X.pb(mp(sum,0));return;}
23     get_X(dep+1,sum);get_X(dep+1,sum+li[dep]);
24 }
25 void get_Y(int dep,ll sum){
26     if(dep>n){Y.pb(mp(sum,0));return;}
27     get_Y(dep+1,sum);get_Y(dep+1,sum+li[dep]);
28 }
29 
30 ll get0(vector<pll> &a,vector<pll> &b,ll Base){
31     ll ret=0;int p=b.size()-1;
32     for(int i=0;i<a.size();ret+=p+1,++i)
33         for(;p>=0&&b[p].se+a[i].se>=Base;--p);
34     return ret;
35 }
36 ll get1(vector<pll> &a,vector<pll> &b,ll Base){
37     ll ret=0;int p=0;
38     for(int i=a.size()-1;~i;ret+=b.size()-p,--i)
39         for(;p<b.size()&&b[p].se+a[i].se<Base;++p);
40     return ret;
41 }
42 
43 void solve(){
44     X.clear();Y.clear();
45     
46     n=read();
47     for(int i=1;i<=n;++i)li[i]=read();
48     get_X(1,0);get_Y(n/2+1,0);
49     //get two set
50     ll ans=0,Base=1,tmp;
51     pll x,y,a,b; 
52     for(int i=0;i<11;++i,Base*=10){
53         for(int j=0;j<10;++j)A[j].clear(),B[j].clear();
54         
55         for(int j=0;j<X.size();++j)
56             x=X[j],A[x.fi%10].pb(mp(x.fi/10,x.se));
57         for(int j=0;j<Y.size();++j)
58             y=Y[j],B[y.fi%10].pb(mp(y.fi/10,y.se));
59         //get this digit
60         for(int j=0,k;j<10;++j){
61             k=(14-j)%10;
62             ans+=get0(A[j],B[k],Base);
63             k=(13-j)%10;
64             ans+=get1(A[j],B[k],Base);
65         }
66         //Calc the ans
67         for(int j=0,now=0;j<10;++j){
68             tmp=Base*j;
69             for(int k=0;k<A[j].size();++k)
70                 a=A[j][k],X[now++]=mp(a.fi,a.se+tmp);
71         }
72         for(int j=0,now=0;j<10;++j){
73             tmp=Base*j;
74             for(int k=0;k<B[j].size();++k)
75                 b=B[j][k],Y[now++]=mp(b.fi,b.se+tmp);
76         }
77     }
78     printf("%lld\n",ans);
79 }
80 
81 int main(){
82     for(int T=read()+1;--T;)solve();
83     return 0;
84 }

 

转载于:https://www.cnblogs.com/ndqzhang1111/p/11391302.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/447913.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如期而至,GCC 4.9.0正式版发布!

摘要&#xff1a;GCC是一套由GNU开发的编程语言编译器。近日&#xff0c;GCC 4.9.0发布&#xff0c;主要新特性包括&#xff1a;提升了C11和C14特性&#xff1b;诊断信息支持彩色显示&#xff1b;移除mudflap运行时检查器等。 如期而至&#xff0c;GCC 4.9.0发布&#xff0c;该…

2.9 go mod 之本地仓库搭建

wikihttps://github.com/golang/go/wiki/Modules#how-to-prepare-for-a-release参考https://blog.csdn.net/benben_2015/article/details/82227338 go mod 之本地仓库搭建----------------------------------------------------------------------------------------将当前项目…

《 追风筝的人 》:“ 为你,千千万万遍 ” ...

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 刚来研发中心的时候&#xff0c;在我的新位置上发现了一本书&#xff0c;问后得知是前同事留下的&#xff0c;已无主 。 我就收下了。一…

机器学习入门阶段程序员易犯的5个错误

本文由 伯乐在线 - toolate 翻译自 machine learning mastery。欢迎加入 技术翻译小组。转载请参见文章末尾处的要求。怎样进入机器学习领域没有定式。我们的学习方式都有些许不同&#xff0c;学习的目标也因人而异。 但一个共同的目标就是要能尽快上手。如果这也是你的目标&…

解决: Vue 项目本地运行 run 与服务器上 build 样式不一致,build 后样式不生效

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 PS&#xff1a;本人遇到这个问题是用文中最后一句话解决&#xff1a;" 在组件的样式中记得添加 scoped "。 在Vue项目开发过程…

【付出总有回报】广州广汕公路科目三路考通过!小结供大家参考

首先&#xff0c;我的路考小结只供大家参考&#xff0c;大家觉得能用就当提个醒&#xff0c;不能用就权当顶贴积分捧人场啦哈哈祝各位都能顺利过关&#xff01;考前心里和技术准备&#xff1a;我是13年6月底才考完科目二“五项必考”。7月8日才考完长途&#xff0c;可这时候我的…

解决:vue 用 axios 发送请求,每次都会发送两次请求

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 我的解决方法是后端加一个过滤器&#xff1a; package gentle.filter;import javax.servlet.*; import javax.servlet.annotation.WebF…

广州科目三考试 不得不看的十条提醒(图)

导读&#xff1a; 考试科目三时考试常会有点小紧张。经常会有考生因为紧张犯了些小错误而被pass掉。如何来应对呢&#xff1f;首先是放松心态&#xff0c;这点其实大家都明白&#xff0c;只是做不到。有人一到考试的时候就紧张&#xff0c;完全思维混乱&#xff0c;动作僵硬。建…

HDU 6706 huntian oy

题意 求以下式子的值&#xff0c;T组数据各个字母满足1 ≤ n , a , b ≤109 &#xff0c;a,b互质 思路&#xff1a; 卡常毒瘤题&#xff0c;出题人时限卡的非常紧&#xff0c;考场上推出来又T又WA 1 #include<bits/stdc.h>2 using namespace std;3 typedef long long ll;…

linux 查看空间(内存、磁盘、文件目录、分区)的几个命令

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 1. free free命令用于显示内存状态。 free指令会显示内存的使用情况&#xff0c;包括实体内存&#xff0c;虚拟的交换文件内存&#x…

Ubuntu安装LNMP

安装Nginx使用 apt-get install nginx 就能自动安装 Nginx。 为了确保获得最新的Nginx&#xff0c;可以先使用 apt-get update 命令更新源列表。 安装好之后&#xff0c;使用 dpkg -S nginx 命令来搜索 nginx相关文件。 可以从命令显示结果看出 Nginx默认的安装位置是/etc/ngin…

广州学车科目三路考操作步骤要领

广州学车&#xff0c;科目三路考操作步骤是关键&#xff0c;许多朋友明明会开车&#xff0c;却因为一些步骤上的小疏忽而不得到不补考&#xff0c;今天总结出这个广州学车科目三路考操作步骤要领&#xff0c;希望对大家有帮助&#xff1a; 广州学车&#xff0c;科目三路考操作步…

如何和何时使用 CSS 的权重设置 !important (建议:永不使用!)

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 特别声明&#xff1a;此篇文章由David根据Louis Lazaris的英文文章原名《!important CSS Declarations: How and When to Use Them》进行…

独立组件开发打包

组件单独打包 先在src下面新建hymenucsg.js文件 然后在build下的webpack.base.conf.dist.js里面 设置入口文件hymenucsg: ./src/hymenucsg.js,//csg 最后运行打包命令&#xff1a;npm run dist:dev 之后会在dist下面生成组件的js和css文件 使用&#xff1a; html中引入js和css …

广州科目三电子考需注意哪些问题?

广州驾考科目三从4月1日起开始试行电子评判与人工评判相结合的新制度&#xff0c;即电子路考&#xff0c;多数学员对新制度表示不适应&#xff0c;那么&#xff0c;科目三电子路考需要注意哪些问题? 从4月1日开始&#xff0c;科目三考试将试行计算机辅助与人工评判相结合的制度…

解决 VUE: 本地运行和服务器上运行样式不一致,run、build 运行时样式有出入

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 1. 我的情况&#xff1a; 我遇到 2 种情况&#xff0c;一个是表格的分页样式有变化。另一个是导航菜单样式有变化。 2. 解决&#xff…

Ubuntu链接服务器

本篇文章介绍&#xff0c;如何在Ubuntu系统下连接远程Ubuntu系统并传输文件。 一. 连接远程Ubuntu服务器。 1. 打开命令行&#xff0c;输入 : sudo apt-get update &#xff0c; 对系统进行更新。 2. 安装 OpenSSH Server&#xff0c;输入 &#xff1a; sudo apt-get install …

开发中的“软”与“硬”:高画质移动游戏开发之道

摘要&#xff1a;游戏的效果不仅与游戏引擎的渲染相关&#xff0c;与硬件优化也有千丝万缕的联系。一款基于芯片优化的移动游戏界面&#xff0c;甚至可以堪比视频游戏的视觉效果。高通半导体事业部资深经理刘晓光从软硬件两个层面分享了移动游戏开发之道。 在今年的Unity亚洲开…

解决 VUE: [Vue warn]: Do not use built-in or reserved HTML elements as component id: xx

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 1. 新增一个组件&#xff0c;运行无问题&#xff0c;但F12报错&#xff1a; vue.esm.js?efeb:591 [Vue warn]: Do not use built-in o…

Linux系统重置和修改root密码

Linux系统经常会出现忘记root密码的情况&#xff0c;写下此随笔&#xff0c;以便记忆和学习。 一、重置root密码的步骤如下&#xff1a; 1.如果系统是开机状态&#xff0c;重启一下。进到下面这个界面按字母“e”键。 2.找到 linux16这一行&#xff0c;将下图红框中的内容修改为…