解题报告

  • JZOJ 6296 投票
    • 题目
    • 分析
    • 代码
  • JZOJ 6294 动态数点
    • 题目
    • 分析
    • 代码
  • JZOJ 6303 演员
    • 题目
    • 分析
    • 代码

JZOJ 6296 投票

题目


分析

根据贪心从小到大排序后选择两边的同学必然是最优的,所以可以写一个dp方程,枚举左边同学求最大值


代码

#include <cstdio>
#include <algorithm>
#define rr register
using namespace std;
double p[2001],f[2001][2001],dp[2001][2001],ans; int n,m;
inline void pro(double f[2001][2001]){f[0][0]=1;for (rr int i=1;i<=m;++i)for (rr int j=0;j<=i;++j){f[i][j]=f[i-1][j]*(1-p[i]);if (j) f[i][j]+=f[i-1][j-1]*p[i];}
}
signed main(){freopen("vote.in","r",stdin);freopen("vote.out","w",stdout);scanf("%d%d",&n,&m);for (rr int i=1;i<=n;++i) scanf("%lf",&p[i]);sort(p+1,p+1+n),pro(f),reverse(p+1,p+1+n),pro(dp);for (rr int i=0;i<=m;++i){rr double t=0;for (rr int j=0;j<=m/2;++j)t+=f[i][j]*dp[m-i][m/2-j];ans=ans>t?ans:t;}return !printf("%lf",ans);
}

JZOJ 6294 动态数点

题目


分析

用ST表维护区间最小值和区间gcd,显然只有两值相等才可能为答案,二分答案,那么时间复杂度O(nlogn)O(nlogn)O(nlogn),还没有O(n2)O(n^2)O(n2)的暴力快


代码

#include <cstdio>
#include <cctype>
#include <cstring>
#define rr register
using namespace std;
const int N=500101;
typedef unsigned uit;
uit fgcd[N][20],mmin[N][20];
int n,q[N],q1[N],lg[N];
inline uit iut(){rr uit ans=0; rr char c=getchar();while (!isdigit(c)) c=getchar();while (isdigit(c)) ans=(ans<<3)+(ans<<1)+(c^48),c=getchar();return ans;
}
inline uit gcd(uit x,uit y){return y?gcd(y,x%y):x;}
inline uit min(uit x,uit y){return x<y?x:y;}
inline uit ggcd(int l,int r){rr int z=lg[r-l+1];return gcd(fgcd[l][z],fgcd[r-(1<<z)+1][z]);
}
inline uit gmin(int l,int r){rr int z=lg[r-l+1];return min(mmin[l][z],mmin[r-(1<<z)+1][z]);
}
inline bool check(int len){rr bool flag=0; q[0]=0;for (rr int i=1;i+len<=n;++i){if (ggcd(i,i+len)==gmin(i,i+len))flag=1,q[++q[0]]=i;}return flag;
}
signed main(){freopen("point.in","r",stdin);freopen("point.out","w",stdout);n=iut(); lg[0]=-1;for (rr int i=1;i<=n;++i) lg[i]=lg[i>>1]+1;for (rr int i=1;i<=n;++i) fgcd[i][0]=mmin[i][0]=iut();for (rr int j=1;j<=lg[n];++j)for (rr int i=1;i+(1<<j)-1<=n;++i){fgcd[i][j]=gcd(fgcd[i][j-1],fgcd[i+(1<<(j-1))][j-1]),mmin[i][j]=min(mmin[i][j-1],mmin[i+(1<<(j-1))][j-1]);}rr int l=0,r=n-1;while (l<r){rr int mid=(l+r+1)>>1;if (check(mid)) l=mid,memcpy(q1,q,sizeof(q1));else r=mid-1;}printf("%d %d",q1[0],l);for (rr int i=1;i<=q1[0];++i) printf("%c%d",i==1?10:32,q1[i]);return 0;
}

JZOJ 6303 演员

题目


分析


代码

