DTOJ 1486:分数(score)

【题目描述】

【输入】
第一行包含两个正整数N和P,表示选手的个数以及精度要求。
接下来的N行,每行包含一个0到100(闭区间)内的整数。
【输出】
输出一个实数,取P位有效数字,下取整。

【样例输入】

5 4
100
20
15
10
0

【样例输出】

195.2

【提示】

【分析】
这道题需要让你求出使偏差最小的难度和区分度的大小。根据题目下方的难度-区分度的图表,结合题意,可以发现偏差值与难度-区分度的关系为一个单峰函数。因此我们可以对其进行三分。由于有两个变量(难度,区分度),所以我们先固定一个变量,对另一个变量进行三分操作。在这里,我们最好先固定难度,先对区分度进行三分,求出当前难度下区分度最优的情况下的偏差值,然后根据偏差值的大小再对难度进行三分(也就是三分套三分的意思)。直接使用此方法即可。
【代码】
#include<bits/stdc++.h>
using namespace std;
const double eps=1e-9;
long double df_lf=0.0,df_rt=15.0,d,df_lm,df_rm,ds_lf,ds_rt,ds_lm,ds_rm;
int a[30],n,p;
inline long double sigma ( long double dfcl,long double disp )
{long double sum=0,idel=100;for ( int i=1;i<=n;i++ ){long double score=100/(1+exp(dfcl-disp*a[i]));if ( score<1e-12 ) sum+=(100.0-idel)*log(100/(100-score));else if ( score>=100 ) sum+=(idel*log(100/score));else sum+=(idel*log(100/score)+(100.0-idel)*log(100/(100-score)));idel-=d;}return sum;
}
inline void print ( long double val )
{long long w=1;int ups=0,used=0;while ( true ){if ( val/w<1 ) break;w*=10,ups++;}long long res=(long long)(val*pow(10,10-ups)),highest=1000000000;for ( int i=9;i>=10-p;i-- ){if ( i==9-ups ) putchar((i==9)?'0':'.');cout<<res/highest;res%=highest;used++;highest/=10;}while ( used<ups ) putchar('0'),used++;
}
inline int read ( void )
{int x=0;char ch=getchar();while ( !isdigit(ch) ) ch=getchar();for ( x=ch-48;isdigit(ch=getchar()); ) x=(x<<1)+(x<<3)+ch-48;return x;
}
int main()
{scanf("%d%d",&n,&p);d=100.0/(n-1);for ( int i=1;i<=n;i++ ) scanf("%d",&a[i]);while ( df_rt-df_lf>eps ){df_lm=df_lf+(df_rt-df_lf)/3.0,df_rm=df_rt-(df_rt-df_lf)/3.0;ds_lf=0.0,ds_rt=1.0;while ( ds_rt-ds_lf>eps ){ds_lm=ds_lf+(ds_rt-ds_lf)/3.0,ds_rm=ds_rt-(ds_rt-ds_lf)/3.0;if ( sigma(df_lm,ds_lm)<sigma(df_lm,ds_rm) ) ds_rt=ds_rm;else ds_lf=ds_lm;}double min_lm=sigma(df_lm,ds_lm);ds_lf=0.0,ds_rt=1.0;while ( ds_rt-ds_lf>eps ){ds_lm=ds_lf+(ds_rt-ds_lf)/3.0,ds_rm=ds_rt-(ds_rt-ds_lf)/3.0;if ( sigma(df_rm,ds_lm)<sigma(df_rm,ds_rm) ) ds_rt=ds_rm;else ds_lf=ds_lm;}double min_rm=sigma(df_rm,ds_lm);if ( min_lm<min_rm ) df_rt=df_rm;else df_lf=df_lm;}print(sigma(df_lm,ds_lm));return 0;
}

