青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

oyjpArt ACM/ICPC算法程序設(shè)計空間

// I am new in programming, welcome to my blog
I am oyjpart(alpc12, 四城)
posts - 224, comments - 694, trackbacks - 0, articles - 6

PKU 1011 Sticks

Posted on 2006-11-30 00:34 oyjpart 閱讀(4053) 評論(15)  編輯 收藏 引用 所屬分類: ACM/ICPC或其他比賽
這道題作的我真的是悲喜交加阿。。。做完之后。。。長舒一口氣。。推薦大家去做!!!

Sticks
Time Limit:1000MS? Memory Limit:10000K
Total Submit:18973 Accepted:4421

Description
George took sticks of the same length and cut them randomly until all parts became at most 50 units long. Now he wants to return sticks to the original state, but he forgot how many sticks he had originally and how long they were originally. Please help him and design a program which computes the smallest possible original length of those sticks. All lengths expressed in units are integers greater than zero.

Input
The input contains blocks of 2 lines. The first line contains the number of sticks parts after cutting, there are at most 64 sticks. The second line contains the lengths of those parts separated by the space. The last line of the file contains zero.

Output
The output should contains the smallest possible length of original sticks, one per line.

Sample Input

9
5 2 1 5 2 1 5 2 1
4
1 2 3 4
0

Sample Output

6
5 















1。我從大到小搜索了哇 沒用。。。
2。我想 用預先得到所有可拼湊長度來HASH 發(fā)現(xiàn)太大...
3。然后我想對每個長棍分開搜索...
4。后來我又用記錄數(shù)目的方法搜 似乎更慢...
終于發(fā)現(xiàn)真正重要的剪枝!
1.當一個正好可以填滿的時候 就不用考慮比他小的去填了
2.一大段的第一個小段如果不成立直接返回到上一大段
這才是重要的剪枝
同時還有一個 要預防反復搜索同一關(guān)鍵碼 給出下面的測試數(shù)據(jù)
64
40 40 40 40 40 40 40 40 40 40 40 40 40
40 40 40 40 40 40 40 40 40 40 43 42 42
41 10 4 40 40 40 40 40 40 40 40 40 40
40 40 40 40 40 40 40 40 40 40 40 40 40
40 40 40 40 40 40 40 40 40 40 40 40
0
呵呵 其實AC的程序里面有一大部分都過不了這個數(shù)據(jù)!包括0MSAC的!

