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

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 閱讀(4029) 評(píng)論(15)  編輯 收藏 引用 所屬分類: ACM/ICPC或其他比賽
這道題作的我真的是悲喜交加阿。。。做完之后。。。長(zhǎng)舒一口氣。。推薦大家去做!!!

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ù)先得到所有可拼湊長(zhǎng)度來(lái)HASH 發(fā)現(xiàn)太大...
3。然后我想對(duì)每個(gè)長(zhǎng)棍分開搜索...
4。后來(lái)我又用記錄數(shù)目的方法搜 似乎更慢...
終于發(fā)現(xiàn)真正重要的剪枝!
1.當(dāng)一個(gè)正好可以填滿的時(shí)候 就不用考慮比他小的去填了
2.一大段的第一個(gè)小段如果不成立直接返回到上一大段
這才是重要的剪枝
同時(shí)還有一個(gè) 要預(yù)防反復(fù)搜索同一關(guān)鍵碼 給出下面的測(cè)試數(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的程序里面有一大部分都過(guò)不了這個(gè)數(shù)據(jù)!包括0MSAC的!

呵呵 過(guò)了之后 心情好啊~`哈哈
//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è)測(cè)試數(shù)據(jù)的ouput是多少?

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

2008-05-04 23:46 by mango
你測(cè)這個(gè)... 你的半天也出不來(lái)...
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
我的程序跑出來(lái)的啊~~難道你懷疑我跑的是錯(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
哦。。。你過(guò)題了沒

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

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

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

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

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

2008-08-12 20:53 by oyjpart
現(xiàn)在由一個(gè)當(dāng)前情況S.
這個(gè)時(shí)候比如有一個(gè)大棍子,長(zhǎng)度為20,現(xiàn)在嘗試在其中放入一個(gè)長(zhǎng)度為5的小棍子。結(jié)果深搜得到的結(jié)果是不可行,則認(rèn)為當(dāng)前情況是無(wú)解的。
因?yàn)檫@個(gè)5長(zhǎng)度的小棍子放不了這個(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ò)誤,萬(wàn)分感激!
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            欧美成人在线网站| 亚洲国产精品第一区二区三区| 一本色道久久99精品综合| 欧美激情视频网站| 中文一区在线| 噜噜噜躁狠狠躁狠狠精品视频| 亚洲国产第一| 亚洲一区二区三区乱码aⅴ| 国产一区二区久久| 最新日韩中文字幕| 国产一区二区三区最好精华液| 欧美成人a∨高清免费观看| 国产精品久久久久91| 老司机凹凸av亚洲导航| 国产精品福利在线观看| 久久久久久久久久久久久女国产乱 | 久久久人人人| 国产自产2019最新不卡| 久久青青草原一区二区| 亚洲二区精品| 亚洲一区二区三区午夜| 国产免费观看久久黄| 久久美女性网| 一级成人国产| 久久久精品国产一区二区三区| 欧美性猛交视频| 午夜久久资源| 免费短视频成人日韩| 狠狠综合久久av一区二区小说 | 亚洲精品无人区| 亚洲激情影院| 欧美日韩国产三区| 亚洲卡通欧美制服中文| 午夜久久久久久| 亚洲国产日本| 国产精品久久久久毛片软件 | 亚洲激情社区| 亚洲一区二区三区涩| 国产模特精品视频久久久久| 午夜伦欧美伦电影理论片| 久久人人超碰| 亚洲欧洲av一区二区| 国产一区二区三区在线观看免费 | 国产精品国产三级国产aⅴ9色| 亚洲一级黄色av| 免费成人在线观看视频| 一本大道久久a久久精二百| 欧美视频在线一区| 久久精品视频va| 亚洲少妇一区| 亚洲精品久久久久久一区二区| 亚洲欧美日韩在线| 亚洲精品美女久久久久| 国产一区二区你懂的| 国产精品久久久久影院色老大| 六月天综合网| 久久深夜福利免费观看| 亚洲欧美区自拍先锋| 99re成人精品视频| 亚洲视频在线观看免费| 亚洲精品久久视频| 亚洲国产精品专区久久| 欧美激情亚洲激情| 乱人伦精品视频在线观看| 久久国产精品亚洲va麻豆| 亚洲欧美日韩网| 在线一区二区三区四区| 亚洲欧美精品中文字幕在线| 一本色道久久综合精品竹菊| 久久久精品999| 亚洲一区二区三区色| 欧美精品成人一区二区在线观看 | 久久综合久久久| 国产精品夜夜夜| 国产亚洲精品bt天堂精选| 亚洲第一网站| 欧美一区二区视频免费观看| 久久亚洲国产精品一区二区| 亚洲欧美文学| 欧美日韩在线观看视频| 狠狠爱成人网| 欧美影院在线| 美女视频黄 久久| 亚洲自拍高清| 欧美日韩综合在线| 亚洲日本成人网| 久久夜色精品亚洲噜噜国产mv| 亚洲国产精彩中文乱码av在线播放| 亚洲区国产区| 国产精品区免费视频| 亚洲黄色免费网站| 在线视频日本亚洲性| 欧美视频在线一区| 蜜臀a∨国产成人精品| 先锋影音久久| 亚洲美女精品一区| 亚洲国产第一| 欧美性色综合| 另类春色校园亚洲| 欧美日韩午夜精品| 欧美在线黄色| 欧美精品尤物在线| 久久精品视频播放| 欧美体内谢she精2性欧美| 午夜精品视频在线观看| 欧美成人精品不卡视频在线观看| 艳妇臀荡乳欲伦亚洲一区| 亚洲女同精品视频| 欧美在线视屏| 久久久91精品| 国产精品久久久久久久久久尿| 久久久久久久久伊人| 欧美日韩国产免费| 日韩一区二区免费高清| 午夜精品久久久久久久99黑人| 欧美v国产在线一区二区三区| 翔田千里一区二区| 国产模特精品视频久久久久| 夜夜嗨av一区二区三区四区| 亚洲福利视频三区| 久久久久久电影| 一区二区三区视频在线看 | 亚洲天堂av在线免费| 久久久精品性| 欧美在线免费看| 亚洲福利视频免费观看| 久久久久欧美| 久久久精品动漫| 亚洲第一在线| 夜夜嗨av一区二区三区网站四季av | 欧美日韩精品免费观看| 伊人婷婷欧美激情| 国产精品99久久久久久白浆小说| 亚洲第一福利社区| 久久全国免费视频| 欧美一级电影久久| 亚洲国产三级| 欧美高清在线一区| 亚洲国产91| 亚洲精品四区| 国产一区二区观看| 欧美国产三区| 亚洲色无码播放| 91久久夜色精品国产网站| 欧美久久综合| 亚洲精品三级| 亚洲乱码精品一二三四区日韩在线| 亚洲东热激情| 欧美日韩18| 欧美午夜视频一区二区| 欧美人牲a欧美精品| 欧美日韩一区精品| 欧美视频日韩视频| 国产嫩草一区二区三区在线观看| 国产欧美日韩精品一区| 黄色小说综合网站| 亚洲国产另类 国产精品国产免费| 亚洲区在线播放| 99视频在线观看一区三区| 亚洲午夜性刺激影院| 欧美在线网站| 欧美成人精品高清在线播放| 亚洲国产另类久久久精品极度| 亚洲精品少妇网址| 午夜激情久久久| 麻豆免费精品视频| 欧美午夜电影在线| 激情成人av| 夜夜精品视频| 久久久久久久综合狠狠综合| 你懂的视频欧美| 一区二区三区不卡视频在线观看| 亚洲欧美国产精品va在线观看| 久久久久欧美| 欧美性大战久久久久久久| 一区在线视频| 亚洲午夜一区二区| 免费在线观看精品| 一区二区三区精品久久久| 欧美在线一二三四区| 欧美精品免费观看二区| 国产午夜精品美女视频明星a级| 亚洲激情成人| 久久国产精品99久久久久久老狼 | 在线播放中文字幕一区| 亚洲无亚洲人成网站77777| 久久亚洲综合| 亚洲一区久久久| 欧美激情精品久久久久久久变态| 国产伦精品一区二区三区高清版| 亚洲人屁股眼子交8| 久久精品国产综合精品| 一本色道久久综合狠狠躁的推荐| 久久久精品网| 国产精品一区二区三区久久| 亚洲激情不卡| 久久亚洲一区二区| 欧美一级网站| 国产噜噜噜噜噜久久久久久久久 | 韩日视频一区|