2015年湖南省第十一届大学生程序设计大赛

本文作者回顾了2015年湖南省第十一届大学生程序设计大赛,指出题目中既有简单水题也有难题,自身在算法、思维和状态方面存在不足。文章详细分析了部分题目,如A题的枚举搜索、E题的图论问题、I题的异或运算等,强调了维护信息和避免盲目枚举的重要性。
摘要由CSDN通过智能技术生成

2015年湖南省第十一届大学生程序设计大赛

 

这两天做了一套去年的省赛题,相比今年省赛题去年这一套水题太多,但是难题完全下不了手…..A题、G题、K题都做不出来,本来想找标程学习下的,但是网上连标程都没有……

做完之后给我的感觉就是差距还是很大很大,11个题我用了整整一天半才写完会做的8题,主要是中间的一两个题一直卡住了,而且太弱了,有3题想了也没做出…..

我的手速,思维,状态都需要很大的提升才行。

 

A - Aerial Tramway:

这题想了一下,感觉像是个枚举的搜索题,但写的时候没写出来…..



B - 大还是小?

这题是在太水…..模拟和大数都可以…

#include <cstdio>
#include <cstring>
#include <algorithm>
#define INF 0x3f3f3f3f
#define LL long long

using namespace std;

char s[110], str[110];

int check()
{
    int l = strlen(s), L = strlen(str);
    int a = find(s, s+l, '.')-s, b = find(str, str+L, '.')-str;
    if (a != b) return a>b;
    int len = max(l, L);
    for (int i = 0; i < len; i++){
        if (i >= l) s[i] = '0';
        if (i >= L) str[i] = '0';
        if (s[i] != str[i]) return s[i]>str[i];
    }
    return 2;
}

int main()
{
    int k = 0;
    while (~scanf("%s %s", s, str)){
        if (!check()) printf("Case %d: Smaller\n", ++k);
        else if (check() & 1)  printf("Case %d: Bigger\n", ++k);
        else printf("Case %d: Same\n", ++k);
        memset(s, 0, sizeof(s));
        memset(str, 0, sizeof(str));
    }
    return 0;
}

C - 多边形的公共部分

这个题目是属于计算几何的部分,没办法,从没学过几何的知识,学了下多边形面积并的知识+参考别人的代码才知道。

#include <cstdio>
#include <cstring>
#include <algorithm>
#include <vector>
#include <utility>
#include <queue>
#include <iostream>
#include <functional>
#define INF 0x3f3f3f3f
#define LL long long
#define eps 1e-8
#include <cmath>
#define pi acos(-1.0)
using namespace std;
int dcmp(double x){
    if(fabs(x)<eps)return 0;
    return x>0?1:-1;
}
struct Point{
    double x,y;
    Point(){}
    Point(double _x,double _y):x(_x),y(_y){}
};
Point operator + (Point a,Point b){return Point(a.x+b.x,a.y+b.y);}
Point operator - (Point a,Point b){return Point(a.x-b.x,a.y-b.y);}
Point operator * (Point a,double p){return Point(a.x*p,a.y*p);}
Point operator / (Point a,double p){return Point(a.x/p,a.y/p);}
bool operator < (const Point &a,const Point &b){return a.x<b.x||(a.x==b.x&&a.y<b.y);}
bool operator ==(const Point &a,const Point &b){return dcmp(a.x-b.x)==0&&dcmp(a.y-b.y)==0;}
double Dot(Point a,Point b){return a.x*b.x+a.y*b.y;}
double Length(Point a){return sqrt(Dot(a,a));}
double Angle(Point a,Point b){return acos(Dot(a,b)/Length(a)/Length(b));}
double angle(Point a){return atan2(a.y,a.x);}
double Cross(Point a,Point b){return a.x*b.y-a.y*b.x;}
Point Normal(Point x){return Point(-x.y,x.x)/Length(x);}
Point vecunit(Point x){return Point(x)/Length(x);}
Point GetLineINtersection(Point p,Point v,Point q,Point w){
    Point u=p-q;
    double t=Cross(w,u)/Cross(v,w);
    return p+v*t;
}
bool Onsegment(Point p,Point p1, Point p2){return dcmp(Cross(p1-p,p2-p))==0&&dcmp(Dot(p1-p,p2-p))<0;}
struct Line{
    Point p,v;
    double ang;
    Line(){}
    Line(Point _p,Point _v):p(_p),v(_v){ang=atan2(v.y,v.x);}
    Point point(double a){return p+(v*a);}
    bool operator < (const Line &L)const{return ang<L.ang;}
};
Point GetLineIntersection(Line a,Line b){return GetLineINtersection(a.p,a.v,b.p,b.v);}
double Area(vector<Point> p){
    double ans=0;
    int n=p.size();
    for(int i=
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值