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

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 閱讀(4064) 評論(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.當(dāng)一個正好可以填滿的時候 就不用考慮比他小的去填了
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)在由一個當(dāng)前情況S.
這個時候比如有一個大棍子,長度為20,現(xiàn)在嘗試在其中放入一個長度為5的小棍子。結(jié)果深搜得到的結(jié)果是不可行,則認(rèn)為當(dāng)前情況是無解的。
因為這個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一区二区三区| 国产精品护士白丝一区av| 亚洲欧美日韩在线| 欧美精品激情在线| 欧美不卡视频| 国产一区亚洲一区| 一区二区欧美亚洲| 亚洲人午夜精品免费| 久久精品91| 久久电影一区| 国产精品区一区二区三区| 亚洲高清久久久| 伊人精品成人久久综合软件| 亚洲综合丁香| 一区二区三区四区国产精品| 免费观看欧美在线视频的网站| 欧美在线观看网址综合| 欧美午夜视频网站| 亚洲黄网站在线观看| 亚洲电影第1页| 久久久久久69| 久久综合网hezyo| 国产视频观看一区| 亚洲欧美日韩一区| 99视频有精品| 久久久爽爽爽美女图片| 久久精品观看| 国产欧美一区二区精品性| 亚洲视频在线视频| 亚洲一级二级| 国产精品国产成人国产三级| 亚洲——在线| 午夜精品久久久久久久| 国产精品萝li| 亚洲一区一卡| 欧美制服第一页| 国产精品久久久一本精品| 国产精品99久久久久久白浆小说| 亚洲一区二区三区免费视频 | 亚洲欧美卡通另类91av| 亚洲欧美日韩在线播放| 国产精品日韩在线播放| 欧美影院一区| 欧美黑人一区二区三区| 亚洲毛片在线看| 欧美日韩在线影院| 亚洲天堂成人在线视频| 欧美一区二区三区免费在线看| 国产欧美一区二区精品仙草咪 | 亚洲精品免费看| 在线一区二区三区做爰视频网站| 国产精品久久国产愉拍| 亚洲欧美日本视频在线观看| 久久阴道视频| 亚洲精品视频啊美女在线直播| 欧美视频在线一区二区三区| 中日韩视频在线观看| 久久久精品欧美丰满| 亚洲人久久久| 欧美日韩国产色站一区二区三区| 亚洲夜晚福利在线观看| 久久久精品动漫| 日韩视频在线观看免费| 国产精品久久国产三级国电话系列| 午夜日韩激情| 亚洲欧洲在线观看| 欧美在线精品一区| 亚洲乱码国产乱码精品精98午夜| 欧美新色视频| 六十路精品视频| 中文精品一区二区三区| 麻豆av福利av久久av| 亚洲午夜女主播在线直播| 韩国一区二区三区在线观看| 欧美另类一区二区三区| 欧美伊人精品成人久久综合97| 亚洲精品欧美激情| 欧美亚洲网站| aa成人免费视频| 国产日韩欧美日韩大片| 麻豆精品一区二区av白丝在线| 在线一区二区三区四区五区| 久久综合影视| 亚洲自拍电影| 在线观看欧美一区| 国产精品大片wwwwww| 久久久精品午夜少妇| 亚洲欧洲在线视频| 久久婷婷国产综合尤物精品| 中国日韩欧美久久久久久久久| 国内久久视频| 欧美网站在线观看| 蜜臀av国产精品久久久久| 亚洲网在线观看| 欧美激情黄色片| 亚洲一区二区欧美| 最近中文字幕日韩精品| 国产精品久久久久久影视| 免播放器亚洲一区| 性做久久久久久| 亚洲久久一区二区| 久久久久久穴| 一区二区三区产品免费精品久久75| 亚洲激情综合| 亚洲大胆av| 在线看成人片| 在线视频观看日韩| 激情欧美一区| 1000部国产精品成人观看| 一区免费观看视频| 精品福利电影| 国产一区免费视频| 国产亚洲精品久久久久动| 国产综合18久久久久久| 国产亚洲精品久久久久久| 国产亚洲精品久久久| 国产拍揄自揄精品视频麻豆| 国产日韩视频| 国产一区二区中文字幕免费看| 一区二区三区在线观看欧美| 在线看国产一区| 韩国成人精品a∨在线观看| 国产欧美日韩综合一区在线观看| 国产精品第一页第二页第三页| 欧美美女bb生活片| 欧美日韩播放| 欧美日本国产一区| 欧美精品在线免费| 欧美日韩人人澡狠狠躁视频| 久久久久91| 老鸭窝毛片一区二区三区| 欧美不卡一卡二卡免费版| 久久久午夜精品| 欧美国内亚洲| 国产精品久久久久久久久久妞妞| 国产精品性做久久久久久| 国内成+人亚洲| 亚洲国产你懂的| 亚洲最快最全在线视频| 亚洲精品国产欧美| 欧美中日韩免费视频| 欧美大胆a视频| 日韩午夜在线| 欧美亚洲免费在线| 蜜臀99久久精品久久久久久软件| 欧美日韩1080p| 国产日韩欧美精品在线| 亚洲激情成人网| 亚洲欧美日韩人成在线播放| 美女视频黄a大片欧美| 日韩视频免费观看| 先锋影音国产精品| 欧美国产一区二区| 国产欧美一区二区三区久久人妖 | 91久久精品国产91久久性色tv | 99视频在线精品国自产拍免费观看 | 国语自产在线不卡| 最新中文字幕一区二区三区| 亚洲欧美日韩在线| 欧美国产精品专区| 亚洲免费视频观看| 美日韩在线观看| 国产色产综合产在线视频| 亚洲久久一区| 久久一区二区三区av| 亚洲美女在线国产| 久久久亚洲人| 国产精品一区二区三区成人| 日韩视频免费观看高清在线视频 | 亚洲免费不卡| 久久久国产精品一区| 欧美天堂在线观看| 亚洲三级免费| 欧美中文在线观看国产| 亚洲精品永久免费| 蜜桃精品一区二区三区| 国产中文一区二区三区| 亚洲一区二区三区四区五区午夜| 亚洲成在人线av| 久久青青草原一区二区| 国产精品乱码妇女bbbb| 亚洲小视频在线观看| 亚洲精品中文字幕在线| 欧美大片第1页| 国产日韩在线不卡|