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

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 閱讀(4062) 評論(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。我想 用預(yù)先得到所有可拼湊長度來HASH 發(fā)現(xiàn)太大...
3。然后我想對每個長棍分開搜索...
4。后來我又用記錄數(shù)目的方法搜 似乎更慢...
終于發(fā)現(xiàn)真正重要的剪枝!
1.當一個正好可以填滿的時候 就不用考慮比他小的去填了
2.一大段的第一個小段如果不成立直接返回到上一大段
這才是重要的剪枝
同時還有一個 要預(yù)防反復(fù)搜索同一關(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   回復(fù)  更多評論   

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   回復(fù)  更多評論   

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

# re: PKU 1011 Sticks   回復(fù)  更多評論   

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

# re: PKU 1011 Sticks   回復(fù)  更多評論   

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   回復(fù)  更多評論   

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

# re: PKU 1011 Sticks   回復(fù)  更多評論   

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

# re: PKU 1011 Sticks   回復(fù)  更多評論   

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

# re: PKU 1011 Sticks   回復(fù)  更多評論   

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

# re: PKU 1011 Sticks   回復(fù)  更多評論   

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

# re: PKU 1011 Sticks   回復(fù)  更多評論   

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

# re: PKU 1011 Sticks   回復(fù)  更多評論   

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

# re: PKU 1011 Sticks   回復(fù)  更多評論   

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

# re: PKU 1011 Sticks   回復(fù)  更多評論   

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

# re: PKU 1011 Sticks   回復(fù)  更多評論   

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   回復(fù)  更多評論   

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>
            先锋影音久久久| 国产婷婷成人久久av免费高清 | 麻豆精品传媒视频| 欧美日韩国产综合视频在线| 美女精品自拍一二三四| 国产精品久久久一区二区三区| 欧美高清在线一区二区| 国产午夜精品在线观看| 亚洲欧美日韩一区二区在线| 一区二区三区四区五区精品视频| 久久不见久久见免费视频1| 午夜一区不卡| 国产精品户外野外| 亚洲精选91| 在线视频免费在线观看一区二区| 免费成人黄色片| 欧美黄污视频| 亚洲精品在线电影| 欧美va天堂在线| 欧美福利视频在线观看| 亚洲国产精选| 欧美激情视频一区二区三区免费| 欧美h视频在线| 亚洲大黄网站| 免费在线成人| 亚洲欧洲一区| 日韩亚洲欧美成人| 欧美人与禽猛交乱配| 亚洲区第一页| 亚洲天堂av在线免费观看| 欧美视频精品在线观看| 国产精品99久久久久久宅男| 亚洲欧美一区二区三区极速播放| 国产精品福利久久久| 亚洲主播在线| 久久一二三国产| 亚洲国内高清视频| 欧美另类专区| 亚洲一区制服诱惑| 久久免费黄色| 亚洲精品国产品国语在线app| 欧美激情综合五月色丁香| 在线视频欧美日韩精品| 欧美一区二区三区婷婷月色| 国内久久婷婷综合| 欧美成年人视频网站| 一本色道精品久久一区二区三区| 久久激情综合网| 亚洲国产精品专区久久| 欧美人与禽猛交乱配视频| 亚洲男女自偷自拍| 欧美刺激性大交免费视频| 日韩亚洲一区二区| 国产日韩欧美a| 欧美xx视频| 亚洲午夜激情在线| 欧美大片免费久久精品三p| 一区二区三区视频在线观看| 国产日韩综合| 欧美日韩99| 久久久精品国产免大香伊| 99re国产精品| 免费人成精品欧美精品| 亚洲一区二区三区久久| 一色屋精品亚洲香蕉网站| 欧美日韩成人一区| 久久亚洲综合网| 亚洲欧美高清| 亚洲欧洲另类| 蜜臀av在线播放一区二区三区| 亚洲午夜精品久久久久久浪潮| 一区二区三区自拍| 国产精品网站在线播放| 欧美成人午夜激情在线| 欧美伊人久久| 亚洲一区二区三区视频| 亚洲高清精品中出| 免费观看成人鲁鲁鲁鲁鲁视频| 亚洲免费视频中文字幕| av72成人在线| 亚洲国产日韩综合一区| 国外视频精品毛片| 国产精品日本一区二区 | 国产欧美日本一区二区三区| 欧美成人一区在线| 久久久久久久久伊人| 亚洲欧美精品伊人久久| 亚洲精品一区二区三区在线观看| 久久婷婷色综合| 久久国产夜色精品鲁鲁99| 亚洲视频中文| 一级日韩一区在线观看| 亚洲国产欧美精品| 在线观看欧美精品| 尤物九九久久国产精品的特点 | 亚洲精品永久免费精品| 一区二区在线观看av| 国产一区二区| 国产视频久久久久| 国产视频亚洲| 国内外成人免费激情在线视频网站| 国产精品久线观看视频| 国产精品欧美经典| 国产女人18毛片水18精品| 国产精品日韩欧美综合| 国产精品国色综合久久| 国产精品久久久久免费a∨大胸 | 亚洲电影视频在线| 在线欧美亚洲| 亚洲精品乱码久久久久| 日韩午夜黄色| 亚洲性图久久| 欧美一区二区三区四区夜夜大片| 亚洲欧美在线网| 久久久久久久久蜜桃| 久久免费一区| 欧美国产一区视频在线观看| 欧美激情免费在线| 日韩视频精品| 亚洲一区二区三区精品在线观看| 亚洲欧美日韩精品久久| 欧美影院在线| 欧美成年网站| 欧美系列电影免费观看| 国产精品综合网站| 在线观看视频免费一区二区三区| 亚洲国产日韩欧美在线99| 99视频有精品| 欧美一区二区三区视频免费播放| 久久久99国产精品免费| 欧美国产第二页| 一区二区三区欧美日韩| 欧美一区二区日韩一区二区| 久久夜色精品国产| 欧美三级视频| 国产一区二区三区在线免费观看| 91久久国产综合久久91精品网站| 亚洲手机成人高清视频| 久久精品人人做人人爽| 亚洲高清视频在线| 亚洲天堂成人在线视频| 久久精品在线免费观看| 欧美精品在线观看| 国产在线拍揄自揄视频不卡99 | 9久草视频在线视频精品| 香蕉久久国产| 欧美国产专区| 亚洲自拍偷拍网址| 欧美激情国产日韩精品一区18| 国产女主播一区二区| 亚洲免费电影在线观看| 久久久久久夜| 一区二区三区四区国产精品| 久久久久久久网站| 国产精品午夜电影| 99视频热这里只有精品免费| 久久久久久69| 在线一区二区视频| 欧美激情aaaa| 影视先锋久久| 欧美在线三区| 一本色道久久综合亚洲精品不 | 亚洲电影免费在线| 欧美中文字幕不卡| 一区电影在线观看| 欧美日本国产一区| 亚洲国产精品日韩| 久久人体大胆视频| 亚洲欧美中文在线视频| 欧美日韩一级大片网址| 亚洲伦理在线| 亚洲国产成人不卡| 蜜臀a∨国产成人精品| 国模私拍视频一区| 欧美一区国产在线| 亚洲一区二区三区涩| 欧美三级黄美女| 一本色道久久综合精品竹菊 | 久久综合久久久久88| 亚洲午夜电影| 欧美三级免费| 亚洲影院免费观看| 亚洲日本一区二区三区| 欧美电影免费观看| 亚洲区中文字幕| 亚洲国产一成人久久精品| 亚洲字幕一区二区| 一本色道久久| 国产精品国产精品| 亚洲欧美日本精品| 亚洲视频网在线直播| 国产精品v亚洲精品v日韩精品| 亚洲视频第一页| 亚洲视频观看| 国产精品入口福利| 欧美制服丝袜| 久久国产主播精品| 在线观看日韩| 亚洲国产日韩欧美在线动漫| 欧美高清视频|