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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

你真的会暴力吗

發布時間:2024/10/5 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 你真的会暴力吗 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

http://oj.acm.zstu.edu.cn/JudgeOnline/problem.php?id=4441

題解:
首先題目中要求兩個不相交的子序列數值和相等,可以等價于任意兩個子序列數值和不相等。
然后可以發現他不同的子序列一共有2n 種,但是子序列的最大值為n*max(ai);
那么根據鴿巢原理可以得出來當n 大于21 的時候肯定不是一個完美序列。
對于剩下的數列可以進行暴力。

#include<bits/stdc++.h> using namespace std; const int N = 1e5 + 10; char fre[10] = "data1.in"; char fot[10] = "data1.out";int vis[N * 20]; //int bb[N * 20]; int v[N], teb; void solve(){int t;scanf("%d", &t);while(t--){teb++;int n;scanf("%d", &n);for(int i = 0; i < n; ++i) scanf("%d", &v[i]);if(n > 21) puts("no");else{bool flag = true;for(int gg = 1, now = 0; gg < (1 << n) && flag; ++gg){now = 0;for(int i = 0; i < n; ++i) if((gg >> i) & 1) now += v[i];if(vis[now] == teb){flag = false; // cout << now << " " << gg << " " << bb[now] << endl;}vis[now] = teb; // bb[now] = gg;}flag ? puts("yes") : puts("no");}} } int main() {solve(); // int T = 3; // for(int cas = 1; cas <= T; ++cas){ // fre[4] = ('0' + cas); // fot[4] = ('0' + cas); // freopen(fre, "r", stdin); // freopen(fot, "w", stdout); // solve(); // }return 0; }

?

總結

以上是生活随笔為你收集整理的你真的会暴力吗的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。