zoukankan      html  css  js  c++  java
  • 2018 Multi-University Training Contest 1

    Maximum Multiple

    Problem Description
    Given an integer n, Chiaki would like to find three positive integers x, y and z such that: n=x+y+z, x∣n, y∣n, z∣n and xyz is maximum.
     

    Input
    There are multiple test cases. The first line of input contains an integer T (1≤T≤106), indicating the number of test cases. For each test case:
    The first line contains an integer n (1≤n≤106).
     

    Output
    For each test case, output an integer denoting the maximum xyz. If there no such integers, output −1 instead.
     

    Sample Input

    3
    1
    2
    3

     

    Sample Output

    -1
    -1

    1

    被三整除一定是三个数相等,其次是被2整除且被四整除的数可取

    s=2x1;

    s=4x2;

    s=x1+2x2

    #include <iostream>
    #include <algorithm>
    #include <cstring>
    #include <cstdio>
    #include <vector>
    #include <queue>
    #include <stack>
    #include <cstdlib>
    #include <iomanip>
    #include <cmath>
    #include <cassert>
    #include <ctime>
    #include <map>
    #include <set>
    using namespace std;
    #pragma comment(linker, "/stck:1024000000,1024000000")
    #define lowbit(x) (x&(-x))
    #define max(x,y) (x>=y?x:y)
    #define min(x,y) (x<=y?x:y)
    #define MAX 100000000000000000
    #define MOD 1000000007
    #define pi acos(-1.0)
    #define ei exp(1)
    #define PI 3.1415926535897932384626433832
    #define ios() ios::sync_with_stdio(true)
    #define INF 0x3f3f3f3f
    #define mem(a) ((a,0,sizeof(a)))
    typedef long long ll;
    ll n,t;
    int main()
    {
        scanf("%lld",&t);
        while(t--)
        {
            scanf("%lld",&n);
            if(n<=2) {printf("-1
    ");continue;}
            ll k=n/3;
            if(n%3==0)
                printf("%lld
    ",k*k*k);
            else
            {
                ll k=n/2;
                ll m=k/2;
                if(m+k+m==n) printf("%lld
    ",m*m*k);
                else printf("-1
    ");
            }
        }
        return 0;
    }

    Triangle Partition

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 132768/132768 K (Java/Others)
    Total Submission(s): 0    Accepted Submission(s): 0
    Special Judge

    Problem Description
    Chiaki has 3n points p1,p2,…,p3n. It is guaranteed that no three points are collinear.
    Chiaki would like to construct n disjoint triangles where each vertex comes from the 3n points.
     

    Input
    There are multiple test cases. The first line of input contains an integer T, indicating the number of test cases. For each test case:
    The first line contains an integer n (1≤n≤1000) -- the number of triangle to construct.
    Each of the next 3n lines contains two integers xi and yi (−109≤xi,yi≤109).
    It is guaranteed that the sum of all n does not exceed 10000.
     

    Output
    For each test case, output n lines contain three integers ai,bi,ci (1≤ai,bi,ci≤3n) each denoting the indices of points the i-th triangle use. If there are multiple solutions, you can

    output any of them.
     

    Sample Input

    1
    1
    1 2
    2 3
    3 5

     

    Sample Output

    1 2 3

    #include <iostream>
    #include <algorithm>
    #include <cstring>
    #include <cstdio>
    #include <vector>
    #include <queue>
    #include <stack>
    #include <cstdlib>
    #include <iomanip>
    #include <cmath>
    #include <cassert>
    #include <ctime>
    #include <map>
    #include <set>
    using namespace std;
    #pragma comment(linker, "/stck:1024000000,1024000000")
    #pragma GCC diagnostic error "-std=c++11"
    #define lowbit(x) (x&(-x))
    #define max(x,y) (x>=y?x:y)
    #define min(x,y) (x<=y?x:y)
    #define MAX 100000000000000000
    #define MOD 1000000007
    #define esp 1e-9
    #define pi acos(-1.0)
    #define ei exp(1)
    #define PI 3.1415926535897932384626433832
    #define ios() ios::sync_with_stdio(true)
    #define INF 0x3f3f3f3f
    #define mem(a) (memset(a,0,sizeof(a)))
    int dcmp(double x){return fabs(x)<esp?0:x<0?-1:1;}
    typedef long long ll;
    struct node
    {
        int x,y,z;
        bool operator<(const node &a)const{
            return a.x==x?a.y>y:a.x>x;
        }
    }e[10006];
    int n,t;
    int main()
    {
        scanf("%d",&t);
        while(t--)
        {
            scanf("%d",&n);
            for(int i=0;i<3*n;i++)
            {
                scanf("%d%d",&e[i].x,&e[i].y);
                e[i].z=i+1;
            }
            sort(e,e+3*n);
            for(int i=0;i<3*n;i++)
            {
                if(i%3==2) printf("%d
    ",e[i].z);
                else printf("%d ",e[i].z);
            }
        }
        return 0;
    }

    Distinct Values

    Problem Description
    Chiaki has an array of n positive integers. You are told some facts about the array: for every two elements ai and aj in the subarray al..r (l≤i<j≤r), ai≠aj holds.
    Chiaki would like to find a lexicographically minimal array which meets the facts.
     

    Input
    There are multiple test cases. The first line of input contains an integer T, indicating the number of test cases. For each test case:

    The first line contains two integers n and m (1≤n,m≤105) -- the length of the array and the number of facts. Each of the next m lines contains two integers li and ri (1≤li≤ri≤n).

    It is guaranteed that neither the sum of all n nor the sum of all m exceeds 106.
     

    Output
    For each test case, output n integers denoting the lexicographically minimal array. Integers should be separated by a single space, and no extra spaces are allowed at the end of lines.
     

    Sample Input

    3
    2 1
    1 2
    4 2
    1 2
    3 4
    5 2
    1 3
    2 4

     

    Sample Output

    1 2
    1 2 1 2
    1 2 3 1 1
    区间排序,求最长区间

    #include <iostream>
    #include <algorithm>
    #include <cstring>
    #include <cstdio>
    #include <vector>
    #include <queue>
    #include <stack>
    #include <cstdlib>
    #include <iomanip>
    #include <cmath>
    #include <cassert>
    #include <ctime>
    #include <map>
    #include <set>
    using namespace std;
    #pragma comment(linker, "/stck:1024000000,1024000000")
    #pragma GCC diagnostic error "-std=c++11"
    #define lowbit(x) (x&(-x))
    #define max(x,y) (x>=y?x:y)
    #define min(x,y) (x<=y?x:y)
    #define MAX 100000000000000000
    #define MOD 1000000007
    #define esp 1e-9
    #define pi acos(-1.0)
    #define ei exp(1)
    #define PI 3.1415926535897932384626433832
    #define ios() ios::sync_with_stdio(true)
    #define INF 0x3f3f3f3f
    #define mem(a) (memset(a,0,sizeof(a)))
    int dcmp(double x){return fabs(x)<esp?0:x<0?-1:1;}
    typedef long long ll;
    int n,m,t,ans[100006];
    struct node
    {
        int l,r,id;
        friend bool operator <(node a,node b)
        {
            return a.l==b.l?a.r>b.r:a.l<b.l;
        }
    }q[100006];
    set<int>s;
    int main()
    {
        scanf("%d",&t);
        while(t--)
        {
            s.clear();
            scanf("%d%d",&n,&m);
            for(int i=1;i<=n;i++)
                s.insert(i);
            for(int i=1;i<=m;i++)
                scanf("%d%d", &q[i].l, &q[i].r);
            sort(q+1, q+m+1);
            int r=0,l=1;
            for(int i=1;i<=m;i++)
            {
                if(q[i].r <= r)
                    continue;
                if(q[i].l > r)
                {
                    while(r<q[i].l)
                        ans[++r]=1;
                    while(l<q[i].l) s.insert(ans[l++]);
                    if((*s.begin())==1) s.erase(s.begin());
                    while(r<q[i].r)
                    {
                        ans[++r]=(*s.begin());
                        s.erase(s.begin());
                    }
                }
                else if(q[i].l<=r)
                {
                    while(l<q[i].l) s.insert(ans[l++]);
                    while(r<q[i].r)
                    {
                        ans[++r]=(*s.begin());
                        s.erase(s.begin());
                    }
                }
            }
            while(r<n)
                ans[++r]=1;
            for(int i=1;i<=n;i++)
                printf("%d%c", ans[i], i==n?'
    ':' ');
        }
        return 0;
    }

    Time Zone

    Problem Description
    Chiaki often participates in international competitive programming contests. The time zone becomes a big problem.
    Given a time in Beijing time (UTC +8), Chiaki would like to know the time in another time zone s.
     

    Input
    There are multiple test cases. The first line of input contains an integer T (1≤T≤106), indicating the number of test cases. For each test case:
    The first line contains two integers a, b (0≤a≤23,0≤b≤59) and a string s in the format of "UTC+X'', "UTC-X'', "UTC+X.Y'', or "UTC-X.Y'' (0≤X,X.Y≤14,0≤Y≤9).
     

    Output
    For each test, output the time in the format of hh:mm (24-hour clock).
     

    Sample Input

    3
    11 11 UTC+8
    11 12 UTC+9
    11 23 UTC+0

     

    Sample Output

    11:11
    12:12
    03:23

    注意上溢和下溢

    #include <iostream>
    #include <algorithm>
    #include <cstring>
    #include <cstdio>
    #include <vector>
    #include <queue>
    #include <stack>
    #include <cstdlib>
    #include <iomanip>
    #include <cmath>
    #include <cassert>
    #include <ctime>
    #include <map>
    #include <set>
    using namespace std;
    #pragma comment(linker, "/stck:1024000000,1024000000")
    #pragma GCC diagnostic error "-std=c++11"
    #define lowbit(x) (x&(-x))
    #define max(x,y) (x>=y?x:y)
    #define min(x,y) (x<=y?x:y)
    #define MAX 100000000000000000
    #define MOD 1000000007
    #define esp 1e-9
    #define pi acos(-1.0)
    #define ei exp(1)
    #define PI 3.1415926535897932384626433832
    #define ios() ios::sync_with_stdio(true)
    #define INF 0x3f3f3f3f
    #define mem(a) (memset(a,0,sizeof(a)))
    int dcmp(double x){return fabs(x)<esp?0:x<0?-1:1;}
    typedef long long ll;
    int a,b,n,m;
    char s[25];
    int t;
    int main()
    {
        scanf("%d",&t);
        while(t--)
        {
            scanf("%d%d",&n,&m);
            n=(n+16)%24;
            scanf("%s",s);
            bool flag=0;
            a=0,b=0;
            for(int i=4;s[i];i++)
            {
                if(s[i]=='.'){flag=1;continue;}
                if(!flag) a=a*10+(int)(s[i]-'0');
                else b=b*10+(int)(s[i]-'0');
            }
            b=b*6;
            if(s[3]=='+')
            {
                    m+=b;
                    if(m>=60){
                        m%=60;
                        n++;
                    }
                    n+=a;
                    n%=24;
            }
            else
            {
                m-=b;
                if(m<0){
                    m+=60;
                    n--;
                }
                n-=a;
                n=(n+24)%24;
            }
            printf("%02d:%02d
    ",n,m);
        }
        return 0;
    }

     

  • 相关阅读:
    css3常见水平垂直居中的方法
    小程序iPhonex适配
    css3实现常用效果
    匿名函数自调用函数
    parseInt ()和parseFloat()
    作用域
    可变传参
    函数调用实例:学生管理系统(前面的优化版),可以弹出窗口。
    java基础:学员状态查询
    java基础:模拟ATM取款机
  • 原文地址:https://www.cnblogs.com/shinianhuanniyijuhaojiubujian/p/9355760.html
Copyright © 2011-2022 走看看