首页 > 其他分享 >La Salle-Pui Ching Programming Challenge 培正喇沙編程挑戰賽 2017

La Salle-Pui Ching Programming Challenge 培正喇沙編程挑戰賽 2017

时间:2022-10-24 15:34:45浏览次数:52  
标签:Salle ch return Pui La int double ll define


A Ambiguous Dates

贪心,从小到大取日期

#include<bits/stdc++.h> 
using namespace std;
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
For(j,m-1) cout<<a[i][j]<<' ';\
cout<<a[i][m]<<endl; \
}
#pragma
#define
#define
#define
typedef long long ll;
typedef long double ld;
typedef unsigned long long ull;
ll mul(ll a,ll b){return (a*b)%F;}
ll add(ll a,ll b){return (a+b)%F;}
ll sub(ll a,ll b){return ((a-b)%F+F)%F;}
void upd(ll &a,ll b){a=(a%F+b%F)%F;}
inline int read()
{
int x=0,f=1; char ch=getchar();
while(!isdigit(ch)) {if (ch=='-') f=-1; ch=getchar();}
while(isdigit(ch)) { x=x*10+ch-'0'; ch=getchar();}
return x*f;
}
#define
ll d[MAXN];
ll Abs(ll x){return max(x,-x);}
int main()
{
// freopen("A.in","r",stdin);
// freopen(".out","w",stdout);
int n=read();
For(i,n) d[i]=read();
ll ans=0;
sort(d+1,d+1+n);ll c=0;
For(i,n) {
ll p=d[i];
if (p>i) {
ans+=min((ll)n-i,d[i]-i);
}
}


cout<<2*ans<<endl;
return 0;
}

B Bacteria Experiment

求树直径

#include<bits/stdc++.h> 
using namespace std;
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
For(j,m-1) cout<<a[i][j]<<' ';\
cout<<a[i][m]<<endl; \
}
#pragma
#define
#define
#define
typedef long long ll;
typedef long double ld;
typedef unsigned long long ull;
ll mul(ll a,ll b){return (a*b)%F;}
ll add(ll a,ll b){return (a+b)%F;}
ll sub(ll a,ll b){return ((a-b)%F+F)%F;}
void upd(ll &a,ll b){a=(a%F+b%F)%F;}
inline int read()
{
int x=0,f=1; char ch=getchar();
while(!isdigit(ch)) {if (ch=='-') f=-1; ch=getchar();}
while(isdigit(ch)) { x=x*10+ch-'0'; ch=getchar();}
return x*f;
}
#define
vi e[MAXN];
int dep[MAXN]={};
void dfs(int x,int fa) {
dep[x]=dep[fa]+1;
for(auto v:e[x]) {
if (v!=fa) dfs(v,x);
}
}
int main()
{
// freopen("B.in","r",stdin);
// freopen(".out","w",stdout);
int n=read();
For(i,n-1) {
int x=read(),y=read();
e[x].pb(y);e[y].pb(x);
}
dfs(1,0);
int mx=max_element(dep+1,dep+1+n)-dep;
MEM(dep);
dfs(mx,0);
int l=*max_element(dep+1,dep+1+n);
int ans=0,dis=1; --l;
while(dis<l) ans++,dis<<=1;
cout<<ans<<endl;
return 0;
}

C Cheering

签到

#include<bits/stdc++.h> 
using namespace std;
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
For(j,m-1) cout<<a[i][j]<<' ';\
cout<<a[i][m]<<endl; \
}
#pragma
#define
#define
#define
typedef long long ll;
typedef long double ld;
typedef unsigned long long ull;
ll mul(ll a,ll b){return (a*b)%F;}
ll add(ll a,ll b){return (a+b)%F;}
ll sub(ll a,ll b){return ((a-b)%F+F)%F;}
void upd(ll &a,ll b){a=(a%F+b%F)%F;}
inline int read()
{
int x=0,f=1; char ch=getchar();
while(!isdigit(ch)) {if (ch=='-') f=-1; ch=getchar();}
while(isdigit(ch)) { x=x*10+ch-'0'; ch=getchar();}
return x*f;
}
char s[12345];
int main()
{
// freopen("E.in","r",stdin);
// freopen(".out","w",stdout);
cin>>s;
int n=strlen(s),p=0;
Rep(i,n-2) {
if (s[i]=='L'&&s[i+1]=='S'&&s[i+2]=='C') ++p;
}
Rep(i,n-3) {
if (s[i]=='P'&&s[i+1]=='C'&&s[i+2]=='M'&&s[i+3]=='S') --p;
}
if (!p) puts("Tie");else puts(p>0?"LSC":"PCMS");

return 0;
}

