我又打了一個猝死場....
不過猝死倒是沒有,就是自閉了.....
自閉過程如下:
當L_Y_T剛剛做完A,B打了一半時........
kr : 您C題會做嘛?
L_Y_T : 還沒看啊
kr : wucstdio 切到D題了.....
___
A
仔細考慮一下就會發現,這個玩意是三個一循環的,然後就是sb題了
#include <bits/stdc++.h>
#define int long long
using namespace std ;
int T ;
signed main () {
cin >> T ;
while(T--) {
int n , a , b ;
cin >> a >> b >> n ;
int c = n%3 ;
// cout << c <<endl ;
if(c == 2) {
cout << (a^b) << endl ;
}else if(c == 0) {
cout << a <<endl ;
}else {
cout << b << endl ;
}
}
return 0 ;
}
B
離散化一下,用桶一存,然後二分
題解思路:刪除子段後,前綴和後綴保持不變,可能長度爲0.讓我們修復不包含任何重複元素的前綴,並找到我們可以獲得的最大後綴而不重複元素。我們可以使用map / set來跟蹤元素。
#include<bits/stdc++.h>
#define int long long
#define maxn 2010
using namespace std ;
int n , num[maxn] ;
struct Node{
int lop , data ;
}LS[maxn] ;
bool cmp(Node x,Node y){
return x.data < y.data;
}
int Tong[maxn][maxn] ;
bool check(int Lenth) {
int flag = 1 ;
for (int l = 1 ; l + Lenth - 1 <= n ; l ++) {
int r = l + Lenth - 1 ;
bool F = 1 ;
for(int j = 1 ; j <= n ; j ++) {
if(Tong[n][j] - Tong[r][j] + Tong[l-1][j] > 1) { F = 0 ; break; }
}
if(F) return true ;
}
return false ;
}
signed main() {
cin >> n ;
for(int i = 1 ; i <= n ; i ++) { cin >> LS[i].data; LS[i].lop=i; }
sort(LS+1,LS+1+n,cmp);
int idx = 0 ;
LS[0].data = -1 ;
for(int i = 1 ; i <= n ; i ++){
if(LS[i].data != LS[i-1].data)
num[LS[i].lop] = ++idx ;
else
num[LS[i].lop] = idx ;
}
for(int i = 1 ; i <= n ; i ++) {
for(int j = 1 ; j <= n ; j ++)
Tong[i][j] = Tong[i-1][j];
Tong[i][num[i]]++ ;
}
int l = 0 , r = n ;
while(l <= r) {
int mid = (l+r) / 2 ;
if(check(mid))
r = mid - 1 ;
else
l = mid + 1 ;
}
cout<< l <<endl ;
return 0;
}
C
這道題我是真的不會啊QAQ
我就一句話....
張老闆 NB
思路
把這個n*n的玩意分成四個象限,然後先填充第一象限的,再分別複製到二三四象限,然後爲了避免重複分別加123,完結撒花
代碼
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <algorithm>
#define maxn 1010
using namespace std ;
int a[maxn][maxn] , n ;
int main() {
cin >> n ;
int tot = 0 ;
for(int i = 1 ; i <= n/2 ; i ++) {
for(int j = 1 ; j <= n/2 ; j ++,tot ++) {
a[i][j] = tot*4 + 1 ;
a[i][j+n/2] = tot*4 + 2 ;
a[i+n/2][j] = tot*4+3 ;
a[i+n/2][j+n/2] = tot*4 ;
}
}
for(int i = 1 ; i <= n ; i ++) {
for(int j = 1 ; j <= n ; j ++) {
cout << a[i][j] << " " ;
}
puts("") ;
}
return 0 ;
}