呵呵 過了之后 心情好啊~`哈哈
//Solution
//by optimistic
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int nss;
int ss[70];
int used[70];
int totss;
int maxss;
int len;
int cmp(const void * a, const void * b)
{
?return (*(int *)b) - (*(int *)a);
}
int search(int times, int rest, int pos)
{
?int flag = 0;
?if(rest == len) flag = 1; //第一種剪枝
?int i;
?if(times == totss/len) return 1;
?for(i = pos; i<nss; i++)
??if(!used[i])
??{
???if(rest == ss[i])
???{
????used[i] = 1;
????if(search(times+1, len, 0))?return 1;
????used[i] = 0;
??? ?return 0;????????????????????? //第二種剪枝???????????????????????????????????????????????????????????????????
???}
???else if(ss[i]<rest)
???{
????used[i] = 1;
????if(search(times, rest-ss[i], i+1)) return 1;
????used[i] = 0;
????if(flag) return 0;
????while(ss[i] == ss[i+1]) i++;
???}
???else if(flag) return 0;
??}
?return 0;
}
int main()
{
//?freopen("t.in", "r", stdin);
?int i;
?while(scanf("%d", &nss), nss>0)
?{
??memset(ss, 0, sizeof(ss));
??totss = maxss = 0;
??for(i=0; i<nss; i++)
??{
???scanf("%d", &ss[i]);
???totss += ss[i];
???if(ss[i]>maxss) maxss = ss[i];
??}
??qsort(ss, 70, sizeof(ss[0]), cmp);
??for(i=maxss; i<=totss; i++)
??{
???if(i==totss)
???{printf("%d\n", totss); break;}
???if(totss%i==0)
???{?????
????memset(used, 0, sizeof(used));
????len = i;

????if(search(1, len, 0)) {printf("%d\n", i); break;}
???}
??}
?}
?return 0;
}




Feedback

# re: PKU 1011 Sticks   回復  更多評論   

2007-04-13 23:40 by Jun Wang
if(search(1, len, 0)) {printf("%d\n", i); break;}
是不是要改成 if(search(0, len, 0)) {printf("%d\n", i); break;} ??

# re: PKU 1011 Sticks   回復  更多評論   

2007-07-22 19:28 by Typhoooooooooooooooooooooooooooooooooon
感謝你那兩個重要的剪枝哈

# re: PKU 1011 Sticks   回復  更多評論   

2007-10-24 11:00 by delguoqing
你上面這個測試數(shù)據(jù)的ouput是多少?

# re: PKU 1011 Sticks   回復  更多評論   

2008-05-04 23:46 by mango
你測這個... 你的半天也出不來...
64
40 40 30 35 35 26 15 40 40 40 40 40 40 40 40 40 40 40 40 40 40

40 40 43 42 42 41 10 4 40 40 40 40 40 40 40 40 40 40 40 40 40

40 25 39 46 40 10 4 40 40 37 18 17 16 15 40 40 40 40 40 40 40

40

# re: PKU 1011 Sticks   回復  更多評論   

2008-05-05 09:02 by oyjpart
的確啊,很強大的數(shù)據(jù)啊

# re: PKU 1011 Sticks   回復  更多評論   

2008-05-05 18:42 by zoyi
答案是454~~可是我的程序居然是wa~5555555555

# re: PKU 1011 Sticks   回復  更多評論   

2008-05-05 20:10 by oyjpart
哦?你怎么知道答案啊

# re: PKU 1011 Sticks   回復  更多評論   

2008-05-06 19:43 by zoyi
我的程序跑出來的啊~~難道你懷疑我跑的是錯誤的???哈哈@oyjpart

# re: PKU 1011 Sticks   回復  更多評論   

2008-05-07 12:49 by mango
哎......這個數(shù)據(jù)真變態(tài)...煩死了 呵呵

# re: PKU 1011 Sticks   回復  更多評論   

2008-05-07 21:06 by oyjpart
哦。。。你過題了沒

# re: PKU 1011 Sticks   回復  更多評論   

2008-05-22 15:59 by zsong
我跑出454了,很快,不過也是wa

# re: PKU 1011 Sticks   回復  更多評論   

2008-08-12 20:45 by zjh777007
誰能告訴我
“一大段的第一個小段如果不成立直接返回到上一大段”
什么意思?

# re: PKU 1011 Sticks   回復  更多評論   

2008-08-12 20:53 by oyjpart
現(xiàn)在由一個當前情況S.
這個時候比如有一個大棍子,長度為20,現(xiàn)在嘗試在其中放入一個長度為5的小棍子。結(jié)果深搜得到的結(jié)果是不可行,則認為當前情況是無解的。
因為這個5長度的小棍子放不了這個大棍子,絕對放不了任何一根大棍子。

# re: PKU 1011 Sticks   回復  更多評論   

2008-11-30 11:29 by abc
#include<iostream>
#include<string>
#include<fstream>
#include<vector>
#include<ctime>
using namespace std;
fstream fin("e:\\office\\txt\\acmin.txt");
int l[65];
int s,t,min,sum=0,len;
int max2;
int count=0;
int c=0;
static int used[65];
int search(int leni, int s){
if(leni==0) return 100;
t=s;
int count=0;
while(l[t]>leni||used[t]){
t--;
if(t==0){
//break;
return 0;
}
}
used[t]=1;
count++;
if(l[t]<=leni){
int se=search(leni-l[t],s-1);

if(se>=100){
count+=(se-100);
//if((leni-l[t])!=0){
//if(count<s){
c=1;
for(int i=1;i<=s;i++)c*=used[i];
if(!c){
int sea=search(len,s-1);
if(sea>=100){
count+=(sea-100);
return count+100;
}/*else{
return 0;
}*/
//}
}
}
/*else{
return 0;
}*/
}
count+=100;
return count;
}
int main(){
cin>>s;
while(s){

max2=0;
sum=0;
count=0;
for(int i=0;i<65;i++)used[i]=0;
for(int i=1;i<=s;i++){
cin>>l[i];
if(l[i]>max2){
max2=l[i];
}
sum+=l[i];
}
for(int i=0;i<=s;i++){
for(int j=0;j<s-i;j++){
if(l[j]>l[j+1]){
int temp=l[j];
l[j]=l[j+1];
l[j+1]=temp;
}
}
}
cout<<"sum"<<sum<<endl;
for(int i=max2;i<=sum;i++){
len=i;

for(int j=0;j<65;j++)used[j]=0;
if(sum%i!=0)continue;

int k=search(i,s);

if(k>100){

if((k-100)==s){cout<<i<<endl;break;}
}else{
continue;
}
}
cin>>s;
}

}













# re: PKU 1011 Sticks   回復  更多評論   

2008-11-30 11:30 by abc
各位高手幫忙看一下上面的程序有什么錯誤,萬分感激!
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            男同欧美伦乱| 亚洲一区二区三区欧美| 香蕉久久a毛片| 最新精品在线| 久久偷窥视频| 午夜视频一区二区| 国产精品视屏| 性做久久久久久久免费看| 免费成人av在线| 亚洲黄色av| 亚洲高清免费视频| 欧美v日韩v国产v| 国产日本欧美视频| 欧美一区在线看| 久久精品久久99精品久久| 黑人巨大精品欧美一区二区| 久久亚洲精品一区二区| 国产精品一页| 欧美国产先锋| 国产精品五区| 亚洲一区二区三区在线看| 国产精品专区h在线观看| 在线性视频日韩欧美| 国产欧美一区二区三区久久| 亚洲视频大全| 香港成人在线视频| 国产精品五月天| 欧美一区二区三区播放老司机| 韩国一区二区在线观看| 久久国产乱子精品免费女| 亚洲人成人99网站| 午夜在线a亚洲v天堂网2018| 亚洲欧美日韩国产中文| 久久精品99久久香蕉国产色戒| 久久人人爽爽爽人久久久| 欧美精品一区二区三区久久久竹菊 | 欧美国产精品人人做人人爱| 欧美在线视屏| 欧美精品在线看| 一道本一区二区| 在线日韩av片| 亚洲视频在线观看三级| 91久久精品国产91久久性色tv| 欧美成人免费全部| 一区二区三区日韩| 久久国产精品99精品国产| 一区二区三区亚洲| 先锋a资源在线看亚洲| 久久婷婷国产综合尤物精品| 1024国产精品| 欧美午夜视频| 亚洲国产经典视频| 亚洲一区二区三区免费观看| 国产欧美精品久久| 免费成人性网站| 一区二区三区国产在线| 久久精品国产免费看久久精品| 欧美午夜不卡| 久久久精品性| 99国产精品久久久久老师| 亚洲激情av| 国产精品一区二区在线观看不卡| 久久久久看片| 免费观看久久久4p| 国产综合视频在线观看| 香蕉国产精品偷在线观看不卡| 欧美.www| 欧美在线高清视频| 99re热这里只有精品免费视频| 久久综合激情| 欧美激情亚洲综合一区| 香蕉久久夜色精品国产使用方法| 亚洲人成毛片在线播放| 国产亚洲欧洲997久久综合| 亚洲影院免费| 亚洲美女黄网| 亚洲午夜一区| 91久久精品网| 狠狠色狠色综合曰曰| 欧美午夜三级| 欧美日韩国产精品专区| 日韩午夜av| 亚洲欧美日韩一区二区| 亚洲精品视频中文字幕| 欧美激情第一页xxx| 久久成人这里只有精品| 亚洲午夜高清视频| 亚洲精品免费在线播放| 亚洲午夜久久久久久尤物 | 久久精品在线播放| 精品动漫3d一区二区三区免费版 | 欧美三级第一页| 午夜精品久久久久久| 久久这里有精品视频| 欧美一区免费| 亚洲欧美日韩精品久久| 中日韩高清电影网| 国产精品日本一区二区 | 欧美风情在线观看| 久久天天躁狠狠躁夜夜av| 亚洲片区在线| 亚洲二区免费| 亚洲国产精品一区制服丝袜 | 久久男人资源视频| 久久精品动漫| 久久精品在线观看| 久久久精彩视频| 久久免费视频一区| 免费在线观看日韩欧美| 女人香蕉久久**毛片精品| 欧美电影在线| 午夜精品久久久久久久99水蜜桃 | 欧美日韩国产丝袜另类| 欧美经典一区二区三区| 亚洲欧美日韩电影| 午夜免费在线观看精品视频| 亚洲天堂久久| 小黄鸭视频精品导航| 欧美一区二区精美| 久久精品夜色噜噜亚洲a∨ | 欧美精品久久久久久久免费观看| 欧美不卡在线视频| 欧美精品一区二区三区蜜臀| 欧美日韩国产经典色站一区二区三区| 欧美日韩国产成人在线观看| 欧美日韩在线电影| 蜜桃伊人久久| 欧美精品国产一区二区| 国产精品青草综合久久久久99| 国产亚洲在线观看| 亚洲高清一区二| 国产亚洲欧洲997久久综合| 伊人成年综合电影网| 国产精品视频久久久| 影音先锋中文字幕一区| 亚洲三级网站| 先锋影音国产精品| 欧美国产日韩一区二区三区| 亚洲精品影视在线观看| 午夜精品成人在线| 美日韩在线观看| 国产精品久久国产三级国电话系列 | 欧美日韩性生活视频| 国产视频在线观看一区二区| 欧美日韩在线不卡| 狠狠色丁香婷婷综合影院| aⅴ色国产欧美| 亚洲肉体裸体xxxx137| 午夜精品亚洲一区二区三区嫩草| 久久久精品2019中文字幕神马| 亚洲国产精品毛片| 欧美一区二区大片| 欧美精品aa| 国内成人精品视频| 亚洲网站在线观看| 欧美成人精品在线视频| 国产精品99久久久久久白浆小说| 久久性天堂网| 国产欧美日韩不卡| 亚洲视频精选在线| 欧美成年人视频| 欧美一区二区视频在线| 欧美三级中文字幕在线观看| 在线精品高清中文字幕| 欧美在线视频a| 一区二区欧美视频| 欧美精品aa| 亚洲国产午夜| 蜜臀久久99精品久久久久久9| 中文av一区二区| 欧美另类99xxxxx| 亚洲高清视频一区二区| 久久久久九九九九| 一区二区三区欧美| 欧美日韩国产一区精品一区| 亚洲国产va精品久久久不卡综合| 欧美在线资源| 亚洲欧美日韩一区| 国产精品美女在线| 狠狠色噜噜狠狠狠狠色吗综合| 亚洲深夜影院| 亚洲精品激情| 欧美黄色免费| 亚洲精品网址在线观看| 卡通动漫国产精品| 亚洲精品一区久久久久久| 麻豆精品在线视频| 亚洲国产精品一区二区第四页av| 久久久夜精品| 久久久久国产精品人| 狠狠色狠色综合曰曰| 久久婷婷影院| 美国十次了思思久久精品导航| 精品成人在线视频| 麻豆精品精华液| 美女91精品| 99国产精品国产精品毛片| 亚洲美女中文字幕| 国产精品视频在线观看| 欧美在线高清视频|