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.pswp.cn/news/447913.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/447913.shtml
英文地址,請注明出處:http://en.pswp.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;將下圖紅框中的內容修改為…