蓝桥杯刷题第七天

       这道题一开始看真的有点简单,但一开始跟着案例先入为主了,误以为是只有两个项目想着穷举完n个人,(n+1)*(n+2)/2种情况但后面发现项目不止两个,用链表来好像我也不会,用二维矩阵好像也表示不完,然后想了一会就想到了贪心,项目按照每个人依次来选项目,所以最多是两层循环n(人)*m(项目)的复杂度,用一个变量记录项目多一个人的涨幅,每轮循环中涨幅最多的就把这个人安排在这个项目,当遍历完n个人即可获得最优解。

下面是我的解法由于没有优化以及剪枝,所以只过了一半以上案例,其余都超时了,明天得看看官方解法来进行学习,整理成自己的思路来重新敲。

ps:但敲得过程中我发现,得先在草稿纸上理清思路再敲不然边敲边想会很容易走神,发呆。(明天试试)

import java.util.*;
public class Main {
	public static void main(String []args) {
		Scanner a = new Scanner(System.in);
		int num = a.nextInt();
		int n = a.nextInt();
		int []b = new int[n+1]; //每个项目的B值
		int []k = new int[n+1]; //每个项目的K值
		int []nu = new int[n+1];//每个项目有多少人玩
		int []z = new int[n+1];//每个项目最高能花多少钱
		int max =0;//最多赚多少钱
		for(int i=1;i<=n;i++) {
			k[i] = a.nextInt();
			b[i] = a.nextInt();
			nu[i] = 0;
		}
		int flag1 ;//门票钱
		int flag;//每轮比上一轮多的钱(涨幅)
		boolean tap;
		for(int j=1;j<=num;j++) {
			//num个人每个人参加哪个项目(贪心)
			int max1 = 0;//涨幅
			int xiabiao =1;
			tap =false;
			for(int i =1;i<=n;i++) {
				nu[i]++;
				if(b[i]+k[i]*nu[i]<=0) {
					nu[i]--;//亏得钱
					continue;//这个项目不用再加入人了
				}
				else {
					flag1 = (b[i]+k[i]*nu[i]);//这个项目的门票
                    flag = flag1*nu[i]-(flag1-k[i])*(nu[i]-1);
					if(max1<flag) {
						max1=flag;
						xiabiao=i;
						tap=true;
					}
					nu[i]--;
				}
			}
			if(tap) {
				nu[xiabiao]++;
				max = max+max1;
			}
			else break;
		}
		System.out.println(max);
	}
     
}

相关推荐

  1. 2024-04-02 23:24:04       18 阅读
  2. 几个幸运数字

    2024-04-02 23:24:04       17 阅读
  3. -每日-023

    2024-04-02 23:24:04       30 阅读
  4. -每日-024

    2024-04-02 23:24:04       30 阅读
  5. -每日-026

    2024-04-02 23:24:04       42 阅读
  6. -每日-027

    2024-04-02 23:24:04       34 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-02 23:24:04       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-02 23:24:04       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-02 23:24:04       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-02 23:24:04       20 阅读

热门阅读

  1. 面试宝典:深入分析golang 的 泛型

    2024-04-02 23:24:04       13 阅读
  2. babyAGI(6)-babyCoder源码阅读2任务描述部分

    2024-04-02 23:24:04       15 阅读
  3. 逆序对————权值线段树+离散化写法

    2024-04-02 23:24:04       16 阅读
  4. MYSQL数据库的故障排除与优化

    2024-04-02 23:24:04       32 阅读
  5. 预防 MySQL 死锁的策略

    2024-04-02 23:24:04       14 阅读
  6. Mysql哪些查询不走索引

    2024-04-02 23:24:04       11 阅读
  7. 11、Cocos Creator 2D 渲染组件:Label 组件

    2024-04-02 23:24:04       15 阅读
  8. 宽表的优缺点,你明白吗?

    2024-04-02 23:24:04       15 阅读
  9. Google人才选拔的独特视角

    2024-04-02 23:24:04       16 阅读
  10. 一文读懂485通讯协议

    2024-04-02 23:24:04       12 阅读