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

oyjpArt ACM/ICPC算法程序設計空間

// 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。我想 用預先得到所有可拼湊長度來HASH 發現太大...
3。然后我想對每個長棍分開搜索...
4。后來我又用記錄數目的方法搜 似乎更慢...
終于發現真正重要的剪枝!
1.當一個正好可以填滿的時候 就不用考慮比他小的去填了
2.一大段的第一個小段如果不成立直接返回到上一大段
這才是重要的剪枝
同時還有一個 要預防反復搜索同一關鍵碼 給出下面的測試數據
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的程序里面有一大部分都過不了這個數據!包括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   回復  更多評論   

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   回復  更多評論   

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

# re: PKU 1011 Sticks   回復  更多評論   

2007-10-24 11:00 by delguoqing
你上面這個測試數據的ouput是多少?

# re: PKU 1011 Sticks   回復  更多評論   

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   回復  更多評論   

2008-05-05 09:02 by oyjpart
的確啊,很強大的數據啊

# re: PKU 1011 Sticks   回復  更多評論   

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

# re: PKU 1011 Sticks   回復  更多評論   

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

# re: PKU 1011 Sticks   回復  更多評論   

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

# re: PKU 1011 Sticks   回復  更多評論   

2008-05-07 12:49 by mango
哎......這個數據真變態...煩死了 呵呵

# re: PKU 1011 Sticks   回復  更多評論   

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

# re: PKU 1011 Sticks   回復  更多評論   

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

# re: PKU 1011 Sticks   回復  更多評論   

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

# re: PKU 1011 Sticks   回復  更多評論   

2008-08-12 20:53 by oyjpart
現在由一個當前情況S.
這個時候比如有一個大棍子,長度為20,現在嘗試在其中放入一個長度為5的小棍子。結果深搜得到的結果是不可行,則認為當前情況是無解的。
因為這個5長度的小棍子放不了這個大棍子,絕對放不了任何一根大棍子。

