題目傳送門
昨天真題測試賽題目==
沒想到一道純到都不用剪枝的搜尋會是noipt3難度。
不過因為我搜尋弱啊所以打不出來==
la:這不就是一道簡單模擬題麼
碼完此題能增加對搜尋的理解==
(閒話結束)
搜尋,我們就是要遍歷每乙個可能的狀態,來尋取最優解。每次我們嘗試取到乙個狀態,然後遞迴回溯,之後恢復原來的狀態。
1 #include2 #include3 #include4無注釋版5using
namespace
std;67
int t,n,no,x,ans=19260817;8
int tong[20];9
10void dfs(int
now)11
26}27 cnt=0;28
for(int i=3;i<=14;i++)
29 41}
42 cnt=0;43
for(int i=3;i<=14;i++)
44 56}
57for(int i=3;i<=15;i++)
58
73 tong[j]++;74}
75for(int j=3;j<=15;j++)
76if(tong[j]>=2
)77
86 tong[j]+=2;87
}88 dfs(now+1
);89
//three card
90 tong[i]+=4;91
}92}93
for(int i=3;i<=15;i++)
94105
for(int j=3;j<=15;j++)
106if(tong[j]>=2
)107
112 dfs(now+1);//
3 single
113 tong[i]+=3
;114
}115
}116
if(tong[16]==2) now++;
117else
if(tong[16]==1) now++;
118for(int i=3;i<=15;i++) if(tong[i]) now+=tong[i]>>1
;119
for(int i=3;i<=15;i++) if(tong[i]) now+=tong[i]&1
;120 ans=min(ans,now);
121}
122123
intmain()
124136 dfs(0
);137 printf("
%d\n
",ans);
138 ans=19260817
;139 memset(tong,0,sizeof
(tong));
140}
141return0;
142 }
1 #include2 #include3 #include4有注釋版5using
namespace
std;67
int t,n,no,x,ans=19260817;8
int tong[20];9
10void dfs(int
now)11
26}27 cnt=0;28
for(int i=3;i<=14;i++)
29 41}
42 cnt=0;43
for(int i=3;i<=14;i++)
44 56}
57for(int i=3;i<=15;i++)
58
73 tong[j]++;//
狀態的恢復都是對稱的 74}
75for(int j=3;j<=15;j++)
76if(tong[j]>=2
)77
86 tong[j]+=2;87
}88 dfs(now+1
);89
//three card
90 tong[i]+=4;91
}92}93
for(int i=3;i<=15;i++)
94105
for(int j=3;j<=15;j++)
106if(tong[j]>=2
)107
112 dfs(now+1);//
3 single
113 tong[i]+=3
;114
}115
}116
if(tong[16]==2) now++;
117else
if(tong[16]==1) now++;
118for(int i=3;i<=15;i++) if(tong[i]) now+=tong[i]>>1;//
出對子牌
119for(int i=3;i<=15;i++) if(tong[i]) now+=tong[i]&1;//
出單張牌 兩者用位運算簡化
120 ans=min(ans,now);//
更新答案
121}
122123
intmain()
124136 dfs(0);//
現在已經出了0張牌
137 printf("
%d\n
",ans);
138 ans=19260817
;139 memset(tong,0,sizeof
(tong));
140}
141return0;
142 }
NOIP2015提高組D1T3 鬥地主
問一副排n張,n 23最少打幾次打完,資料組數t 100。面向資料程式設計。前30分 亂暴力?沒有順子,把單 對子 炸彈 三張 王炸 三帶一判一次即可。前70分 狀壓,先預處理哪些狀態能一次出完,用這些狀態來轉移,2 n n t。實際得分可能比期望的高一些?滿分 如果不打順子,最優策略是可以確定的,...
NOIP 2015 day2 T3 運輸計畫
time 2018 9 27 題目大意 資料範圍 1 n m 300000 0 v al 1000 time limit 1000ms memory limit 256mb 1 n,m 300000 0 val 1000 text text 1 n m 3 0000 00 v al 1 000tim...
NOIP2015Day2T3 運輸計畫
題解 二分答案。假設列舉到答案是xxx。找出所有長度大於x xx的鏈,那麼這些鏈上必須要放蟲洞,而且必須放在一條所有鏈都經過的邊上,否則必然有一條鏈的長度是大於x xx的。這個直接差分就能求出所有鏈都經過的邊,並且把最長的那條改為蟲洞,看看所有邊是否合法,則可判斷x xx是否可行。應該不是很難吧。比...