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

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>
            合欧美一区二区三区| 欧美国产在线视频| 欧美极品影院| 久久精品国产清高在天天线| 欧美日韩一区二区三区在线视频 | 91久久精品美女| 国际精品欧美精品| 亚洲欧美国产高清| 亚洲欧美日韩国产成人| 欧美激情精品久久久久久久变态| 久久久夜夜夜| 国产日韩欧美黄色| 99精品视频免费| 一区二区三区国产在线| 欧美xxxx在线观看| 欧美激情中文字幕一区二区| 国产综合第一页| 久久国产精品一区二区三区四区| 久久狠狠婷婷| 国产无一区二区| 午夜久久影院| 久久久噜噜噜久久| 极品尤物av久久免费看| 久久精品久久综合| 免费久久精品视频| 亚洲国产精品一区| 欧美成人精品| 亚洲美女视频在线观看| 亚洲午夜羞羞片| 国产精品久久久久毛片软件| 中文在线资源观看视频网站免费不卡| 亚洲一级在线| 国产精品亚洲精品| 欧美一区二区三区在线播放| 久久综合激情| 亚洲精品视频免费| 国产精品成人免费精品自在线观看| 中文国产一区| 久久精品99| 亚洲国产精品久久久久| 欧美激情精品久久久| 一区二区三区不卡视频在线观看 | 亚洲国产高潮在线观看| 99精品视频免费| 国产精品白丝黑袜喷水久久久| 亚洲视频第一页| 久久久青草婷婷精品综合日韩| 亚洲精品123区| 欧美精品情趣视频| 亚洲欧美激情一区| 免费亚洲网站| 亚洲欧美经典视频| 樱花yy私人影院亚洲| 欧美日韩一二三区| 久久精品国产2020观看福利| 欧美激情精品久久久久久蜜臀| 亚洲午夜精品国产| 狠狠色狠狠色综合日日91app| 嫩草国产精品入口| 亚洲一区二区三区免费视频| 免费中文日韩| 午夜视黄欧洲亚洲| 亚洲国产一区二区三区a毛片| 欧美日韩激情网| 久久久av网站| 一区二区电影免费观看| 欧美va天堂va视频va在线| 亚洲资源av| 亚洲精品一品区二品区三品区| 国产欧美日韩亚州综合| 欧美高清hd18日本| 欧美影院在线播放| 一本色道久久综合亚洲精品不卡| 美女日韩欧美| 久久xxxx精品视频| 一本一道久久综合狠狠老精东影业 | 欧美一区二区日韩| 亚洲人成网站影音先锋播放| 国产视频不卡| 国产精品videosex极品| 乱人伦精品视频在线观看| 亚洲欧美久久久久一区二区三区| 亚洲激情在线播放| 欧美xx69| 久久婷婷丁香| 欧美自拍偷拍午夜视频| 亚洲一区二区在线播放| 亚洲精品人人| 亚洲国产精品成人综合色在线婷婷| 国产九区一区在线| 欧美色综合天天久久综合精品| 欧美顶级少妇做爰| 欧美成人免费一级人片100| 久久激情视频| 久久av一区二区三区漫画| 亚洲综合不卡| 亚洲永久免费视频| 亚洲网址在线| 亚洲午夜极品| 亚洲欧美另类中文字幕| 亚洲一区二区三区在线视频| 一区二区三区 在线观看视| 亚洲乱码国产乱码精品精98午夜| 亚洲激情一区| 亚洲精品在线视频| 日韩午夜精品| 一区二区精品在线| 亚洲天堂黄色| 午夜精品视频在线观看| 午夜国产欧美理论在线播放| 亚洲伊人色欲综合网| 亚洲欧美另类国产| 久久狠狠婷婷| 久久综合给合| 欧美激情网站在线观看| 欧美日本一区二区三区| 国产精品国产a级| 国产精品久久久久7777婷婷| 国产精品成人在线观看| 国产欧美一区二区三区久久人妖 | 一区二区三区四区精品| 一区二区三区www| 亚洲欧美电影院| 久久久精品一区| 欧美a级在线| 欧美午夜免费影院| 国产伦精品一区二区三区免费| 国内精品久久国产| 亚洲欧洲综合另类| 亚洲专区免费| 久久免费精品视频| 亚洲黄色毛片| 亚洲欧美日韩精品久久奇米色影视 | 99视频超级精品| 亚洲一区二区伦理| 久久精品欧洲| 欧美日韩国产欧| 国产日韩一区在线| 亚洲精品免费电影| 亚洲欧美日韩成人高清在线一区| 久久精品成人欧美大片古装| 亚洲大胆人体视频| 中文精品在线| 免费成人av资源网| 欧美视频不卡中文| 国产综合第一页| 亚洲视频一起| 免费看成人av| 亚洲影视在线| 欧美激情中文字幕一区二区| 国产农村妇女精品一区二区| 亚洲黄色在线| 久久久九九九九| 日韩一本二本av| 老鸭窝亚洲一区二区三区| 国产精品日韩欧美一区二区三区| 亚洲国产专区| 久久精品动漫| 在线亚洲精品| 欧美国产大片| 伊人久久亚洲影院| 性欧美8khd高清极品| 亚洲欧洲日产国码二区| 久久黄色级2电影| 国产精品夜色7777狼人 | 欧美一区二区在线观看| 欧美激情一区二区在线| 久久精品成人一区二区三区| 国产精品高精视频免费| 99精品国产高清一区二区| 免费在线亚洲| 久久久精品一区二区三区| 国产精品区免费视频| 亚洲视频观看| 亚洲国内欧美| 欧美顶级大胆免费视频| 亚洲福利专区| 久久一区二区三区超碰国产精品| 亚洲嫩草精品久久| 国产精品国产三级国产专播精品人 | 亚洲精选一区| 欧美国产精品劲爆| 91久久国产综合久久| 久热精品视频在线观看| 久久国产精品久久国产精品| 国产欧美一区二区精品婷婷| 亚洲欧美激情视频| 一区二区日韩欧美| 欧美性猛交视频| 亚洲视频在线免费观看| 日韩一级黄色大片| 欧美日韩国产一区精品一区 | 亚洲国产美女| 免费在线视频一区| 亚洲日本中文字幕区| 欧美激情五月| 欧美精品久久99久久在免费线| 亚洲国产小视频在线观看| 亚洲第一页在线| 欧美精品一级|