【2017 Multi-University Training Contest - Team 6】Inversion
【链接】h在这里写链接
【题意】
给出一个序列,求2~n每一个数,下标不是这个数倍数的最大值是什么?
【题解】
把a数组从大到小排序.
每个位置i,逆序枚举b数组,找到第一个对应下标不是i的倍数的,直接输出
【错的次数】
0
【反思】
在这了写反思
【代码】
#include <bits/stdc++.h> #define ll long long #define LL long long #define INF 0x3f3f3f3f #define ll_INF 0x3f3f3f3f3f3f3f3f #define mem(shuzu,value) memset(shuzu,value,sizeof shuzu) #define mem0(shuzu) memset(shuzu,0,sizeof shuzu) #define lson l, mid, rt << 1 #define rson mid + 1, r, rt << 1 | 1 using namespace std; #define for0(i,n) for(int i=0;i<n;i++) #define read(x) scanf("%d",&x) const int M = 100000+20; const int M2 = 1000+20; const int mod = 998244353; int n,ans=0,m,k,t; struct node { int xuhao; ll d; } num[M]; bool cmp(node a,node b) { return a.d>b.d; } main() { ios::sync_with_stdio(false); cin>>t; while(t--) { cin>>n; for(int i=0; i<n; i++) { cin>>num[i].d; num[i].xuhao=i+1; } sort(num,num+n,cmp); for(int j=2; j<=n; j++) { if(j>2)cout<<" "; for(int i=0; i<n; i++) { //cout<<num[i].xuhao<<endl; if(num[i].xuhao%j!=0) { cout<<num[i].d; break; } } } cout<<endl; } }