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

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>
            久久久五月婷婷| 美脚丝袜一区二区三区在线观看| 亚洲国产日韩综合一区| 久久精品一区二区三区四区| 伊人久久婷婷| 亚洲第一毛片| 欧美日韩综合精品| 久久国产精品第一页| 久久人人97超碰国产公开结果| 亚洲国产影院| 99人久久精品视频最新地址| 国产精品婷婷| 乱人伦精品视频在线观看| 欧美—级a级欧美特级ar全黄| 一区二区国产精品| 亚洲女同在线| 亚洲三级电影全部在线观看高清| 日韩亚洲一区二区| 国内精品久久久久影院薰衣草| 欧美a级一区| 国产精品成人观看视频免费| 久热这里只精品99re8久| 欧美日韩日本视频| 米奇777在线欧美播放| 欧美日韩在线一区| 久久伊人一区二区| 欧美性理论片在线观看片免费| 久久精品人人做人人综合| 欧美成年人视频| 久久精品五月| 欧美日韩三级视频| 美国成人直播| 国产精品普通话对白| 亚洲承认在线| 国内精品久久久久影院色| 一区二区三区www| 亚洲高清电影| 欧美自拍偷拍午夜视频| 中文在线资源观看网站视频免费不卡| 久久精品国产第一区二区三区最新章节 | 欧美国产精品专区| 久久久久国产精品一区| 国产精品成人在线| 99国产精品久久久久久久久久| 在线观看福利一区| 欧美专区日韩专区| 欧美资源在线观看| 国产精品一区二区视频| 亚洲视频精选| 亚洲一区bb| 欧美日韩高清免费| 91久久国产综合久久91精品网站| 韩国av一区二区| 亚久久调教视频| 欧美一区二区三区视频在线观看 | 欧美电影在线观看| 蜜臀va亚洲va欧美va天堂| 国产一区二区日韩精品| 亚洲欧美清纯在线制服| 香蕉亚洲视频| 国产伦精品一区二区三区免费迷 | 亚洲第一区色| 亚洲三级网站| 欧美激情精品久久久久久免费印度 | 欧美成人免费视频| 亚洲国产欧美不卡在线观看| 久久久7777| 牛人盗摄一区二区三区视频| 亚洲国产欧美一区二区三区久久| 久久只精品国产| 最新国产成人在线观看| 亚洲视频欧美视频| 国产精品麻豆欧美日韩ww| 亚洲在线观看视频| 久久久久久久久伊人| 伊人伊人伊人久久| 欧美福利一区二区| 夜夜嗨av一区二区三区网站四季av| 在线视频亚洲一区| 国产精品男gay被猛男狂揉视频| 亚洲免费在线播放| 欧美α欧美αv大片| 亚洲精品视频免费在线观看| 欧美日韩在线视频首页| 午夜精品久久久久久久蜜桃app | 欧美日韩高清在线一区| 欧美天堂亚洲电影院在线观看 | 欧美aa国产视频| 99精品福利视频| 国产精品久久久一区二区| 欧美一区二区私人影院日本| 欧美3dxxxxhd| 亚洲欧美日韩一区| 在线日韩av片| 欧美婷婷久久| 久久综合狠狠| 亚洲午夜久久久| 牛牛影视久久网| 亚洲免费在线观看视频| 一区在线免费| 欧美吻胸吃奶大尺度电影| 久久久99国产精品免费| 99综合电影在线视频| 久久免费99精品久久久久久| 亚洲免费电影在线| 很黄很黄激情成人| 国产精品久久久91| 欧美成人精品福利| 欧美一区二区在线| 夜夜嗨一区二区| 欧美wwwwww| 久久久久久噜噜噜久久久精品| aa级大片欧美| 亚洲第一区在线观看| 国产婷婷色一区二区三区在线| 欧美日本免费| 免费成人av资源网| 久久精品91久久香蕉加勒比| 国产精品99久久久久久www| 欧美激情视频网站| 久久美女性网| 欧美在现视频| 亚洲在线免费视频| 一区二区精品国产| 亚洲高清在线观看一区| 国产一区二区在线观看免费播放 | 欧美成人一区二区三区在线观看| 性18欧美另类| 亚洲欧美另类在线| 一区二区国产在线观看| 亚洲精品一区二区三区不| 欧美成人精品在线视频| 久久亚洲高清| 久久亚洲一区二区三区四区| 久久黄金**| 久久精品99国产精品| 欧美一区二区三区啪啪| 亚洲欧美综合国产精品一区| 亚洲小视频在线| 亚洲一区二区免费在线| 亚洲视频在线观看网站| 亚洲视频狠狠| 亚洲综合第一页| 亚洲欧美国产va在线影院| 亚洲欧美日韩国产| 欧美亚洲一区二区三区| 香蕉国产精品偷在线观看不卡| 性欧美video另类hd性玩具| 亚洲欧美日韩在线高清直播| 亚洲欧美综合v| 久久精品动漫| 免费观看久久久4p| 亚洲福利精品| 99re8这里有精品热视频免费| 一区二区三区久久| 亚洲欧美在线高清| 久久激情网站| 欧美不卡视频一区发布| 欧美日韩另类视频| 国产欧美日韩精品丝袜高跟鞋 | 欧美金8天国| 国产精品男人爽免费视频1| 国模私拍视频一区| 亚洲激情综合| 午夜老司机精品| 欧美成人精品福利| 日韩一级黄色片| 久久成年人视频| 欧美激情亚洲激情| 国产精品久久一卡二卡| 亚洲激情自拍| 亚洲男人的天堂在线aⅴ视频| 久久精品一区四区| 欧美日本高清一区| 国产亚洲精久久久久久| 亚洲全部视频| 午夜精品在线看| 欧美国产激情| 亚洲欧美伊人| 欧美精品久久久久久久久久| 国产精品任我爽爆在线播放| 亚洲激情在线观看| 欧美在线一二三区| 日韩视频一区| 久久久一二三| 国产日韩一区二区| 一本一本久久a久久精品综合妖精 一本一本久久a久久精品综合麻豆 | 亚洲国产一区二区三区在线播| 亚洲一二三区精品| 欧美成人黄色小视频| 国产一区二区三区在线观看视频 | 中文在线资源观看视频网站免费不卡| 久久久久亚洲综合| 国产精品日本精品| 中文欧美字幕免费| 亚洲国产美女精品久久久久∴| 亚洲欧美日韩国产成人精品影院| 欧美日韩国产精品一区二区亚洲| 在线观看成人网| 久久久国产成人精品|