Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1559739
  • 博文数量: 327
  • 博客积分: 10000
  • 博客等级: 上将
  • 技术积分: 3556
  • 用 户 组: 普通用户
  • 注册时间: 2005-04-05 21:28
个人简介

东黑布衣,流浪幽燕。 真诚善良,值得信赖。

文章分类

全部博文(327)

我的朋友

分类: BSD

2018-03-15 20:52:43

题意:给你一个3*k大小的数组
找出一个序列使得至少其中两组k大小的数组的总和>500*k;

先排序找出最小的序列号。
再在剩下的2*k里随机

  1. #include "stdafx.h"
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. int a[200],c[200];
  5. void swap(int *a,int *b)
  6. {
  7.    int tmp;
  8.    tmp=*a;
  9.    *a=*b;
  10.    *b=tmp;
  11. }
  12. void quick_sort(int a[], int l, int r)//从大到小快速排序
  13. {
  14.    int i,j;
  15.    int val;
  16.    if(l<r){
  17.       i=l;
  18.       j=r;
  19.       val=a[l];
  20.       while(i<j){
  21.          while(i<j && a[j] <= val)
  22.             j--;
  23.          if(i<j){
  24.             a[i]=a[j];
  25.             i+=1;
  26.          }
  27.          while(i<j && a[i] > val)
  28.             i++;
  29.          if(i<j){
  30.             a[j]=a[i];
  31.             j-=1;
  32.          }
  33.       }
  34.       a[i]=val;
  35.       quick_sort(a,l,i-1);
  36.       quick_sort(a,i+1,r);
  37.    }
  38. }

  39. int main(int argc, char* argv[])
  40. {
  41.    int k;
  42.    int i;
  43.    int cnt1,cnt2,x,y;
  44.    if(NULL==freopen("poj2454i.txt","r",stdin))
  45.       return -1;
  46.    scanf("%d",&k);
  47.    for(i=1;i<=3*k;i++){
  48.       scanf("%d",&a[i]);
  49.       c[i]=i;
  50.    }
  51.    quick_sort(a,1,3*k);
  52.    while(1){
  53.       cnt1=0;
  54.       cnt2=0;
  55.       for(i=1;i<=k;i++)
  56.          cnt1 += a[c[i]];
  57.       for(i=k+1;i<= 2*k; i++)
  58.          cnt2 += a[c[i]];
  59.       if(cnt1 > k*500 && cnt2 > k*500){
  60.          for(i=1;i<=3*k;i++)
  61.             printf("%d\n",c[i]);
  62.          break;//找到一个匹配终止整个循环
  63.       }
  64.       x=rand()%k+1;
  65.       y=rand()%k+k+1;
  66.       swap(&c[x],&c[y]);
  67.    }
  68.    return 0;
  69. }
  70. 2
    510
    500
    500
    670
    400
    310
    1
  71. 4
  72. 3
  73. 2
  74. 5
  75. 6

也可以用搜索,不过我现在没想好怎么做。

阅读(1467) | 评论(0) | 转发(0) |
0

上一篇:[20180310 PRO] Map Completion

下一篇:LC0018

给主人留下些什么吧!~~