//f表示dp方程,dp表示f的前缀和,fac和inv显然是阶乘和逆元
#include <cstdio>
#include <cctype>
#define rr register
using namespace std;
const int mod=1e9+7; bool now;
int n,m,fac[1000011],inv[1000011],ans,f[2][311][311],dp[2][311][311];
inline signed iut(){rr int ans=0; rr char c=getchar();while (!isdigit(c)) c=getchar();while (isdigit(c)) ans=(ans<<3)+(ans<<1)+(c^48),c=getchar();return ans;
}
inline signed mo(int x,int y){return x+y>=mod?x+y-mod:x+y;}
signed main(){freopen("actor.in","r",stdin);freopen("actor.out","w",stdout);scanf("%d%d",&n,&m);inv[0]=inv[1]=fac[0]=fac[1]=f[0][0][0]=1,now=0;for (rr int i=2;i<=n;++i) inv[i]=1ll*(mod-mod/i)*inv[mod%i]%mod;for (rr int i=2;i<=n;++i) fac[i]=1ll*fac[i-1]*i%mod,inv[i]=1ll*inv[i-1]*inv[i]%mod;for (rr int i=1;i<2*m;++i){if (i>n) break; f[now^=1][0][0]=dp[now][0][0]=0;for (rr int j=1;j<=m;++j){if (i<j) break;for (rr int k=1;k<=j;++k){f[now][j][k]=mo(1ll*f[now^1][j-1][k-1]*(m-j+1)%mod,mo(dp[now^1][j][m]-dp[now^1][j][k],mod)),//显然只有(m-j+1)种颜色可选dp[now][j][k]=mo(dp[now][j][k-1],f[now][j][k]),ans=mo(ans,1ll*f[now][j][k]*fac[n-1]%mod*inv[i-1]%mod*inv[n-i]%mod);//要把相同颜色的填回去,所以要乘上C(n-1,i-1)}for (rr int k=j+1;k<=m;++k) dp[now][j][k]=dp[now][j][k-1];}}return !printf("%d",ans);
}

2019.08.15【NOIP提高组】模拟 A 组相关推荐

  1. 2018.12.08【NOIP提高组】模拟B组总结(未完成)

    2018.12.08[NOIP提高组]模拟B组总结 diyiti 保留道路 进化序列 B diyiti Description 给定n 根直的木棍,要从中选出6 根木棍,满足:能用这6 根木棍拼出一个 ...

  2. 2020.08.08【NOIP提高组】模拟:奶牛的图片 总结

    2020.08.08[NOIP提高组]模拟:奶牛的图片 总结 Description Farmer John希望给他的 N ( 1 ≤ N ≤ 100 , 000 ) N(1\leq N\leq100 ...

  3. 猎聘公司面试(黄军威) 面试时间:2019.08.15 java后端

    面试时间:2019.08.15 面试时长:1小时30分钟 面试人:一个面试官+1个人力资源HR 一.面试官的问题 后来回顾了一下,这次的面试太糟了,好几个点当时都答不上来,当时还以为没什么要紧. 面试 ...

  4. 2019.08.15【NOIP提高组】模拟 B 组 排序、计算几何+数论、高精度优化+二分图/网络流

    文章目录 0[NOIP2013模拟联考3]库特的向量(code) 1 [NOIP2013模拟联考3]恭介的法则(rule) 2 [NOIP2013模拟联考3]沙耶的玩偶(doll) 开门那一瞬,阳光照 ...

  5. JZOJ 5281. 【NOIP提高组模拟A组8.15】钦点

    Description Input Output Sample Input 4 4 2 a a b b a a b b c c d d c c d d 1 1 3 3 2 2 3 1 1 3 2 2 ...

  6. JZOJ5857 【NOIP提高组模拟A组2018.9.8】没有上司的舞会

    题目 Description "那么真的有果尔德施坦因这样一个人?"他问道. "是啊,有这样一个人,他还活着.至于在哪里,我就不知道了." "那么那个 ...

  7. 【每日早报】2019/08/15

    今日看点 ✦ 百度App宣布日活破2亿:信息流.百家号.小程序等是核心驱动力 ✦ 瑞幸咖啡发布上市后首份财报:第二季度净亏损6.813亿元 ✦ 美团回应"正开发地图服务":LBS业 ...

  8. 【二分,找规律】Day 14 提高组模拟C组 T1 小麦亩产一千八

    题目大意 给定斐波那契的第aaa项,求出第b" role="presentation">bbb项,默认第0项为1 解题思路 方法一:递推 找到规律后O(b)O(b) ...

  9. 第一届『Citric杯』NOIP提高组模拟赛 题解

    [官方题解]第一届『Citric杯』NOIP提高组模拟赛 题解 第一题 柠檬超市 这题是本次模拟赛的送分题.做法显然. 但是注意此题有一个陷阱: 注意W和C的规模都是10^9,所以如果直接用doubl ...

最新文章

  1. $m$ 整除 $10^k$ 的一个充分条件
  2. 【Python教程】装饰器的使用及固定模式
  3. 《论语》读后颜渊第十二主要大意
  4. vue动态切换css文件_如何在vue组件中动态的引入css文件?
  5. 谷歌浏览器如何更改语言
  6. 《团队作业第三、第四周》五小福团队作业--Scrum 冲刺阶段--Day6
  7. ORACLE备份策略(ORACLE BACKUP STRATEGY)
  8. #动态规划 0-1背包问题空间复杂度优化
  9. 免费有理—五款免费的网络管理工具介绍
  10. 创新团队中常见的几种“怪人”
  11. java图文并排_JAVA如何实现图文混合显示
  12. Office word中去掉首页的页眉
  13. MaxNewSize is equal to or greater than the entire heap . A new max generation size of will be used.
  14. python根据身高计算标准体重_有谁知道如何根据身高计算标准体重
  15. 当保险行业不再是压舱石,平安保险还保险吗?
  16. C# WebApi 获取今日头条新闻代码
  17. ThinkPHP6使用七牛云存储,不改代码,改下配置就上七牛
  18. 数据分析报告怎么写(五)
  19. less/sass中属性选择器使用方法
  20. 008. 字符串转换整数 (atoi) | Leetcode题解

热门文章

  1. 最大扭矩,最大功率是什么---普通正常人买车如何看发动机参数
  2. layui 实现加载中
  3. 机器视觉运动控制一体机应用例程|包装盒检测解决方案
  4. office2007加载缓慢_win7系统Word2007启动速度变慢的解决方法
  5. 安卓装逼技巧:QQ空间变iPhone8客户端
  6. deepin运行Linux应用,在Ubuntu上安装Deepin的那些应用
  7. 19、硬盘和显卡的访问与控制
  8. 项目中引用NG-ZORRO,在使用nz-form时报错Can't bind to 'formGroup' since it isn't a known property of 'form'的解决方案
  9. 计算机动画类型中只有一维动画和二维动画,二维动画与计算机技术论文(2)
  10. 试问失恋怎么说 郭乔伊抛单曲《爱情没电了》