精華區beta Marginalman 關於我們 聯絡資訊
我第三題有地方沒改到 結束之後馬上就找到錯 我他媽的 幹 4500名 我要扣分了 我破防了 我破防了 我破防了 我破防 了 幹你娘 第一題 暴力 ```cpp class Solution { public: vector<int> constructTransformedArray(vector<int>& nums) { int n = nums.size(); vector<int> res(n,0); for(int i = 0 ; i < n ; i ++) { res[i] = (nums[((i+nums[i])%n+n)%n] ); } return res; } }; ``` 第二題 只要知道怎麼判斷矩形就好 我這題寫超級久 真的幹你娘 ```cpp class Solution { public: bool okrect(vector<vector<int>>& points , vector<int> test) { int x1 =INT_MAX; int y1 =INT_MIN; int x2 =INT_MIN; int y2 =INT_MAX; for(int j = 0 ; j < 4 ; j ++) { x1 = min(x1,points[j][0]); y1 = max(y1,points[j][1]); x2 = max(x2,points[j][0]); y2 = min(y2,points[j][1]); } if(test[0] >= x1 && test[0] <= x2 && test[1] <= y1 && test[1] >= y2 ) { return 0; } return 1; } int rect(vector<vector<int>>& points) { int x1 =INT_MAX; int y1 =INT_MIN; int x2 =INT_MIN; int y2 =INT_MAX; for(int j = 0 ; j < 4 ; j ++) { x1 = min(x1,points[j][0]); y1 = max(y1,points[j][1]); x2 = max(x2,points[j][0]); y2 = min(y2,points[j][1]); } for(int k = 0 ; k < 4 ; k ++) { if(points[k][0] > x1 && points[k][0] < x2 && points[k][1] < y1 && po ints[k][1] > y2 ) { return -1; } if(points[k][0] != x1 && points[k][0] != x2)return -1; if(points[k][1] != y1 && points[k][1] != y2)return -1; } return (x2-x1)*(y1-y2); } int maxRectangleArea(vector<vector<int>>& points) { int n = points.size(); int res = -1; for(int i = 0 ; i < n ; i ++) { for(int j = i+1 ; j < n ; j ++) { for(int k = j+1 ; k < n ; k ++) { for(int p = k+1 ; p < n ; p ++) { vector<vector<int>> test; test.push_back(points[i]); test.push_back(points[j]); test.push_back(points[k]); test.push_back(points[p]); int ok = 1; for(int o = 0 ; o < n ; o ++) { if(o == i || o == j || o == k || o == p )continue; if(!okrect(test,points[o]))ok = 0; } if(ok) { // for(int kk = 0 ; kk < 4 ; kk ++) // { // cout << test[kk][0] << " " << test[kk][1] << endl; // } // cout << rect(test) << " ======= " << endl; res = max(res,rect(test)); } } } } } if(res == 0)return -1; return res; } }; ``` 第三題 我破防了 我差10秒寫出來 用prefixsum + hash記i%k的最小sum ```cpp class Solution { public: long long maxSubarraySum(vector<int>& nums, int k) { long long res = LLONG_MIN; int n = nums.size(); int l = 0 ; int r = 0 ; long long now = 0 ; unordered_map<int,long long> save; vector<long long> paper(n+1,0); for(int i = 0 ; i < n ; i ++) { paper[i+1] = nums[i] + paper[i]; } for(int i = 0 ; i <= n ; i ++) { // for(auto k2 : save) // { // cout << k2.first << " " << k2.second << endl; // } // cout << "========== \n"; if(save.find(i%k) != save.end()) { // cout << paper[i] <<" - " << save[i%k] << endl ; res = max(paper[i] - save[i%k] , res); } if(save.find(i%k) == save.end()) { save[i%k] = paper[i]; } else { save[i%k] = min(save[i%k] , paper[i]); } // cout << "========== \n"; } if( res == LLONG_MIN)return -1; return res; } }; ``` -- 邊版的小母雞 — fuckchicken https://i.imgur.com/wglAuYR.jpg -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 49.216.41.176 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1733631383.A.72C.html
muscatsss: 有被當ㄇ 12/08 12:17
mrsonic: XD 12/08 12:18
oin1104: 這寫爽的 學校沒管 12/08 12:19
JIWP: 我比你高xd 12/08 12:21
Furina: 大師 12/08 12:24