# re: PKU 1011 Sticks   回復  更多評論   

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   回復  更多評論   

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>
            欧美一区二区三区另类| 久久综合给合久久狠狠狠97色69| 欧美久久久久中文字幕| 亚洲精品国精品久久99热一| 亚洲大片在线| 欧美精品自拍| 亚洲自拍偷拍福利| 香蕉久久久久久久av网站| 黄色成人在线观看| 欧美高清免费| 欧美网站在线观看| 久久激情五月激情| 美日韩丰满少妇在线观看| 一区二区三区国产精品| 午夜激情综合网| 在线精品视频一区二区三四| 亚洲精品免费电影| 国产裸体写真av一区二区| 嫩草伊人久久精品少妇av杨幂| 欧美成人69| 欧美在线影院| 蜜臀a∨国产成人精品| 亚洲一区黄色| 久久婷婷综合激情| 亚洲欧美在线播放| 老司机免费视频久久| 亚洲影院色无极综合| 久久综合狠狠综合久久综青草| 一区二区三区.www| 久久精品欧美日韩| 亚洲视频一区二区在线观看| 久久国产精品一区二区| 夜夜爽99久久国产综合精品女不卡| 午夜精品三级视频福利| 日韩系列欧美系列| 久久精品在线| 午夜精品一区二区三区在线播放| 老妇喷水一区二区三区| 欧美在现视频| 欧美视频中文字幕在线| 欧美激情第二页| 国产一区二区三区高清在线观看 | 国产精品香蕉在线观看| 亚洲高清在线| 在线观看日韩专区| 性色av一区二区三区| 在线亚洲激情| 欧美激情第3页| 亚洲大黄网站| 亚洲国产精品久久久久婷婷老年| 性欧美8khd高清极品| 亚洲一区三区视频在线观看| 欧美极品在线观看| 亚洲电影av在线| 影音先锋中文字幕一区| 久久精品国产亚洲一区二区| 久久不射电影网| 国产精品美女999| 99视频国产精品免费观看| 亚洲精品综合精品自拍| 免费在线视频一区| 欧美顶级大胆免费视频| 亚洲国产精品悠悠久久琪琪| 久久久噜噜噜久久| 免费成人在线观看视频| 伊人狠狠色j香婷婷综合| 欧美亚洲综合另类| 久久精品免视看| 国内精品久久久久国产盗摄免费观看完整版| 一区二区三区|亚洲午夜| 日韩亚洲在线观看| 欧美日韩蜜桃| 亚洲特级片在线| 久久精品国产99国产精品| 国产三区二区一区久久| 午夜精品久久久久久久99热浪潮| 欧美一区二区精品在线| 国内精品**久久毛片app| 久久久久一区二区| 亚洲国产另类精品专区| 中文国产成人精品久久一| 国产精品久久久亚洲一区 | 欧美在线视频全部完| 久久看片网站| 91久久夜色精品国产九色| 欧美激情综合亚洲一二区| 在线亚洲欧美视频| 久久久久国产成人精品亚洲午夜| 在线日韩中文| 欧美日韩免费观看一区=区三区| 亚洲一二三四久久| 久久手机免费观看| 夜夜夜久久久| 国产一级久久| 欧美精品国产一区二区| 亚洲欧美怡红院| 欧美国产精品日韩| 亚洲一区二区三区精品视频| 国内成+人亚洲+欧美+综合在线| 欧美高清不卡| 篠田优中文在线播放第一区| 亚洲国产美女精品久久久久∴| 一区二区三区四区五区精品视频 | 女人色偷偷aa久久天堂| 99热精品在线| 免费视频一区| 亚洲欧美日韩另类| 91久久香蕉国产日韩欧美9色| 国产精品久久久久久久久搜平片| 卡通动漫国产精品| 中文精品一区二区三区| 亚洲电影第1页| 久久久久久久国产| 一区二区三区四区五区精品视频| 狠狠综合久久av一区二区老牛| 欧美日韩精品一区二区天天拍小说 | 亚洲欧美在线免费观看| 亚洲国产乱码最新视频| 久久露脸国产精品| 亚洲永久精品国产| 亚洲精品之草原avav久久| 国产一区二区欧美| 国产精品久久久久三级| 欧美aⅴ一区二区三区视频| 午夜亚洲精品| 亚洲视频一区在线| 亚洲精品一区二区三区四区高清| 美女露胸一区二区三区| 久久精品视频一| 亚洲综合丁香| 亚洲一区国产一区| 中文一区二区在线观看| 日韩午夜电影| 亚洲激情视频在线播放| 在线不卡中文字幕| 一区二区三区在线免费视频| 国产视频在线观看一区二区| 国产精品免费看| 欧美午夜一区二区| 欧美视频一区二| 欧美日韩美女| 国产精品扒开腿做爽爽爽软件 | 欧美成人精品在线视频| 久久漫画官网| 久久琪琪电影院| 久久这里只有| 久久婷婷麻豆| 欧美国产日韩一二三区| 欧美精品免费播放| 欧美日韩国产首页| 欧美日韩成人精品| 国产精品久久999| 国产欧美日本一区二区三区| 国产欧美不卡| 影音先锋中文字幕一区| 亚洲欧洲一区二区在线播放| 日韩一级大片| 午夜精品久久久久99热蜜桃导演| 亚洲欧美一区二区在线观看| 久久精品国产亚洲5555| 久久综合伊人77777蜜臀| 亚洲成人自拍视频| 亚洲精品乱码久久久久| 亚洲色图自拍| 欧美在线视屏| 欧美激情视频一区二区三区在线播放| 欧美日韩国产综合久久| 国产精品一区一区三区| 悠悠资源网亚洲青| 中文av一区特黄| 久久一二三四| 亚洲激情网址| 午夜久久黄色| 欧美精品日韩一本| 国产欧美日本一区视频| 亚洲欧洲久久| 亚洲欧美激情精品一区二区| 久久久免费精品| 最新国产乱人伦偷精品免费网站| 亚洲视频欧美视频| 久久久久久久久久看片| 欧美日韩综合不卡| 在线观看成人小视频| 亚洲图片在线| 欧美国产视频一区二区| 亚洲一区二区视频在线| 欧美gay视频| 国产无一区二区| 亚洲少妇在线| 美女网站在线免费欧美精品| 一区二区三区视频在线| 久久综合久久美利坚合众国| 国产精品日韩电影| 亚洲伦理中文字幕| 久久视频在线视频| 亚洲一二三区精品| 欧美日韩情趣电影| 亚洲精品国产精品国产自| 久久精品中文| 亚洲视频一起|