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=