題目:
我想用題目中給出的第二組輸入為例。
3
x3 x1 x2
00010011
4000
010111
110
000
可以看做二進位制數000
,可以轉化為十進位制的0
,00010011
中的第0
位就是答案0
010
可以看做二進位制數001
,可以轉化為十進位制的1
,00010011
中的第1
位就是答案0
111
可以看做二進位制數111
,可以轉化為十進位制的7
,00010011
中的第7
位就是答案1
110
可以看做二進位制數011
,可以轉化為十進位制的3
,00010011
中的第3
位就是答案1
所以,我們可以將所給的vva
轉化為相應的二進位制數,再轉化為十進位制數,最後從ch_arr
中輸出相應位置上的數即可。
複雜之處在於如何將vva
轉化成二進位制數。
我建立了index
陣列,用於儲存下標。建立p陣列,用於儲存每個0/1
應該乘以2
的多少次冪。只要搞懂了p
陣列是如何建立的,問題就迎刃而解了。
#include
#include
using
namespace std;
intmain()
for(
int i =
0; i < n; i++
)char ch_arr[
1000];
scanf
("%s"
, ch_arr)
;int t; cin >> t;
while
(t--
)
cout << ch_arr[pos];}
cout << endl << endl;
}return0;
}
紫書習題 7 1 UVa 208 (爆搜加剪枝)
題意 構造出一張圖,給出乙個點,字典序輸出所有從1到該點的路徑。解題方法 裸蒐會超時的題目,其實題目的資料特地設計得讓圖稠密但起點和終點卻不相連,所以直接搜尋過去會超時。只要判斷下起點和終點能不能相連就行了,可以用並查集也可以用floyd演算法,這樣就能過了。還有一種就是我們可以先將所有與目標點聯通...
紫書 習題 9 8 uva1632
題意 有n個寶藏,每個都在乙個位置p i 在規定的時間t i 就會消失。阿里巴巴要在寶藏消失前收集齊所有寶藏,問 有方法嗎?有的話最少多少秒?思路 開始想的是用狀態轉移方程來乙個個判斷,不好寫。看了題解知道在一段區間 l,r 要使時間最短必須從端點出來,然後果斷寫了乙個記憶化搜尋,tle了。再看題解...
紫書 習題 9 8 uva 10163
解題感想 好久沒刷題了,自己連揹包dp都差不多忘了。題目看著很複雜,可以將問題分解來看,和高中數學題的感覺一樣 1.求任意一組組合的最小的保護值 的最大值 2.求在改最大組合的情況下的,求最小的工資和,和某圖論一樣的思路。解題思路 第乙個揹包 任意組合 抽象成模板 在n個應聘者中選x人使得看守m個倉...