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

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 閱讀(4064) 評(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的程序里面有一大部分都過不了這個(gè)數(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ù)  更多評(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
哦。。。你過題了沒

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

2008-05-22 15:59 by zsong
我跑出454了,很快,不過也是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>
            亚洲一级高清| 欧美日韩国产不卡在线看| 久久久久在线观看| 国产一区日韩一区| 久久久夜色精品亚洲| 欧美 日韩 国产 一区| 亚洲人成在线观看一区二区 | 亚洲永久免费av| 欧美一区二区视频在线观看2020 | 久久国产主播| 在线观看91久久久久久| 欧美va日韩va| 一区二区三区产品免费精品久久75 | 亚洲精选在线观看| 亚洲综合999| 国内精品嫩模av私拍在线观看| 久久人人爽国产| 亚洲另类在线一区| 久久国产黑丝| 亚洲欧洲美洲综合色网| 国产精品美腿一区在线看| 久久九九免费视频| 一本色道久久综合亚洲二区三区| 久久国产视频网站| 99精品欧美一区二区蜜桃免费| 国产伦精品免费视频 | 亚洲丰满少妇videoshd| 欧美日产一区二区三区在线观看 | 狂野欧美激情性xxxx欧美| 亚洲精选在线观看| 国产日韩欧美在线观看| 欧美精品一区二区三区蜜桃| 销魂美女一区二区三区视频在线| 亚洲国产日韩在线| 欧美一区二区国产| 亚洲精品中文字幕有码专区| 国产人成精品一区二区三| 欧美另类高清视频在线| 久久精视频免费在线久久完整在线看| 亚洲精品日本| 榴莲视频成人在线观看| 亚洲欧美日韩在线播放| 99精品免费| 伊人婷婷久久| 国产日韩精品一区二区| 欧美视频二区| 欧美母乳在线| 蜜桃av综合| 久久久久久一区二区| 亚洲你懂的在线视频| 亚洲精品一区二区在线| 欧美成人午夜激情| 久久久久国产精品厨房| 亚洲综合精品四区| 一区二区三区|亚洲午夜| 亚洲国产精品久久久久秋霞蜜臀 | 亚洲已满18点击进入久久| 亚洲观看高清完整版在线观看| 国产亚洲精品高潮| 国产精品日韩精品欧美精品| 欧美日产一区二区三区在线观看| 免费成人高清视频| 久久人人爽国产| 久久国产欧美日韩精品| 香蕉久久夜色精品| 午夜精品成人在线视频| 亚洲欧美国产77777| 亚洲天堂激情| 亚洲自拍偷拍麻豆| 一区二区三区高清不卡| 一本大道久久a久久精二百| 日韩视频在线观看国产| 亚洲激情视频在线| 亚洲国产清纯| 亚洲精品国精品久久99热一| 亚洲激情自拍| 99视频一区| 一本色道88久久加勒比精品 | 亚洲无线观看| 亚洲摸下面视频| 性欧美精品高清| 性欧美1819sex性高清| 欧美一区二区三区久久精品| 欧美一级片久久久久久久| 欧美一级黄色录像| 久久久之久亚州精品露出| 久久伊人精品天天| 免费在线欧美视频| 亚洲高清不卡av| 亚洲狼人综合| 亚洲女女做受ⅹxx高潮| 欧美一区二区在线看| 久久久综合免费视频| 欧美激情区在线播放| 欧美日韩视频专区在线播放| 国产精品日韩电影| 狠狠色综合播放一区二区| 亚洲国产天堂网精品网站| 亚洲最新合集| 欧美中文字幕在线播放| 美女尤物久久精品| 亚洲片在线资源| 亚洲专区一区| 久久精品国产一区二区电影| 欧美成人一区二区三区在线观看 | 国产精品久久久久久妇女6080| 国产精品夜夜嗨| 韩国精品在线观看| 99这里只有久久精品视频| 欧美一区二视频| 欧美大片第1页| 一区二区三区色| 久久综合久色欧美综合狠狠| 欧美日本中文| 极品av少妇一区二区| 一区二区三区蜜桃网| 久久久久久夜| 亚洲免费av观看| 久久精品网址| 欧美视频一区二区| 在线欧美视频| 午夜精品久久久久久久蜜桃app | 国产美女精品视频免费观看| 在线观看不卡| 亚洲欧美日韩另类| 欧美二区在线观看| 午夜国产一区| 欧美日韩精品一区二区在线播放| 国产日韩av一区二区| 一区二区三区精品视频在线观看| 久久青青草原一区二区| 一本色道精品久久一区二区三区| 久久精品在线视频| 国产精品欧美一区二区三区奶水| 亚洲国产另类久久精品| 久久av二区| 亚洲视频第一页| 欧美激情国产日韩精品一区18| 国内激情久久| 欧美在线亚洲| 一区二区三区四区五区精品| 欧美激情区在线播放| 一色屋精品视频在线看| 小处雏高清一区二区三区| 亚洲美女网站| 欧美国产免费| 亚洲欧洲日本在线| 蜜桃av综合| 久久国产精品久久精品国产 | 国内不卡一区二区三区| 欧美一区二区精美| 亚洲婷婷综合久久一本伊一区| 欧美精品久久久久久久免费观看| 亚洲国产二区| 女人色偷偷aa久久天堂| 久久久五月婷婷| 韩国一区电影| 久久免费视频网站| 欧美主播一区二区三区| 国产在线欧美日韩| 久久精品麻豆| 久久er精品视频| 黄色成人91| 蜜臀久久久99精品久久久久久 | 欧美va天堂| 亚洲三级国产| 最新中文字幕亚洲| 欧美日本韩国一区| 一区二区av在线| 99爱精品视频| 国产精品男女猛烈高潮激情| 亚洲欧美日韩国产综合在线| 亚洲一区二区视频在线| 国产情侣一区| 另类尿喷潮videofree| 久久综合狠狠综合久久综青草| 亚洲国产精品激情在线观看| 欧美黄色aaaa| 欧美精品一区在线观看| 亚洲一区二区高清| 亚洲午夜激情网页| 国产欧美精品国产国产专区| 久久精品一本久久99精品| 久久久中精品2020中文| 亚洲精品国产精品国自产观看浪潮| 亚洲欧洲三级电影| 欧美婷婷六月丁香综合色| 午夜精品在线| 久久精品一二三区| 日韩视频免费观看| 99国产精品久久久久久久| 国产欧美欧美| 免费国产一区二区| 欧美精品久久久久久| 午夜久久久久| 久久影院午夜片一区| 一区二区三区www| 欧美一级网站| 亚洲三级免费观看| 亚洲砖区区免费|