程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> Codeforces Round #274 (Div. 2) 解題報告

Codeforces Round #274 (Div. 2) 解題報告

編輯:C++入門知識

Codeforces Round #274 (Div. 2) 解題報告


 

這次自己又只能做出4道題來。

A題:Expression

水題。

枚舉六種情況求最大值即可。

代碼如下:

 

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include
#include 
#include 

using namespace std;
#define LL __int64
int main()
{
    LL a, b, c, d[10];
    while(scanf(%I64d%I64d%I64d,&a,&b,&c)!=EOF)
    {
        d[0]=a*b*c;
        d[1]=(a+b)*c;
        d[2]=a+b+c;
        d[3]=a*(b+c);
        d[4]=a+b*c;
        d[5]=a*b+c;
        sort(d,d+6);
        printf(%I64d
,d[5]);
    }
    return 0;
}

B題:Towers

 

水題。

每次都是將最多的拿出一個給最少的,直到最大的與最少的相差小於或等於1.

代碼如下:

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include
#include 
#include 

using namespace std;
#define LL __int64
struct node
{
    int x, num;
}fei[1000];
int cmp(node x, node y)
{
    return x.x

C題:Exams

 

還是水。。小貪心

小貪心。先按標記日期排個序,然後掃一遍即可,能用小的就優先考慮小的。

代碼如下:

 

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include
#include 
#include 

using namespace std;
#define LL __int64
struct node
{
    int x, y;
}fei[6000];
int cmp(node x, node y)
{
    if(x.x==y.x)
        return x.y=k)
            {
                k=fei[i].y;
            }
            else
            {
                k=fei[i].x;
            }
        }
        printf(%d
,k);
    }
    return 0;
}

D題:

 

還是水。。。。二分。

分別考慮4種情況,x,y,x+y,y-x。然後用二分找差值為這四個數的。

代碼如下:

 

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include
#include 
#include 

using namespace std;
#define LL __int64
int a[110000];
int bin_search(int x, int y, int high)
{
    int low=0, mid;
    while(low<=high)
    {
        mid=low+high>>1;
        if(y-a[mid]==x) return 1;
        else if(y-a[mid]>x) low=mid+1;
        else high=mid-1;
    }
    return 0;
}
int main()
{
    int n, l, x, y, i, j, k, flag1, flag2;
    while(scanf(%d%d%d%d,&n,&l,&x,&y)!=EOF)
    {
        flag1=flag2=0;
        for(i=0; i=0||a[i]+x<=l))
                        {
                            flag=1;
                            break;
                        }
                    }
                    if(flag&&a[i]-y>=0)
                    {
                        printf(1
%d
,a[i]-y);
                    }
                    else if(flag&&a[i]+x<=l)
                    {
                        printf(1
%d
,a[i]+x);
                    }
                    else
                    {
                        printf(2
%d %d
,x,y);
                    }
                }
            }
        }
    }
    return 0;
}


 

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved