⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 2750027_re.java

📁 北大大牛代码 1240道题的原代码 超级权威
💻 JAVA
字号:
import java.util.*;

public class Main
{
	public static void main(String[] args)  throws Exception 
	{
		Scanner cin = new Scanner(System.in);
		int i, j, k, d, n;
		int inf = 100000000;
		int dis[] = new int [102];
		int f[][] = new int [102][201];
		int sta[] = new int [102];
		int pri[] = new int [102];
		
		d = cin.nextInt();
		n = 1;
		while(cin.hasNext())
		{
			sta[n] = cin.nextInt();
			pri[n] = cin.nextInt();
			n++;
		}
		sta[n] = d;sta[0] = 0;
		for (i = 0; i <= n; i++)
		{
			dis[i] = sta[i]-sta[i-1];
			if (dis[i]>200||(i==1||i==n)&&dis[i]>100 || n==1 && dis[i]>0)
			{
				System.out.println("Impossible");
				return ;
			}
			for (j = 0; j < 200; j++)
				f[i][j] = inf;
		}
		f[1][100-sta[1]] = 0;
	    for (i = 1; i < n; i++)
	    {
	        for(j = 0; j <= 200; j++)
	        {
	            if(f[i][j]!=inf)
	            {
	                for(k=0; k<=200-j; k++)
	                {
	                    if(j+k>=dis[i+1] && f[i][j]+k*pri[i]<f[i+1][j+k-dis[i+1]])
	                    {
	                        f[i+1][j+k-dis[i+1]] = f[i][j]+k*pri[i];
	                    }
	                }
	            }
	        }
	    }
	    System.out.println(f[n][100]);
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -