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

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

// 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 閱讀(4049) 評(píng)論(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。然后我想對(duì)每個(gè)長棍分開搜索...
4。后來我又用記錄數(shù)目的方法搜 似乎更慢...
終于發(fā)現(xiàn)真正重要的剪枝!
1.當(dāng)一個(gè)正好可以填滿的時(shí)候 就不用考慮比他小的去填了
2.一大段的第一個(gè)小段如果不成立直接返回到上一大段
這才是重要的剪枝
同時(shí)還有一個(gè) 要預(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
呵呵 其實(shí)AC的程序里面有一大部分都過不了這個(gè)數(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ù)  更多評(píng)論   

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ù)  更多評(píng)論   

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

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

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

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

2008-05-04 23:46 by mango
你測這個(gè)... 你的半天也出不來...
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ù)  更多評(píng)論   

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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ù)  更多評(píng)論   

2008-11-30 11:30 by abc
各位高手幫忙看一下上面的程序有什么錯(cuò)誤,萬分感激!
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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国产精品久久久久| 噜噜噜91成人网| 欧美日本视频在线| 国产精品一区二区三区四区| 国产精品乱子乱xxxx| 狠狠久久亚洲欧美| 韩日视频一区| 亚洲小说欧美另类婷婷| 欧美综合国产精品久久丁香| 久热精品视频| 亚洲综合精品| 欧美精品在线观看| 在线播放亚洲一区| 亚洲欧美中文字幕| 9国产精品视频| 免费看成人av| 欧美精品二区| 亚洲区一区二| 国产精品亚洲一区二区三区在线| 亚洲国产成人精品久久| 欧美好吊妞视频| 亚洲欧美999| 亚洲国产成人久久综合| 亚洲一区二区三区午夜| 欧美粗暴jizz性欧美20| 久久精品色图| 国产日韩精品一区二区浪潮av| 欧美在线关看| 国产精品色一区二区三区| 亚洲伊人一本大道中文字幕| 中文无字幕一区二区三区| 国产精品乱人伦中文| 亚洲永久精品大片| 亚洲午夜女主播在线直播| 国产精品欧美一区喷水| 久久国产黑丝| 欧美精品久久一区二区| 中文在线不卡| 久久久久免费观看| 一区二区三区免费网站| 亚洲欧美另类国产| av不卡免费看| 蜜臀av性久久久久蜜臀aⅴ四虎| 亚洲视频福利| 欧美成人免费在线| 久久久久五月天| 国产精品久久久99| 亚洲精品久久久久久久久| 国产亚洲精久久久久久| 99国产精品久久久久老师| 在线精品视频免费观看| 亚洲精品免费在线| 香蕉乱码成人久久天堂爱免费| 激情婷婷欧美| 欧美亚洲视频在线观看| 亚洲视频一区在线| 免费一级欧美片在线观看| 久久久欧美一区二区| 国产精品久久久久久久久久久久久| 亚洲国产一区二区三区a毛片| 亚洲国产mv| 欧美成人免费全部| 亚洲青涩在线| 亚洲性感激情| 国产精品一区三区| 午夜一级久久| 欧美ed2k| 欧美一区二区免费观在线| 国产日韩在线看片| 久久婷婷人人澡人人喊人人爽| 美女视频一区免费观看| 亚洲精品影院| 欧美日一区二区三区在线观看国产免| 夜夜嗨av一区二区三区| 欧美一区中文字幕| 亚洲国产另类久久精品| 国产精品va在线播放| 欧美在线视频网站| 亚洲精品一品区二品区三品区| 欧美一区二区在线免费观看| 黄色成人av| 国产日韩精品视频一区| 欧美 日韩 国产在线| 亚洲男女自偷自拍图片另类| 欧美国产日韩精品免费观看| 亚洲一区免费在线观看| 在线播放亚洲| 国产欧美在线观看| 欧美午夜精品理论片a级大开眼界| 亚洲欧美日韩国产综合精品二区| 国产欧美精品一区aⅴ影院| 欧美成人官网二区| 久久久一区二区| 欧美国产先锋| 亚洲欧美在线一区二区| 99re66热这里只有精品4| 亚洲激情国产精品| 久久综合色天天久久综合图片| 正在播放日韩| 亚洲视频免费| 午夜影院日韩| 久久爱www| 久久精品国产亚洲一区二区| 午夜精品久久一牛影视| 久久不射2019中文字幕| 久久国产精品电影| 久久这里有精品15一区二区三区| 先锋亚洲精品| 久久综合久久久久88| 欧美不卡视频一区发布| 亚洲高清视频在线| 免费观看日韩av| 国产精品日本一区二区| 欧美精品在线观看| 国内在线观看一区二区三区| 欧美三级午夜理伦三级中文幕| 欧美日本精品| 国产在线欧美日韩| 99国产精品久久久久老师 | 欧美一区二区三区免费看| 欧美在线日韩精品| 欧美美女bbbb| 亚洲第一精品夜夜躁人人躁| 亚洲视频在线视频| 欧美大色视频| 久久精品综合网| 国产精品一区二区黑丝| 美女精品在线| 国产日韩欧美日韩| 亚洲一区影音先锋| 亚洲精品一区久久久久久| 久久久久久久久蜜桃| 国产亚洲欧美一区| 欧美一级在线亚洲天堂| 亚洲午夜精品| 国产精品青草综合久久久久99| 日韩视频免费| 亚洲精品欧洲精品| 国产精品video| 久久精品99国产精品| 午夜精品999| 国产一区视频在线看| 蜜臀久久99精品久久久久久9| av不卡在线| 国产精品一二三视频| 久久嫩草精品久久久久| 久久最新视频| 在线亚洲免费| 亚洲一区二区成人| 一区二区视频免费在线观看 | 一区二区三区国产在线观看| 亚洲精品久久久久久久久久久久久 | 欧美~级网站不卡| 久久精品国产清高在天天线| 亚洲另类视频| 久久蜜桃资源一区二区老牛| 久久亚洲春色中文字幕久久久| 亚洲电影自拍| 亚洲一区日韩在线| 亚洲精品一区二区三区婷婷月| 亚洲午夜av在线| 亚洲国产成人不卡| 亚洲香蕉伊综合在人在线视看| 亚洲视频1区2区| 亚洲精品男同| 久久久久久黄| 久久夜精品va视频免费观看| 欧美国产日韩xxxxx| 久久天堂av综合合色| 欧美性生交xxxxx久久久| 亚洲国产成人久久综合| 极品日韩av| 蜜桃av一区二区| 久久综合网络一区二区| 国产精品丝袜久久久久久app| 久久另类ts人妖一区二区| 蜜臀va亚洲va欧美va天堂 | 欧美一区二区在线看| 91久久精品一区二区别| 久久蜜桃香蕉精品一区二区三区| 亚洲自拍偷拍视频| 国产精品成人一区二区艾草| 亚洲人成在线观看| 中文欧美日韩| 国产日韩久久| 在线观看视频亚洲| 亚洲午夜久久久| 欧美日韩亚洲综合| 亚洲视频在线一区|