2017 Multi-University Training Contest - Team 7 hdu6127 hdu6130

2017 Multi-University Training Contest - Team 7

08  /  hdu6127    枚举

#include<bits/stdc++.h>
using namespace std;
#pragma comment(linker, "/STACK:102400000,102400000")
#define rep(i,a,b) for (int i=a; i<=b; ++i)
#define per(i,b,a) for (int i=b; i>=a; --i)
#define mes(a,b)  memset(a,b,sizeof(a))
#define INF 0x3f3f3f3f
#define MP make_pair
#define PB push_back
#define fi  first
#define se  second
typedef long long ll;
const int N = 50005;

struct P {
    double rat, x, y; ll val;
    friend bool operator < (P a, P b) {
        return a.rat<b.rat;
    }
}p[N], p1;
int n;
int main()
{
    int T;  scanf("%d", &T);
    while(T--)
    {
        scanf("%d", &n);
        int tot=0;
        ll  cnt1=0, cnt2=0, ans=0;
        p1 = {0,0,0,0};
        double xi, yi;   ll  val;
        rep(i,1,n)
        {
            scanf("%lf%lf%lld", &xi, &yi, &val);
            if(xi==0)  p1={0,xi,yi,val};
            else {
                p[++tot]={yi/xi,xi,yi,val};
                xi<0 ? cnt1+=val : cnt2+=val;
            }
        }
        if(p1.val) {
            ans = max(ans, max((cnt1+p1.val)*cnt2 , cnt1*(cnt2+p1.val)) );
            cnt2 += p1.val;
        }
        sort(p+1, p+1+tot);
        rep(i,1,tot)
        {
            if(p[i].x<0) cnt1 -= p[i].val,  cnt2 += p[i].val;
            else  cnt1 += p[i].val, cnt2 -= p[i].val;
            ans = max(ans, cnt1*cnt2);
        }
        printf("%lld\n", ans);
    }

    return 0;
}

 

11   /  hdu6130     打表

#include<bits/stdc++.h>
using namespace std;
#pragma comment(linker, "/STACK:102400000,102400000")
#define rep(i,a,b) for (int i=a; i<=b; ++i)
#define per(i,b,a) for (int i=b; i>=a; --i)
#define mes(a,b)  memset(a,b,sizeof(a))
#define INF 0x3f3f3f3f
#define MP make_pair
#define PB push_back
#define fi  first
#define se  second
typedef long long ll;
const int N = 10000005;

int n, a[N];
void Init()
{
    int len=1, pre=1, now;
    a[1]=1, a[2]=2;
    rep(ca,2,N-1)
    {
        if(len>=10000000) break;
        now = 1+(pre==1);
        rep(i,1,a[ca]) a[++len]=now;
        pre=now;
    }
}
int main()
{
    Init();
    int T;  scanf("%d", &T);
    while(T--)
    {
        scanf("%d", &n);
        printf("%d\n", a[n]);
    }

    return 0;
}

 

posted @ 2017-08-17 09:43  v9fly  阅读(135)  评论(0编辑  收藏  举报