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

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 閱讀(4029) 評論(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>
            尤物视频一区二区| 国产视频亚洲精品| 夜夜爽www精品| 亚洲精品自在在线观看| 亚洲中无吗在线| 亚洲一区二区三区高清不卡| 国产精品激情av在线播放| 午夜欧美精品| 久久久久国产一区二区| 日韩午夜av| 亚洲欧美国产日韩中文字幕| 国产一区二区剧情av在线| 免费久久久一本精品久久区| 欧美日韩大片一区二区三区| 午夜视频久久久| 久久一区欧美| 亚洲在线视频一区| 久久久一二三| 亚洲资源在线观看| 久久婷婷成人综合色| 在线亚洲一区| 久久欧美肥婆一二区| 亚洲视频精品| 久久久人成影片一区二区三区观看 | 国产精品一区2区| 欧美不卡视频一区| 国产精品v欧美精品v日韩精品| 欧美制服丝袜| 欧美日韩精品欧美日韩精品 | 久久久久久久成人| 久久夜色撩人精品| 国产精品久久久久久影视| 欧美bbbxxxxx| 国产亚洲高清视频| 日韩写真视频在线观看| 一区二区三区在线免费观看| 一区二区三区四区国产| 亚洲日本va午夜在线电影| 欧美一区2区三区4区公司二百 | 国产精品无码永久免费888| 亚洲电影第三页| 国产午夜精品一区二区三区欧美| 91久久国产综合久久| 一色屋精品视频在线观看网站| 99天天综合性| 99精品欧美一区二区三区| 久久男人资源视频| 久久久噜噜噜久噜久久| 国产精品欧美经典| 99国产精品久久久久久久| 亚洲精品在线观| 牛人盗摄一区二区三区视频| 麻豆av福利av久久av| 国产在线拍偷自揄拍精品| 亚洲制服欧美中文字幕中文字幕| 亚洲午夜伦理| 欧美日韩高清在线| 亚洲欧洲一区二区三区在线观看 | 亚洲自拍三区| 亚洲国产导航| 校园激情久久| 欧美一区二区黄色| 欧美日韩在线第一页| 免费视频久久| 亚洲国产精品va在看黑人| 久久精品国产2020观看福利| 久久婷婷综合激情| 国产一区二区三区久久久久久久久| 亚洲一区二区黄| 欧美一区二区三区在线视频| 国产亚洲美州欧州综合国| 欧美在线视频免费观看| 蜜桃精品一区二区三区 | 欧美日精品一区视频| 日韩亚洲视频在线| 亚洲欧美日本伦理| 国产亚洲a∨片在线观看| 久久九九国产精品怡红院| 欧美精品在线一区二区| 欧美偷拍另类| 亚洲国产精品久久精品怡红院| 亚洲一区二区三区精品动漫| 欧美四级在线| 亚洲女ⅴideoshd黑人| 久久久久久综合| 最新成人av在线| 欧美日韩网站| 久久国产精品一区二区| 亚洲国产精品va在线看黑人| 亚洲人成高清| 国产精品一区在线播放| 久久一二三区| 亚洲视频在线一区观看| 久久先锋影音av| 一区二区三区精品在线| 国产欧美在线观看一区| 欧美xx69| 性欧美video另类hd性玩具| 欧美国产精品v| 亚洲欧美在线看| 在线国产欧美| 国产精品美女午夜av| 久久综合伊人77777尤物| 国产精品99久久99久久久二8| 久久久久久久一区二区| 一区二区精品在线| 一区二区在线视频播放| 国产精品九九| 欧美gay视频| 久久爱另类一区二区小说| 亚洲精选国产| 亚洲大片一区二区三区| 欧美在线地址| 亚洲午夜三级在线| 91久久一区二区| 国产欧美日韩在线播放| 欧美日韩国产片| 久久久无码精品亚洲日韩按摩| 一区二区三区精品视频在线观看| 欧美成人综合网站| 久久中文久久字幕| 小辣椒精品导航| 9l国产精品久久久久麻豆| 国内精品视频在线观看| 国产精品网站在线播放| 欧美性开放视频| 欧美日韩国产二区| 欧美激情性爽国产精品17p| 久久青草久久| 久久精品视频在线看| 性久久久久久| 午夜精品久久久久久久白皮肤| 亚洲天堂激情| 一区二区日本视频| 亚洲视频www| 亚洲影视在线| 午夜精品久久久久久久久久久| 一区二区三区国产精华| 一本色道久久88精品综合| 亚洲精选视频免费看| 99精品热视频| 一本色道久久综合狠狠躁篇的优点 | 亚洲狼人综合| a91a精品视频在线观看| 亚洲美女毛片| 亚洲少妇最新在线视频| 一本久久a久久精品亚洲| 亚洲视频视频在线| 亚洲伊人伊色伊影伊综合网| 亚洲欧美欧美一区二区三区| 午夜欧美大片免费观看| 欧美自拍偷拍午夜视频| 久久精品一区二区| 欧美成人小视频| 欧美日韩精品系列| 国产精品日韩在线观看| 国产精品自在欧美一区| 一区二区三区我不卡| 91久久中文| 亚洲尤物视频在线| 久久久亚洲精品一区二区三区| 另类综合日韩欧美亚洲| 亚洲国产精品久久久久婷婷884| 亚洲人成人99网站| 亚洲性夜色噜噜噜7777| 久久久久88色偷偷免费| 欧美精品一区二区三| 国产精品s色| 精品盗摄一区二区三区| 日韩网站免费观看| 欧美综合二区| 亚洲欧洲日夜超级视频| 亚洲综合色婷婷| 久久影院午夜论| 国产精品xxx在线观看www| 狠狠狠色丁香婷婷综合激情| 日韩视频精品在线观看| 欧美一区二区大片| 亚洲国产精品va在线看黑人动漫| 亚洲视频在线观看网站| 久久综合综合久久综合| 国产精品欧美久久久久无广告| 亚洲大黄网站| 欧美一级播放| 亚洲毛片在线免费观看| 久久久久欧美精品| 国产精品推荐精品| 亚洲三级色网| 久久欧美肥婆一二区| 中文在线不卡| 欧美日韩国产限制| 在线日韩av片| 久久国产福利| 亚洲视频碰碰| 欧美日韩国产一级| 亚洲国产91| 久久这里有精品15一区二区三区| 一区二区三区高清在线观看| 欧美激情欧美狂野欧美精品| 精品不卡在线|