H Hit!

给2个圆保证存在不为0的公共部分,求公共部分的任意一个点
分2种情况,内含,内切(此时解取1个圆的圆心),相交圆心连线上的一个点。

#include<bits/stdc++.h>
using namespace std;
#define For(i,n) for(int i=1;i<=n;i++)
#define Fork(i,k,n) for(int i=k;i<=n;i++)
#define Rep(i,n) for(int i=0;i<n;i++)
#define ForD(i,n) for(int i=n;i;i--)
#define ForkD(i,k,n) for(int i=n;i>=k;i--)
#define RepD(i,n) for(int i=n;i>=0;i--)
#define Forp(x) for(int p=Pre[x];p;p=Next[p])
#define Forpiter(x) for(int &p=iter[x];p;p=Next[p])
#define Lson (o<<1)
#define Rson ((o<<1)+1)
#define MEM(a) memset(a,0,sizeof(a));
#define MEMI(a) memset(a,127,sizeof(a));
#define MEMi(a) memset(a,128,sizeof(a));
#define INF (2139062143)
#define F (100000007)
#define pb push_back
#define mp make_pair
#define fi first
#define se second
#define vi vector<int>
#define pi pair<int,int>
#define SI(a) ((a).size())
#define ALL(x) (x).begin(),(x).end()
typedef long long ll;
typedef long double ld;
typedef unsigned long long ull;
ll mul(ll a,ll b){return (a*b)%F;}
ll add(ll a,ll b){return (a+b)%F;}
ll sub(ll a,ll b){return (a-b+llabs(a-b)/F*F+F)%F;}
void upd(ll &a,ll b){a=(a%F+b%F)%F;}
int read()
{
int x=0,f=1; char ch=getchar();
while(!isdigit(ch)) {if (ch=='-') f=-1; ch=getchar();}
while(isdigit(ch)) { x=x*10+ch-'0'; ch=getchar();}
return x*f;
}
ll sqr(ll a){return a*a;}
ld sqr(ld a){return a*a;}
double sqr(double a){return a*a;}
const double eps=1e-10;
int dcmp(double x) {
if (fabs(x)<eps) return 0; else return x<0 ? -1 : 1;
}
ld PI = 3.141592653589793238462643383;
class P{
public:
double x,y;
P(double x=0,double y=0):x(x),y(y){}
friend ld dis2(P A,P B){return sqr(A.x-B.x)+sqr(A.y-B.y); }
friend ld Dot(P A,P B) {return A.x*B.x+A.y*B.y; }
friend ld Length(P A) {return sqrt(Dot(A,A)); }
friend ld Angle(P A,P B) {
if (dcmp(Dot(A,A))==0||dcmp(Dot(B,B))==0||dcmp(Dot(A-B,A-B))==0) return 0;
return acos(max((ld)-1.0, min((ld)1.0, Dot(A,B) / Length(A) / Length(B) )) );
}

friend P operator- (P A,P B) { return P(A.x-B.x,A.y-B.y); }
friend P operator+ (P A,P B) { return P(A.x+B.x,A.y+B.y); }
friend P operator* (P A,double p) { return P(A.x*p,A.y*p); }
friend P operator/ (P A,double p) { return P(A.x/p,A.y/p); }
friend bool operator< (const P& a,const P& b) {return dcmp(a.x-b.x)<0 ||(dcmp(a.x-b.x)==0&& dcmp(a.y-b.y)<0 );}

};
P read_point() {
P a;
scanf("%lf%lf",&a.x,&a.y);
return a;
}
bool operator==(const P& a,const P& b) {
return dcmp(a.x-b.x)==0 && dcmp(a.y-b.y) == 0;
}
typedef P V;

double Cross(V A,V B) {return A.x*B.y - A.y*B.x;}

double DistanceToLine(P p,P A,P B) {
V v1 = B-A, v2 = p-A;
return fabs(Cross(v1,v2))/Length(v1);
}
P GetLineProjection(P p,P A,P B) {
V v=B-A;
return A+v*(Dot(v,p-A)/Dot(v,v));
}
struct C{
P c;
double r,x,y;
C(){}
C(P c,double r):c(c),r(r),x(c.x),y(c.y){}
P point(double a) {
return P(c.x+cos(a)*r,c.y+sin(a)*r);
}
};