DTOJ 1486:分数(score)相关推荐

  1. 2021年信号与系统处理期中考试与课堂交互分数

    §01 期中成绩整理 2021年信号与系统期中考试采取了 考试宝进行课堂练习 方式进行.但是使用考试宝进行测试有以下两方面的问题: 考试宝只能接受姓名和手机号,无法接受学号作为标识符: 考试宝在考试过 ...

  2. 从键盘上录入10科考试分数,输出最高分最高分输入的序号

    从键盘上录入10科考试分数,输出最高分最高分输入的序号 import java.util.Scanner;/* * 从键盘上录入10科考试分数,输出最高分最高分输入的序号 * */ public cl ...

  3. Android实训案例(四)——关于Game,2048方块的设计,逻辑,实现,编写,加上色彩,分数等深度剖析开发过程!...

    Android实训案例(四)--关于Game,2048方块的设计,逻辑,实现,编写.加上色彩.分数等深度剖析开发过程! 关于2048,我看到非常多大神,比方医生.郭神.所以我也研究了一段时间.还好是研 ...

  4. zset获取指定score_redis zset更新score redis学习笔记5 - Redis - 服务器之家

    redis zset更新score redis学习笔记5 发布时间:2017-04-03 来源:服务器之家 一:概述 zset全称为sorted-sets类型,和set数据类型有极为相似,都是字符串的 ...

  5. Java实现输入分数,输出该同学的相应等级(switch语句实现)

    package com.edu.s2;import java.util.Scanner;public class test1 {public static void main(String[] arg ...

  6. python练习3:输入分数,输出对应的ABCD级别

    while True: # 为了在判断后 可以继续输入 加个循环scorei = input('请输入分数:') score = int(scorei) # 输入内容是字符串 要先转换成整形if sc ...

  7. Android实训案例(四)——关于Game,2048方块的设计,逻辑,实现,编写,加上色彩,分数等深度剖析开发过程!

    Android实训案例(四)--关于Game,2048方块的设计,逻辑,实现,编写,加上色彩,分数等深度剖析开发过程! 关于2048,我看到很多大神,比如医生,郭神,所以我也研究了一段时间,还好是研究 ...

  8. 高级教程: 作出动态决策和 Bi-LSTM CRF 重点

    https://www.zhihu.com/question/35866596 条件随机场 CRF(条件随机场)与Viterbi(维特比)算法原理详解 https://blog.csdn.net/qq ...

  9. list redis 怎样做排行_学 Redis 的 7000 字小结!!!

    来源:http://rrd.me/ekrCq Redis 简介 Redis 是完全开源免费的,遵守 BSD 协议,是一个高性能的 key - value 数据库 Redis 与 其他 key - va ...

最新文章

  1. 你什么时候觉得自己会被边缘化?
  2. 第十七部分-Python文档和测试
  3. cisco路由器基本实验之九 PAT的配置(Packet Tracer)
  4. The property delegate of CALayer cause Crash.
  5. Git 常用命令和教程
  6. 282021年湖南高考成绩查询,2010年湖南高考成绩查询
  7. 中国剧本推理市场洞察2021
  8. python的opencv库_python环境下安装opencv库的方法
  9. Linux操作Oracle(16)——Oracle扩容报错:ORA-01144_表空间数据文件超出最大限制
  10. redis的发布和订阅模式
  11. Ubuntu source insight3稳定性
  12. 一个完整的C语言程序
  13. 拟合数据和原始数据误差计算
  14. 灵越7590BIOS升级到1.6版本无法回退
  15. 独木舟上的旅行(贪心)C/C++
  16. fastboot与fastbootd介绍
  17. openCV和python基于dlib库实现眨眼/睁闭眼检测--亲测高效
  18. 增值电信业务经营许可证怎么办理icp许可证
  19. CF1438D Powerful Ksenia
  20. 微信是如何做用户体验的?

热门文章

  1. Linux安装Googlepinyin
  2. Raphael.js 在vue中使用说明, 以杭州市地图为例
  3. DCloud旗下的uni-app如何判断是否安装腾讯QQ微信微博支付宝淘宝客户端
  4. 装机软件测试工资,实际性能测试及总结_DIY攒机装机不求人-中关村在线
  5. MD编辑器就是不告诉你之表情
  6. 收藏 | Android开发从入门到精通系列书籍资料最全攻略!!!(最新更新)
  7. 2022软件测试技能 APP自动化测试 Python+Appium+Uiautomator2 实战教程
  8. Fastbot_Android稳定性测试
  9. 百慕大神秘三角神秘事件视频
  10. html游动文字如何设置颜色,pr游动字幕怎么做