剛開始想的時候一直以為同一排不同的拉燈順序對結果是有影響的,手推了好多遍才發現拉燈結果只和拉的燈有關,這也要打表,可以說非常智障了。
如果從上向下尋找拉的燈,那麼每一排全暗主要相關的是下一排(通過下一排補齊)和初始狀態,而每一排的初始狀態是和其本身和上一排有關的,那麼只要找出第一排所有的拉燈方案(2^5種)然後對這幾種方案模擬一遍找能全亮且步數最小的方案。
鍛鍊搜尋能力的好題
注意小於6步…交的時候沒看見,日常眼瞎1/1。
**
1 #include2 #include3 #include4 #include5 #include6 #include7view codeusing
namespace
std;
8const
int maxn=(1
<<5)+10;9
int a[6]={};
10char ch[10]={};
11int f[maxn]={};//
第一行運算元量
12int f1[maxn]={};//
第一行操作對第二行的影響
13int nn[maxn]={};//
第一行操作後得到的數
14//
以上三個通過dfs計算
15int aa[maxn]={};//
下一行來填滿這一行對下一行的影響
16int bb[maxn]={};//
對下下一行的影響
17int z[maxn]={};//
運算元量
18//
以上三個預處理
19int ma=maxn-11;20
void dfs1(int k,int num,int d,int
z)25
int w=1
<
26if(k>=1)w1=(7
<
27else w1=7/2
;28 dfs1(k+1
,num,d,z);
29 dfs1(k+1,num^w1,d+1,z^w);30}
31int
main()
44 bb[i]=(~i)&ma;45}
46while(t-->0
)54 }memset(f,63,sizeof
(f));
55int da=f[1
];56 dfs1(0,a[1],0,0
);57
int ans=da;
58for(int i=0;i<=ma;i++)67}
68if(ans>6)printf("
%d\n
",-1
);69
else printf("
%d\n
",ans);70}
71return0;
72 }
JZYZOJ1237 教授的測試 dfs
鍛鍊搜尋的 能力,不錯的題。開始對dfs到底向下傳遞什麼搞不清楚,需要想一下,noip難度的題還有這種情況,果然還是太蒻。1 include2 include3 include4 include5 include6 include7 include8 using namespace std 9int...
138 子陣列之和
原題 there is at least one subarray that it s sum equals to zero.您在真實的面試中是否遇到過這個題?是 標籤雜湊表 子陣列思路1 設定兩根指標start與end,每次查詢固定start,end向右移動,遍歷陣列,找到和為0的return出去...
JZYZOJ1330 土地購買 dp 斜率優化
不用long long的話只能ac一半的點而且完全查不出來錯.放棄cin保平安.x i y i 分別為第i塊土地的長和寬,輸入後需要排序然後去掉冗餘資料,最後得到的x i 遞增y i 遞減 或者y i 遞增x i 遞減 因為如果x i x j 的同時y i y j 則j是不必要存在的,可以把它和i一...