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

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>
            欧美日韩国产片| 欧美日韩在线不卡| 小辣椒精品导航| 欧美成人综合一区| 美女脱光内衣内裤视频久久网站| 一区二区三区回区在观看免费视频| 欧美在线观看一区| 欧美日韩福利视频| 91久久中文| 91久久精品美女高潮| 久久久精品日韩欧美| 久久久久一本一区二区青青蜜月| 午夜伦欧美伦电影理论片| 亚洲精品影院| 欧美高清视频| 91久久精品www人人做人人爽| 欧美日韩国产成人在线免费| 亚洲高清资源| 亚洲电影欧美电影有声小说| 久久久欧美一区二区| 美女精品在线| 亚洲高清视频一区二区| 免播放器亚洲一区| 最新成人在线| 欧美在线免费观看视频| 欧美在线短视频| 国产亚洲欧美另类中文 | 一区二区精品国产| 欧美激情久久久久| 亚洲免费观看高清完整版在线观看| 国产精品福利网| 亚洲欧美综合v| 久久精品国产免费| 亚洲电影成人| 欧美日韩视频第一区| 亚洲天堂男人| 久久免费视频一区| 亚洲精品免费电影| 国产精品久久久久久影院8一贰佰| 美玉足脚交一区二区三区图片| 欧美福利视频在线| 亚洲人体1000| 欧美一区二区三区的| 亚洲成色最大综合在线| 欧美日韩国产一区二区三区| 亚洲一区二区三区欧美| 免费影视亚洲| 中日韩男男gay无套| 国产午夜精品在线观看| 免费观看国产成人| 亚洲天堂免费在线观看视频| 免费不卡在线观看| 亚洲欧美另类在线观看| 激情视频一区| 国产精品成人观看视频免费| 久久狠狠亚洲综合| 一区二区免费在线观看| 六月丁香综合| 性视频1819p久久| 亚洲精品一区二区三区婷婷月| 久久精品首页| 日韩午夜在线播放| 美国成人毛片| 亚洲欧美国产毛片在线| 91久久精品网| 国产综合自拍| 欧美日韩一区不卡| 理论片一区二区在线| 亚洲主播在线播放| 亚洲精品综合| 欧美高清视频一区二区| 久久激情视频久久| 亚洲影院色在线观看免费| 最新国产乱人伦偷精品免费网站| 久久婷婷亚洲| 午夜伦欧美伦电影理论片| 91久久久在线| 老司机精品福利视频| 欧美在线影院在线视频| 亚洲一区二区三区高清不卡| 亚洲欧洲一区| 亚洲成人在线免费| 精品盗摄一区二区三区| 国产精品亚洲一区| 国产精品成人免费视频| 欧美韩国在线| 欧美成人在线网站| 免费国产一区二区| 欧美一区二区三区免费视频| 亚洲欧美激情诱惑| 亚洲天天影视| 亚洲一区二区三区国产| 亚洲色图自拍| 亚洲在线一区| 亚洲一区二区三区在线观看视频| 欧美午夜精品久久久| 欧美高清在线播放| 欧美激情一区二区三区全黄| 久久久精品999| 久久频这里精品99香蕉| 久久久亚洲人| 久热国产精品视频| 欧美大片在线观看| 欧美精品国产精品日韩精品| 欧美理论在线| 欧美日韩一区高清| 国产精品久久午夜夜伦鲁鲁| 国产精品视频网址| 国产欧亚日韩视频| 黄色在线一区| 亚洲国产欧美一区| 99re亚洲国产精品| 亚洲网站啪啪| 欧美在线观看你懂的| 久久亚洲综合| 欧美国产1区2区| 日韩午夜电影在线观看| 亚洲午夜91| 久久精品视频在线播放| 欧美xxx成人| 欧美三级电影大全| 国产一区二区三区直播精品电影| 欧美成人国产va精品日本一级| 日韩亚洲国产精品| 99国产成+人+综合+亚洲欧美| 久久久久久香蕉网| 亚洲国产成人tv| 最新亚洲一区| 午夜精品久久久久久久99黑人| 亚洲精品日韩在线观看| 亚洲精选一区| 欧美一区永久视频免费观看| 噜噜噜91成人网| 国产精品高潮久久| 在线精品观看| 亚洲一区二区三区久久| 久久久久高清| 亚洲免费电影在线| 久久成人精品视频| 欧美片网站免费| 国产综合色精品一区二区三区| 国产精品久久一级| 亚洲国内在线| 欧美一区二区三区免费大片| 亚洲国产精品久久久久秋霞蜜臀| 久久久伊人欧美| 亚洲人体大胆视频| 欧美一区二区三区视频免费播放 | 久久裸体视频| 最新国产成人在线观看| 亚洲午夜视频在线| 欧美国产专区| 激情综合色综合久久综合| 男女精品网站| 国产精品自拍小视频| 亚洲日本中文字幕| 久久久久久夜精品精品免费| 一本综合久久| 欧美成人精品一区二区| 国内精品视频久久| 亚洲欧美日韩另类精品一区二区三区 | 六月婷婷久久| 国产精品稀缺呦系列在线| 日韩午夜在线视频| 久久久夜夜夜| 新狼窝色av性久久久久久| 欧美日韩国产影片| 日韩视频在线一区| 亚洲国产高清一区二区三区| 久久成人精品无人区| 国产日本欧美一区二区三区在线| 国产麻豆精品视频| 亚洲特级毛片| 日韩网站在线看片你懂的| 欧美成人tv| 亚洲人成亚洲人成在线观看图片| 亚洲精品一区在线观看香蕉| 麻豆视频一区二区| 久久精品30| 激情欧美日韩一区| 另类图片国产| 久久综合久久美利坚合众国| 国产一区清纯| 久久精品亚洲热| 欧美专区在线| 韩国v欧美v日本v亚洲v| 久久一区欧美| 久久久午夜电影| 亚洲第一黄色网| 欧美高清在线| 欧美激情在线播放| 中文在线一区| 一区二区三区欧美在线观看| 国产精品白丝av嫩草影院| 亚洲欧美日韩精品久久久| 亚洲欧美日韩国产一区二区| 国产区欧美区日韩区| 欧美 日韩 国产精品免费观看| 亚洲精品国久久99热| 欧美紧缚bdsm在线视频|