time limit: 1 second
memory limit: 128 mb
神牛小r在許多方面都有著很強的能力,具體的說,他總共有m種能力,並將這些能力編號為1到m。他的能力是一天一天地提公升的,每天都會有一些能力得到一次提公升,r對每天的能力提公升都用乙個數字表示,稱之為能力提公升數字,比如數字13,轉化為二進位制為1101,並且從右往左看,表示他的編號為1,3,4的能力分別得到了一次提公升。小r把每天表示能力提公升的數字的記了下來,如果在連續的一段時間內,小r的每項能力都提公升了相同的次數,小r就會稱這段時間為乙個均衡時期,比如在連續5天內,小r的每種能力都提公升了4次,那麼這就是乙個長度為5的均衡時期。
於是,問題來了,給出 小r n天的能力提公升數字,請求出均衡時期的最大長度。
第一行有兩個整數n,m,表示有n天,m種能力。接下來有n行,每行有乙個整數,分別表示第1到n天的能力提公升數字。能力提公升數字轉化為二進位制後,從右到左的每一位表示對應的能力是否在當天得到了一次提公升。 n<=100000, m<=30
輸出只有乙個整數,表示長度最大的均衡時期的長度。
對於50%的資料,n <= 1000。
7 3767214
2
4
每天被提公升的能力種類分別為:第一天:1,2,3
第二天:2,3
第三天:1,2,3
第四天:2
第五天:1
第六天:3
第七天:2
第三天到第六天為長度最長的均衡時期
因為 這四天 每種能力分別提公升了 2次
【題解】
設在第i天,所得到的能力值組成的數列為a1,a2,a3..an;
則我們要找之前的乙個數列a1-k,a2-k,a3-k..an-k;(盡量靠前找)
這個數列和第i天的數列的差值,就是所需要的均衡時期。
也即所有的能力都提公升了相同的值。
我們可以這樣做。
在第i天加完之後。把數列中所有的值都減去那個最小值。(每個值減去的數都是一樣的,滿足均衡發展的題意);
然後看看之前有沒有出現過這個數列(我們存的都是最早出現的)。
如果有出現。則就用這兩個數列的天數差作為temp,嘗試更新ans.
這裡的尋找過程,需要用到hash函式。
隨便寫乙個hash函式,然後取模,用鍊錶來處理衝突就可以了。
這裡的hash函式就是每乙個數值*ascill碼值然後對100007取模
【**】
#include struct point;int n, m,totn=1,ans = 0;
int st[40];
point *h[100007]; //這是鍊錶的頭結點和尾節點。
point *t[100007];
int sear_ch(int a, int where) //當前這個數列是在第where天找到的。
if (find)//如果找到了,就返回它第一次出現的位置。
return p->where;
p = p->next;//否則繼續找
} p = new point;//如果沒有找到就創立乙個新的節點
p->next = null;
for (int i = 1; i <= m; i++)//把這個數列存在這個節點中
p->shulie[i] = a[i];
p->where = where;//記錄一下它的天數
t[key]->next = p;//把節點接在尾節點後面。
t[key] = t[key]->next;
return p->where;
}int main()
scanf("%d%d", &n, &m);
for (int i = 1; i <= m; i++) //一開始所有的能力值都為0
st[i] = 0;
sear_ch(st, 0);//把這個初始數列加入到hash表中
for (int i = 1; i <= n; i++)
for (int j = 1; j <= m; j++)//尋找最小值
if (st[j] < min)
min = st[j];
if (min > 0)
for (int j = 1; j <= m; j++)//把數列的每乙個數字減去min
st[j] -= min;
int pre = sear_ch(st, i);//查詢之前出現過的下標最小的這個數列的下標
if (i - pre > ans)//看看這個差能不能更新答案。
ans = i - pre;
} printf("%d", ans);
return 0;
}
u032 均衡發展
time limit 1 second memory limit 128 mb 神牛小r在許多方面都有著很強的能力,具體的說,他總共有m種能力,並將這些能力編號為1到m。他的能力是一天一天地提公升的,每天都會有一些能力得到一次提公升,r對每天的能力提公升都用乙個數字表示,稱之為能力提公升數字,比如數...
032 發布Django服務專案
先裝個yum 再裝python3 yum install python3 然後用python3裝django 由於django2.2以上的資料庫有點問題 所以我們用django2.1 python3 m pip install django 2.1.然後建立專案 django admin start...
用友U8發展歷程
日前,用友軟體在上海隆重發布erp u8企業應用套件v8.70 簡稱u870 產品,首次提出業務場景驅動與應用的新模式。u870基於用友 uap平台,整合了工作流 個性化門戶 角色與場景配置器 助手檢視等客戶化工具,把erp中複雜的幾千個功能點 眾多業務流程以及各種業務資料以熟悉的 企業業務場景方式...