排序
时间限制: 1 Sec 内存限制: 256 MB提交: 80 解决: 52
[提交][状态][讨论版]
题目描述
输入
输出
样例输入
6 1 2 4 3 6 5
样例输出
2
提示
图
时间限制: 1 Sec 内存限制: 256 MB提交: 173 解决: 48
[提交][状态][讨论版]
题目描述
输入
输出
样例输入
2 4 URUU UUUU BRUR BRUU 4 UUBB RURU UUUU URBU
样例输出
T N
提示
或
时间限制: 1 Sec 内存限制: 256 MB提交: 26 解决: 13
[提交][状态][讨论版]
题目描述
输入
输出
样例输入
3 101
样例输出
37
提示
个人感受:这套题目,第一题卡输入,第二题爆10分,第三题不知道为什么0分,OJ上可以有30分的??,奇怪,然后就70+10+0=80分
第一题,证明:因为一个数,如果后面有比它小的数,那么不交换它自己的话,是无法改变相对次序的,因此只要后面有比它小的数,就必须交换一次。
第二题,我打了压位,压了64为,即LL压位,最高复杂度是2000^3*5/64,但是可以过,本来是去裸打60分的。
第三题,考试直接模拟暴力,结果不知道为什么,OJ上30分,然后没分。
第二题(错误原因):因为每次A移的时候,B没移,B时也一样,然后cnt还直接爆炸了,......,这样样例真的水。
T1
1 #include<cstdio> 2 #include<cmath> 3 #include<cstring> 4 #include<iostream> 5 #include<algorithm> 6 #define N 5000007 7 using namespace std; 8 9 int n,ans=0; 10 int a[N],p[N]; 11 12 int main() 13 { 14 15 16 scanf("%d",&n); 17 for (int i=1;i<=n;i++) 18 scanf("%d",&a[i]); 19 20 int tail=1; 21 p[tail]=a[n]; 22 for (int i=n-1;i>=1;i--) 23 { 24 while(tail>=1&&a[i]<p[tail]) 25 tail--; 26 p[++tail]=a[i]; 27 if (tail!=1) ans++; 28 } 29 30 printf("%d\n",ans); 31 }
T2
1 #include<cstdio> 2 #include<iostream> 3 #include<algorithm> 4 #include<cstring> 5 #include<cmath> 6 #define N 2027 7 #define LL long long 8 using namespace std; 9 10 int cas,n,cnt; 11 int boo[N][N]; 12 LL A[N][2027/50],B[N][2027/50]; 13 char ch[N]; 14 15 bool check() 16 { 17 for (int i=1;i<=n;i++) 18 for (int j=1;j<=n;j++) 19 if (boo[i][j]==1) 20 { 21 for (int k=1;k<=cnt;k++) 22 if ((A[i][k]&A[j][k])!=A[j][k]) return false; 23 } 24 else if (boo[i][j]==2) 25 { 26 for (int k=1;k<=cnt;k++) 27 if ((B[i][k]&B[j][k])!=B[j][k]) return false; 28 } 29 return true; 30 } 31 32 int main() 33 { 34 35 36 scanf("%d",&cas); 37 while(cas--) 38 { 39 memset(A,0,sizeof(A)); 40 memset(B,0,sizeof(B)); 41 scanf("%d",&n); 42 for (int i=1;i<=n;i++) 43 { 44 scanf("%s",ch+1); 45 cnt=1; 46 for (int j=1;j<=n;j++) 47 { 48 if (ch[j]=='R') 49 { 50 A[i][cnt]=(A[i][cnt]<<1)+1; 51 B[i][cnt]<<=1; 52 boo[i][j]=1; 53 } 54 else if (ch[j]=='B') 55 { 56 B[i][cnt]=(B[i][cnt]<<1)+1; 57 A[i][cnt]<<=1; 58 boo[i][j]=2; 59 } 60 else 61 { 62 boo[i][j]=0; 63 A[i][cnt]<<=1; 64 B[i][cnt]<<=1; 65 } 66 if (j%62==0) cnt++; 67 } 68 } 69 if (check()) printf("T\n"); 70 else printf("N\n"); 71 } 72 }