HDU6098-2017多校6-贪心&水-Inversion

来源:互联网 发布:bugclose 源码下载 编辑:程序博客网 时间:2024/06/06 04:03

http://acm.hdu.edu.cn/showproblem.php?pid=6098
给定一个a数组,问你得到b数组。
条件 b【i】=max a[j] i不能整除j
从大到小判断,判断j是不是i的倍数,如果不是的话,就是他了。

#include <bits/stdc++.h>using namespace std;const int maxn=1e6+5;vector<int>v;struct Node{   int num;    int k;};Node a[maxn];int b[maxn];bool cmp2(Node a,Node b){     return a.num<b.num;}int main(){    int t;    int m;    scanf("%d",&t);    while(t--){          scanf("%d",&m);          v.clear();          for(int i=1;i<=m;i++){              scanf("%d",&a[i].num);              b[i]=a[i].num;              a[i].k=i;              }              sort(a+1,a+m+1,cmp2);              //cout<<a[m].num<<endl;              for(int i=2;i<=m;i++){                  for(int j=m;j>=1;j--){                      bool flag=false;                      int sss=a[j].k;                      int ttt=i;                      if(sss%ttt!=0)                      {                              v.push_back(b[sss]);                          break;}                  }              }              for(int i=0;i<v.size();i++){                  if(i==0)                    printf("%d",v[i]);                  else                    printf(" %d",v[i]);              }               printf("\n");    }    return 0;}
原创粉丝点击