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

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 閱讀(4055) 評論(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>
            欧美国产亚洲精品久久久8v| 欧美激情视频一区二区三区不卡| 久久躁日日躁aaaaxxxx| 国产精品人人做人人爽| 亚洲免费在线视频| 亚洲激情av| 欧美日韩国产在线播放| 中日韩美女免费视频网址在线观看 | 好吊视频一区二区三区四区| 欧美一二区视频| 欧美在线免费视屏| 亚洲青色在线| 一区二区三区导航| 国产亚洲精品资源在线26u| 久久久久久夜| 久久亚洲春色中文字幕| 夜夜狂射影院欧美极品| 亚洲一二三区在线观看| 国内自拍一区| 91久久国产综合久久| 国产精品成人一区二区三区夜夜夜| 欧美亚韩一区| 久久久国产视频91| 久久久久99| 夜夜嗨av一区二区三区中文字幕 | 久久国产精品久久久| 亚洲影院在线观看| 亚洲成在线观看| 日韩视频中午一区| 国产香蕉久久精品综合网| 欧美成人精品一区| 国产精品国产馆在线真实露脸 | 欧美黄色aa电影| 亚洲欧美韩国| 另类天堂av| 久久er99精品| 欧美.日韩.国产.一区.二区| 欧美一区视频| 欧美日韩在线播放三区四区| 久久精品一区| 国产精品av久久久久久麻豆网| 亚洲精品一品区二品区三品区| 欧美中文字幕精品| 久久久久免费| 久久国产精品毛片| 欧美色另类天堂2015| 欧美黄色网络| 黑人巨大精品欧美一区二区小视频| 香蕉成人伊视频在线观看| 玖玖精品视频| 久久综合给合久久狠狠色| 欧美日韩精品一二三区| 欧美成人自拍视频| 国产午夜精品全部视频播放| 一本久久综合| 一区二区欧美日韩| 美女精品在线| 欧美暴力喷水在线| 黄色精品免费| 久久成人精品无人区| 欧美呦呦网站| 国产精品免费网站在线观看| 一本大道久久a久久精二百| 亚洲麻豆视频| 欧美阿v一级看视频| 美日韩精品视频免费看| 国产综合第一页| 久久国产精品黑丝| 久久在线视频| 精品动漫av| 久久久女女女女999久久| 久久亚洲春色中文字幕| 好看的av在线不卡观看| 久久国产夜色精品鲁鲁99| 久久综合久久综合久久综合| 激情偷拍久久| 麻豆国产精品va在线观看不卡| 99在线精品视频在线观看| 欧美激情网友自拍| 亚洲精品美女| 亚洲一区在线看| 国产日本欧美一区二区| 欧美主播一区二区三区美女 久久精品人 | 久久精品天堂| 久久人人爽人人| 亚洲国产成人精品久久| 蜜臀91精品一区二区三区| 亚洲激情综合| 亚洲最新中文字幕| 国产精品久久久久77777| 亚洲一区一卡| 美女视频一区免费观看| 亚洲毛片在线免费观看| 国产精品高潮呻吟| 久久精品一区二区三区中文字幕| 这里只有视频精品| 国产精品激情| 欧美中文字幕在线观看| 欧美黑人一区二区三区| 亚洲视频一二区| 国产日韩精品视频一区| 女人色偷偷aa久久天堂| 夜夜嗨网站十八久久| 久久激情婷婷| 亚洲精品日韩一| 国产精品视频不卡| 久久性天堂网| 亚洲伊人伊色伊影伊综合网| 欧美成人精品一区| 亚洲欧美日韩在线播放| 亚洲黄色一区| 国产一区二区三区久久 | 亚洲欧美日韩人成在线播放| 久久久91精品国产一区二区精品| 欧美日韩裸体免费视频| 欧美在线免费一级片| 亚洲美女福利视频网站| 老司机午夜免费精品视频| 在线视频亚洲一区| 亚洲国产高清自拍| 国产欧美91| 欧美激情亚洲国产| 欧美在线日韩在线| 中文精品99久久国产香蕉| 欧美成人午夜剧场免费观看| 欧美一区1区三区3区公司| 9久re热视频在线精品| 激情综合色综合久久| 国产欧美韩国高清| 国产精品yjizz| 欧美日韩99| 欧美大学生性色视频| 久久久久在线观看| 欧美专区日韩视频| 午夜精品久久久久久久久久久久久 | 国产精品国产成人国产三级| 欧美韩国日本综合| 久久嫩草精品久久久精品| 一区二区三区四区五区视频| 亚洲国产精品电影在线观看| 久久综合九色欧美综合狠狠| 翔田千里一区二区| 香蕉免费一区二区三区在线观看| 国产一区再线| 国产精品素人视频| 国产精品高清网站| 国产精品v欧美精品v日本精品动漫| 亚洲影院在线| 亚洲永久在线观看| 亚洲欧美三级在线| 翔田千里一区二区| 亚洲一区在线观看视频| 亚洲综合999| 性欧美xxxx大乳国产app| 欧美一区二粉嫩精品国产一线天| 欧美国产三级| 亚洲激情视频在线| 日韩一级精品视频在线观看| 日韩网站免费观看| 中文一区字幕| 香蕉精品999视频一区二区| 欧美一区二区三区日韩| 久久久精品免费视频| 久久野战av| 欧美美女视频| 国产精品一区二区三区乱码| 国产一区二区三区精品欧美日韩一区二区三区 | 欧美精品国产精品| 欧美国产视频在线| 国产精品高潮呻吟视频| 国产欧美一级| 亚洲福利视频在线| 一区二区欧美日韩| 欧美一级网站| 免费在线观看日韩欧美| 亚洲国产一区二区三区高清| 一区二区精品在线观看| 亚洲欧美在线一区| 美女视频黄a大片欧美| 欧美日韩视频不卡| 狠狠色狠狠色综合日日小说| 亚洲精品美女在线观看| 欧美亚洲一区| 亚洲黄一区二区三区| 亚洲欧美日韩精品久久亚洲区| 亚洲国产毛片完整版| 亚洲网在线观看| 老鸭窝亚洲一区二区三区| 国产精品极品美女粉嫩高清在线 | 99视频精品免费观看| 欧美一区二区成人| 欧美日韩a区| 国产日韩亚洲欧美精品| 亚洲精品一区二| 久久久久久久高潮| 9l国产精品久久久久麻豆| 久久一区二区三区国产精品| 国产精品美女黄网| 日韩视频专区| 欧美777四色影视在线|