日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

HDU 5968 异或密码(区间dp)

發(fā)布時(shí)間:2024/4/15 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HDU 5968 异或密码(区间dp) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
Problem Description 晨晨在紙上寫了一個(gè)長(zhǎng)度為N的非負(fù)整數(shù)序列{ai}。對(duì)于這個(gè)序列的一個(gè)連續(xù)子序列{al,al+1,ar}晨晨可以求出其中所有數(shù)異或的結(jié)果 alxoral+1xor...xorar其 中xor表示位異或運(yùn)算,對(duì)應(yīng)C、C++、 Java等語(yǔ)言中的^運(yùn)算。
小璐提出了M個(gè)詢問(wèn),每個(gè)詢問(wèn)用一個(gè)整數(shù) xi描述。
對(duì)于每個(gè)詢問(wèn),晨晨需要找到序列{ai}的所有連續(xù)子序列,求出每個(gè)子序列異或的結(jié)果,找到所有的結(jié)果中與 xi之差的絕對(duì)值最小的一個(gè),并告訴小璐相應(yīng)子序列的長(zhǎng)度。
若有多個(gè)滿足條件的連續(xù)子序列,則告訴小璐這些子序列中最長(zhǎng)的長(zhǎng)度。

?

Input 包含多組測(cè)試數(shù)據(jù),第一行一個(gè)正整數(shù)T,表示數(shù)據(jù)組數(shù)。
每組數(shù)據(jù)共兩行。
第一行包含N+1個(gè)非負(fù)整數(shù)。其中第一個(gè)數(shù)為N,表示序列的長(zhǎng)度;接下來(lái)N 個(gè)數(shù),依次描述序列{ ai}中的每個(gè)數(shù)。
第二行包含M+1個(gè)整數(shù)。其中第一個(gè)數(shù)為M,表示詢問(wèn)的個(gè)數(shù);接下來(lái)M個(gè)數(shù) xi,每個(gè)數(shù)對(duì)應(yīng)題目描述中的一個(gè)詢問(wèn)。
保證 1 <= N <= 100,1 <= M <= 100,ai <= 1024,|xi| <= 1024,數(shù)據(jù)組數(shù) <= 100。

?

Output 對(duì)于每組數(shù)據(jù)輸出M + 1行。前M行對(duì)應(yīng)晨晨M個(gè)詢問(wèn)的回答,第M + 1行為空行

?

Sample Input 2 2 1 1 2 0 2 3 1 2 4 3 10 5 1

?

Sample Output 2 1 3 2 1

?

Source 2016年中國(guó)大學(xué)生程序設(shè)計(jì)競(jìng)賽(合肥)-重現(xiàn)賽(感謝安徽大學(xué)) #include<bits/stdc++.h> using namespace std; #define ll long longconst int inf = 0x3f3f3f3f; const int mod = 1000000007; const int maxn = 10000 + 8;int t, n, m, a[100 + 8], x[100 + 8], sum[1000 + 8], res[1000 + 8][1000 + 8];int main() {scanf("%d", &t);while(t--){scanf("%d", &n);memset(sum, 0, sizeof(sum));for(int i = 1; i <= n; i++){scanf("%d", &a[i]);sum[i] = sum[i - 1] ^ a[i];}for(int i = 1; i <= n; i++)for(int j = i; j <= n; j++)res[i][j] = sum[j] ^ sum[i - 1];///區(qū)間[i, j]的所有數(shù)值的異或值scanf("%d", &m);for(int i = 0; i < m; i++){int miao = 1e9, id = 0, x;scanf("%d", &x);for(int j = 1; j <= n; j++)for(int k = j; k <= n; k++)if(miao > abs(res[j][k] - x)){miao = abs(res[j][k] - x);id = k - j + 1;}else if(miao == abs(res[j][k] - x))id = max(id, k - j + 1);printf("%d\n", id);}printf("\n");}return 0; }

?

轉(zhuǎn)載于:https://www.cnblogs.com/RootVount/p/11581414.html

總結(jié)

以上是生活随笔為你收集整理的HDU 5968 异或密码(区间dp)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。