struct Line{
P p;
V v;
double ang;
Line(){}
Line(P p,V v):p(p),v(v) {ang=atan2(v.y,v.x); }
bool operator<(const Line & L) const {
return ang<L.ang;
}
P point(double a) {
return p+v*a;
}
};
int getLineCircleIntersection(Line L,C cir,double &t1,double &t2,vector<P> & sol) {
if (dcmp(DistanceToLine(cir.c,L.p,L.p+L.v)-cir.r)==0) {
P A=GetLineProjection(cir.c,L.p,L.p+L.v);
sol.pb(A);
t1 = (A-L.p).x / L.v.x;
return 1;
}

double a = L.v.x, b = L.p.x - cir.c.x, c = L.v.y, d= L.p.y - cir.c.y;
double e = a*a+c*c, f = 2*(a*b + c*d), g = b*b+d*d-cir.r*cir.r;
double delta = f*f - 4*e*g;
if (dcmp(delta)<0) return 0;
else if (dcmp(delta)==0) {
t1 = t2 = -f / (2*e); sol.pb(L.point(t1));
return 1;
}
t1 = (-f - sqrt(delta)) / (2*e); sol.pb(L.point(t1));
t2 = (-f + sqrt(delta)) / (2*e); sol.pb(L.point(t2));
return 2;
}
double angle(V v) {return atan2(v.y,v.x);}
int getCircleCircleIntersection(C C1,C C2,vector<P>& sol) {
double d = Length(C1.c-C2.c);
if (dcmp(d)==0) {
if (dcmp(C1.r - C2.r)==0) return -1; //2圆重合
return 0;
}
if (dcmp(C1.r+C2.r-d)<0) return 0;
if (dcmp(fabs(C1.r-C2.r)-d)>0) return 0;

double a = angle(C2.c-C1.c);
double da = acos((C1.r*C1.r+d*d - C2.r*C2.r)/ (2*C1.r*d));
P p1 = C1.point(a-da), p2 = C1.point(a+da);
sol.pb(p1);
if (p1==p2) return 1;
sol.pb(p2);
return 2;
}

int main()
{
// freopen("H.in","r",stdin);
// freopen(".out","w",stdout);
double x,y,r,a,b,c;
cin>>x>>y>>r>>a>>b>>c;
P p1=P(x,y),p2=P(a,b);
C c0=C(p1,r),c1=C(p2,c);
vector<P> sol;
if (getCircleCircleIntersection(c0,c1,sol)>=2) {
printf("%.10lf %.10lf\n",(sol[0].x+sol[1].x)/2 ,(sol[0].y+sol[1].y)/2 );
}
else if (r<c) {
printf("%.10lf %.10lf\n",x,y );
}
else {
printf("%.10lf %.10lf\n",a,b );

}
return 0;
}

Inverted Signs

显然翻转一段只会影响2端点的贡献

#include<bits/stdc++.h> 
using namespace std;
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
For(j,m-1) cout<<a[i][j]<<' ';\
cout<<a[i][m]<<endl; \
}
#pragma
#define
#define
#define
typedef long long ll;
typedef long double ld;
typedef unsigned long long ull;
ll mul(ll a,ll b){return (a*b)%F;}
ll add(ll a,ll b){return (a+b)%F;}
ll sub(ll a,ll b){return ((a-b)%F+F)%F;}
void upd(ll &a,ll b){a=(a%F+b%F)%F;}
inline int read()
{
int x=0,f=1; char ch=getchar();
while(!isdigit(ch)) {if (ch=='-') f=-1; ch=getchar();}
while(isdigit(ch)) { x=x*10+ch-'0'; ch=getchar();}
return x*f;
}
#define
ll h[MAXN],s[MAXN];
ll Abs(ll x){return max(x,-x);}
int main()
{
// freopen("I.in","r",stdin);
// freopen(".out","w",stdout);
int n=read();
For(i,n) h[i]=read();
ll ans=0;
For(i,n-1) ans+=Abs(h[i]-h[i+1]);
s[1]=0;
Fork(i,2,n) {
s[i]=Abs(-h[i]-h[i-1]) - Abs(h[i]-h[i-1]);
s[i]=min(s[i],s[i-1]);
}
ll del=0,pcost=0;
ForD(i,n) {
ll p;
if (i==n) p=0;
else p=Abs(-h[i]-h[i+1]) - Abs(h[i]-h[i+1]);

pcost=min(p,pcost);
del= min (del , pcost+s[i]);
}
cout<<ans+del<<endl;
return 0;
}

K Knights

