2017-10-26 NOIP模拟赛

三分咲

#include<iostream>
#include<cstdio>
#include<ctime>
using namespace std;
int n,m,s;
int main(){
    //freopen("Cola.txt","r",stdin);
    freopen("three.in","r",stdin);freopen("three.out","w",stdout);
    scanf("%d%d",&n,&m);
    for(register int i=2;i<=n;++i){
        s=s+m;
        while(s>=i)s-=i;
    }
    printf("%d",s+1);
}
100分

五分咲

#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstdlib>
using namespace std;
double xs,ys,xt,yt,xa,ya,r,xb,yb,xc,yc,va,vb,vc;
double A,B,C;
void line(double m,double n,double p,double q){
    A=n-q;B=-(m-p);C=q*m-p*n;//计算直线解析式 
}
double dis(double m,double n,double p,double q){
    double res=sqrt((m-p)*(m-p)+(n-q)*(n-q));//两点之间距离 
    return res;
}
int main(){
    //freopen("Cola.txt","r",stdin);
    freopen("five.in","r",stdin);freopen("five.out","w",stdout);
    scanf("%lf%lf%lf%lf%lf%lf%lf%lf%lf%lf%lf%lf%lf%lf",&xs,&ys,&xt,&yt,&xa,&ya,&r,&xb,&yb,&xc,&yc,&va,&vb,&vc);
    if(xb>xc)swap(xb,xc),swap(yb,yc);
    line(xb,yb,xc,yc);
    if(va==vb&&va==0){
        /*double d=fabs(A*xa+B*yb+C)/(sqrt(A*A+B*B));
        if(d<=r){//直线与圆相交 
            double d1=dis(xa,ya,xb,yb);
            double d2=dis(xa,ya,xc,yc);
            double ans=min(d1,d2);
            if(ans<=r){puts("0.000");return 0;}
            ans-=r;printf("%.3lf",ans/vc);return 0;
        }
        double W=ya-(B*xa/A);
        double footx=(-A*C-W*A*B)/(B*B+A*A);//垂足的坐标 
        double footy=(W*A*A-C*B)/(B*B+A*A);
        if(footx>=xc){
            double ans=dis(xa,ya,xc,yc);
            ans-=r;
            printf("%.3lf",ans/vc);return 0;
        }
        if(footx<=xb){
            double ans=dis(xa,ya,xb,yb);
            ans-=r;
            printf("%.3lf",ans/vc);return 0;
        }
        if(footx<xc&&footx>xb){
            double ans=d-r;
            printf("%.3lf",ans/vc);return 0;
        }*/
        printf("%.3lf",dis(xs,ys,xt,yt)/vc);return 0;
    }
    if(r==0){
        if(va==vb&&vb==vc){
            double ans=dis(xs,ys,xt,yt)/va;
            printf("%.3lf",ans);return 0;
        }
        double lx=xb,rx=xc,ly=yb,ry=yc;
        double ans=1000000000;
        for(int i=1;i<=40;i++){
            double midx1=(2*lx+rx)/3.0,midy1=(2*ly+ry)/3.0;
            double midx2=(2*rx+lx)/3.0,midy2=(2*ry+ly)/3.0;
            double ans1=dis(xs,ys,midx1,midy1)/vc+dis(midx1,midy1,xt,yt)/vb;
            double ans2=dis(xs,ys,midx2,midy2)/vc+dis(midx2,midy2,xt,yt)/vb;
            if(ans1<ans2)ans=ans1,rx=midx2,ry=midy2;
            else ans=ans2,lx=midx1,ly=midy1;
        }
        printf("%.3lf",ans);return 0;
    }
    printf("%.3lf",dis(xs,ys,xt,yt)/vc);
}
45分 三分+特判

八分咲

#include<iostream>
#include<cstdio>
using namespace std;
int n,k,t,sum,x,y;
bool flag=0;
int main(){
    freopen("eight.in","r",stdin);freopen("eight.out","w",stdout);
    scanf("%d%d%d",&n,&k,&t);
    for(int i=1;i<n;i++)scanf("%d%d",&x,&y);
    int z;
    for(int i=1;i<=n;i++){
        scanf("%d%d",&x,&y);
        sum+=x;
        if(y>0)flag=1;
        for(int j=1;j<=y;j++){
            scanf("%d%d",&x,&z);
        }
    }
    if(sum<71||flag==0){printf("%d",sum);return 0;}
    else puts("71");
}
35分 骗分
原文地址:https://www.cnblogs.com/thmyl/p/7736445.html