浙江省赛2022

G - Easy Glide

import java.io.*;
import java.util.*;
public class Main
{
	static StreamTokenizer st = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
	static PrintWriter out = new PrintWriter(System.out);
	static int inn() throws IOException
	{
		st.nextToken();
		return (int) st.nval;
	}
	static double idd() throws IOException
	{
		st.nextToken();
		return st.nval;
	}
	static int n=0;
    static int m=0;
    static int N=15000000;
    static int h[]=new int[N];
    static int ne[]=new int[N];
    static int e[]=new int[N];
    static double w[]=new double[N];
    static boolean vis[]=new boolean[N];
    static double d[]=new double[N];
    static int idx=0;
    static double inf=Long.MAX_VALUE;
    static int bx;
    static int fx;
	public static void main(String[] args) throws IOException
	{
		Scanner s = new Scanner(System.in);
		int n=s.nextInt();
		num num[]=new num[n+3];
		for(int i=2;i<=n+1;i++)
			num[i]=new num(s.nextDouble(),s.nextDouble());
		num[1]=new num(s.nextDouble(),s.nextDouble());
		num[n+2]=new num(s.nextDouble(),s.nextDouble());
		bx=s.nextInt();
		fx=s.nextInt();
		Arrays.fill(h,-1);
		for(int i=2;i<=n+1;i++)
			for(int j=1;j<=n+2;j++)
				if(i!=j)
					add(i,j,js(num[i],num[j]));
		for(int i=2;i<=n+2;i++)
			add(1,i,js2(num[1],num[i]));
		dijkstra();
		System.out.printf("%.8f",d[n+2]);
		System.out.println();
	}
	static double js(num a,num b)
	{
		double jl=Math.sqrt(Math.pow(a.x-b.x, 2)+Math.pow(a.y-b.y, 2));
		if(jl<=fx*3)
			return jl/fx;
		else 
			return 3+(jl-fx*3)/bx;
	}
	static double js2(num a,num b)//起点的花费的时间
	{
		double jl=Math.sqrt(Math.pow(a.x-b.x, 2)+Math.pow(a.y-b.y, 2));
		return jl/bx;

	}
	static void dijkstra()
    {
        PriorityQueue<PII>heap=new PriorityQueue<PII>();
        Arrays.fill(d,inf);
        d[1]=0;
        heap.add(new PII(1,0));
        while(!heap.isEmpty())
        {
            PII t=heap.poll();
            if(vis[t.id]==true)continue;
            vis[t.id]=true;
            for(int i=h[t.id];i!=-1;i=ne[i])
            {
                int j=e[i];
                if(d[j]>t.cd+w[i])
                {
                    d[j]=t.cd+w[i];
                    heap.add(new PII(j,d[j]));
                }
            }
        }
    }
	static void add(int a,int b,double z)
    {
        e[idx]=b;
        w[idx]=z;
        ne[idx]=h[a];
        h[a]=idx++;
    }
}
class PII implements Comparable<PII>
{
    int id;
    double cd;
    public PII(int id,double cd)
    {
        this.id=id;
        this.cd=cd;
    }

    public int compareTo(PII other)//按照从小到大排序
    {
        if(this.cd>other.cd)
        {
        	return 1;
        }if(this.cd<other.cd)
        {
        	return -1;
        }
        else
        {
        	return 0;
        }
    }
}
class num 
{
	double x;
	double y;
	public num() {};
	public num(double x,double y)
	{
		this.x=x;
		this.y=y;
	}
}


L - Candy Machine

import java.io.*;
import java.util.*;
public class Main
{
	static StreamTokenizer st = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
	static PrintWriter out = new PrintWriter(System.out);
	static int inn() throws IOException
	{
		st.nextToken();
		return (int) st.nval;
	}
	static double idd() throws IOException
	{
		st.nextToken();
		return st.nval;
	}
	public static void main(String[] args) throws IOException
	{
		Scanner s = new Scanner(System.in);
		int n=inn();
		double a[]=new double[n];
		double sum=0;
		double avg=0;
		for(int i=0;i<n;i++)
		{
			a[i]=idd();
			sum+=a[i];
		}
		Arrays.sort(a);
		avg=sum/n;
		int max=0;
		for(int i=0;i<n;i++)
			if(avg<a[i])max++;
		for(int i=n-1;i>=1;i--)
		{
			sum-=a[i];
			avg=sum*1.0/i;
			int x=ef(a, 0,i-1,avg);
			max=Math.max(max, i-x);
		}
		out.println(max);
		out.flush();
	}
	
	static int ef(double a[],int l,int r,double key)
	{
		int mid=l+r>>1;
		while(l<r)
		{
			mid=l+r>>1;
			if(a[mid]>key)r=mid;
			else
				l=mid+1;
		}
		return r;
	}
}


M - BpbBppbpBB

import java.io.*;
import java.util.*;
public class Main
{
	static StreamTokenizer st = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
	static PrintWriter out = new PrintWriter(System.out);
	static int inn() throws IOException
	{
		st.nextToken();
		return (int) st.nval;
	}
	static double idd() throws IOException
	{
		st.nextToken();
		return st.nval;
	}
	public static void main(String[] args) throws IOException
	{
		Scanner s = new Scanner(System.in);
		int n=s.nextInt();
		int m=s.nextInt();
		char a[][]=new char[n+10][];
		for(int i=0;i<n;i++)
			a[i]=s.next().toCharArray();
		int hei=0;
		int quan=0;
		for(int i=0;i<n;i++)
			for(int j=0;j<m;j++)
				if(a[i][j]=='#')hei++;
		for(int i=1;i<n-4;i++)
			for(int j=1;j<m-4;j++)
				if(a[i][j]=='#'&&a[i][j+1]=='.'&&a[i][j+2]=='.'&&a[i][j+3]=='#'&&a[i+1][j-1]=='#'&&a[i+1][j]=='.'&&a[i+1][j+1]=='.'&&a[i+1][j+2]=='.'&&a[i+1][j+3]=='.'&&a[i+1][j+4]=='#'&&a[i+3][j]=='#'&&a[i+3][j+3]=='#')
					if(a[i][j+1]==a[i][j+2]&&a[i][j+1]=='.')
					{
						quan++;
						a[i+3][j+1]=a[i+3][j+2]=a[i][j+1]=a[i][j+2]='+';
					}
		System.out.println(((100*quan-hei)/54)+" "+((hei-73*quan)/27));
	}
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值