四个角无法在第二阶段被其他Knights影响,只能自己覆盖自己。
覆盖了4个角以后能覆盖原图。

#include<bits/stdc++.h> 
using namespace std;
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
For(j,m-1) cout<<a[i][j]<<' ';\
cout<<a[i][m]<<endl; \
}
#pragma
#define
#define
#define
typedef long long ll;
typedef long double ld;
typedef unsigned long long ull;
ll mul(ll a,ll b){return (a*b)%F;}
ll add(ll a,ll b){return (a+b)%F;}
ll sub(ll a,ll b){return ((a-b)%F+F)%F;}
void upd(ll &a,ll b){a=(a%F+b%F)%F;}
inline int read()
{
int x=0,f=1; char ch=getchar();
while(!isdigit(ch)) {if (ch=='-') f=-1; ch=getchar();}
while(isdigit(ch)) { x=x*10+ch-'0'; ch=getchar();}
return x*f;
}
#define
int b[2][2]={};
int main()
{
// freopen("K.in","r",stdin);
// freopen(".out","w",stdout);
int n=read(),m=read(),k=read();

For(i,k) {
int x=read(),y=read();
if ((1<x && x<n) || (1<y&&y<m) ) continue;

if(1==x&&1==y) b[0][0]=1;
if(1==x&&m==y) b[0][1]=1;
if(n==x&&1==y) b[1][0]=1;
if(n==x&&m==y) b[1][1]=1;
}
if (n==1 &&m==1) {
puts(b[1][1]?"0":"1");
}
else if (n==1) {
cout<<2-b[0][0]-b[0][1]<<endl;
}
else if (m==1) {
cout<<2-b[0][0]-b[1][0]<<endl;
}else {
cout<<4-b[0][0]-b[1][0]-b[0][1]-b[1][1]<<endl;
}

return 0;
}


标签:Salle,ch,return,Pui,La,int,double,ll,define
From: https://blog.51cto.com/u_15724837/5789908

相关文章

  • 'dependencies.dependency.(groupId:artifactId:type:classifier)' must be unique
     2016-10-0923:14:43.177DEBUG[restartedMain][org.springframework.core.type.classreading.AnnotationAttributesReadingVisitor]Failedtoclass-loadtypewhiler......
  • 使用WireShark分析使用RedisTemplate取不到值的问题
    现象:使用JavaRedis客户端将数据存放到Redis后,使用redisTemplate却不出来原因:JavaRedis客户端在将数据存放在Redis时,会对Key,Value,Field进行编码。从Redis中取数据时,如果......
  • 调用layer内部js方法
    调用layer内部名为Func的方法$("#layui-layer-iframe"+layerId)[0].contentWindow.Func();获取layerIdlayerId=layer.open({type:2,......
  • 8.12 SpringBoot集成ElasticSearch之拦截器
    1.简介eBatis中拦截器的加载通过SPI方式实现,只需要提供的目标类实现io.manbang.ebatis.core.interceptor.Interceptor接口,在目标类上加上注解@AutoService(Interceptor.cla......
  • 17.Linux下安装ElasticSearch
    1.解压解压安装包并将解压后的目录移动到/usr/local/elasticsearch目录下。tar-zxvfelasticsearch-7.5.1.tgzmvelasticsearch-7.5.1/usr/local/elasticsearchcd2.配置......
  • BatchNorm和LayerNorm——通俗易懂的理解
    https://blog.csdn.net/Little_White_9/article/details/123345062?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2~default~CTRLIST~......
  • Visio中的图无失真导入LaTeX中
    参考网址:LaTeX导入图片不失帧的方法_奋斗的西瓜瓜的博客-CSDN博客_latex图片模糊LaTeX中插入eps格式图片_不觉岁华成暗度的博客-CSDN博客_epslatexVisio图片导出PDF转E......
  • golang隧道模式示例
    packagemainimport("net/url""net/http""bytes""fmt""io/ioutil")constProxyServer="ip.hahado.cn:3......
  • Phalanger---PHP的.NET编译器
    除了IronPython,微软正试着让.NET平台支持更多你我熟知的动态语言,例如Perl、PHP、Ruby。根据IronPython的创造者、也是微软CLR开发部门主管JimHugunin表示,微软正试着以不同......
  • Clay: 创建和使用深层次对象图
    Clay是CodePlex上的一个开源项目,帮助我们创建轻松创建对象,就JavaScript或其它动态语言一样简单。Clay项目的网址是http://clay.codeplex.com,Clay......