「考试」weight

正解是树剖。

首先Kru求最小生成树。

然后分别考虑树边和非树边的答案。

首先是非树边,非树边链接的两个点在MST上能够构成一条链。

这条链上最大的那条边-1就是这条边的答案。

为什么。

模拟Kru的过程。如果这条边在树上那一条之前的话。这条边的起点和终点两个集合必然还没有链接。

因为之前那树上那一条断了树链就断了。

那么这条边会成为树边。

然后是树边。

树边的答案就更加浅显一点了,我们的非树边会威胁树边的地位。

也就是说在非树边可能到达某一个树边前面的话,这条边就会成为树边。

那么这条非树便就可以更新一整条树链的答案了。

对于每条树边,答案取最小值,如果仍然是INF,输出-1,否则输出这个值-1。

然后以上所有操作可以用树链剖分解决。

得解。

转载于:https://www.cnblogs.com/Lrefrain/p/11566890.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。
以下是一个简单的 Java 代码示例,根据题型权重实现出题系统: ``` import java.util.ArrayList; import java.util.HashMap; import java.util.Random; public class ExamSystem { // 定义题型常量 private static final int SINGLE_CHOICE = 1; private static final int MULTI_CHOICE = 2; private static final int FILL_BLANK = 3; private static final int ESSAY_QUESTION = 4; // 定义题型对应的权重 private static final HashMap<Integer, Double> questionTypeWeight = new HashMap<Integer, Double>() {{ put(SINGLE_CHOICE, 0.3); put(MULTI_CHOICE, 0.4); put(FILL_BLANK, 0.2); put(ESSAY_QUESTION, 0.1); }}; // 定义题库 private static final ArrayList<String> singleChoiceQuestions = new ArrayList<String>() {{ add("单选题1"); add("单选题2"); add("单选题3"); add("单选题4"); add("单选题5"); }}; private static final ArrayList<String> multiChoiceQuestions = new ArrayList<String>() {{ add("多选题1"); add("多选题2"); add("多选题3"); add("多选题4"); add("多选题5"); }}; private static final ArrayList<String> fillBlankQuestions = new ArrayList<String>() {{ add("填空题1"); add("填空题2"); add("填空题3"); add("填空题4"); add("填空题5"); }}; private static final ArrayList<String> essayQuestions = new ArrayList<String>() {{ add("问答题1"); add("问答题2"); add("问答题3"); add("问答题4"); add("问答题5"); }}; public static void main(String[] args) { // 计算题型权重之和 double totalWeight = 0; for (double weight : questionTypeWeight.values()) { totalWeight += weight; } // 根据权重随机选题 Random random = new Random(); ArrayList<String> selectedQuestions = new ArrayList<String>(); for (int i = 0; i < 10; i++) { double randomValue = random.nextDouble() * totalWeight; double sumWeight = 0; for (int questionType : questionTypeWeight.keySet()) { sumWeight += questionTypeWeight.get(questionType); if (randomValue <= sumWeight) { String question = ""; switch (questionType) { case SINGLE_CHOICE: question = singleChoiceQuestions.get(random.nextInt(singleChoiceQuestions.size())); break; case MULTI_CHOICE: question = multiChoiceQuestions.get(random.nextInt(multiChoiceQuestions.size())); break; case FILL_BLANK: question = fillBlankQuestions.get(random.nextInt(fillBlankQuestions.size())); break; case ESSAY_QUESTION: question = essayQuestions.get(random.nextInt(essayQuestions.size())); break; } selectedQuestions.add(question); break; } } } // 输出选中的题目 System.out.println("选中的题目:"); for (String question : selectedQuestions) { System.out.println(question); } } } ``` 上述代码中,我们定义了题型常量和题型对应的权重,并将题目存储在对应的 ArrayList 中。然后,我们计算题型权重之和,并根据权重随机选题,最后输出选中的题目。你可以根据自己的需求修改题型常量和题目,以及相应的权重,以实现你自己的考试系统。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值