\[\text{暑假集训CSP提高模拟}\int^{6}_{0}\frac{x^{2}}{6}dx
\]
关于这个东西怎么求的良心教程

含义:求出 \(f(x)=\frac{x^{2}}{6}\) 在区间 \([0,6]\) 内在 \(x\) 轴上方,\(f(x)\) 下方的图形面积.

解法:考虑到 “加速度变化面积等于速度变化量” 类似的思想,我们尝试构造一个 \(g(x)\) 使得 \(g'(x)=f(x)\),不难发现存在一个 \(g(x)=\frac{x^{3}}{18}\),这样我们就可以把求面积问题转化成求变化量问题,因此直接 \(g(6)-g(0)=12\)

非常好,你已经会积分了,现在来试试这个吧:

\[\int^{b}_{a}\frac{lnx\sin x}{x^3}dx
\]

A.黑客

显然这个题里只有 \(999\) 放在复杂度里是有可能对的,要么是 \(999^{2}\) 要么是 \(999^{2}\log 999\),显然应该是前者.

考虑枚举全部的最简分数,然后乘上去,算的时候直接算当前分母/分子是最简分式的几倍(注意上下取整的选择),然后在分子分母的可取值区间取一个交集即可.

#include<bits/stdc++.h>
using namespace std;
#define int long long
const int p=1e9+7;
signed main(){
// freopen("T1.in","r",stdin);
// freopen("test.out","w",stdout);
int a,b,c,d,ans=0;
scanf("%lld %lld %lld %lld",&a,&b,&c,&d);
for(int i=1;i<=999;++i){
for(int j=1;j<=999-i;++j){
if(__gcd(i,j)==1){
int l1=ceil(a*1.0/i),l2=ceil(c*1.0/j);
int r1=floor(b*1.0/i),r2=floor(d*1.0/j);
ans=(((i+j)*max(0ll,(min(r1,r2)-max(l1,l2)+1))%p)+ans)%p;
// if(min(r1,r2)-max(l1,l2)>0)
// cout<<i<<" "<<j<<" "<<max(l1,l2)<<" "<<min(r1,r2)<<" "<<endl;
}
}
}
printf("%lld\n",ans);
}

B.密码技术

你说得对但是这题我做过

注意到交换具有传递性,对 \((1,2),(2,3)\) 可交换的情况,可以考虑如下交换方式得到 \((1,3)\) :

1    2    3    3
2 -> 1 -> 1 -> 2
3 3 2 1

多摸几组可以得到规律:这样的交换是有传递性的,每当我们想交换两个不能直接交换的元素,仅仅需要以中间元素作为中介分别交换即可.

因为这个题元素不重复(话说当时发现元素重复的这个题在同阶范围下是不可做的)因此行和列交换互不影响,直接乘法原理乘一下就行了. 对于每一个能互相交换的连通块,不妨用并查集维护大小 \(s\),对答案的贡献即为 \(A^{s}_{s}=s!\)

#include<bits/stdc++.h>
using namespace std;
#define int long long
int n,K;
int a[51][51];
const int p=998244353;
class dsu{
private:
int fa[51],size[51];
public:
void clear(){
for(int i=1;i<=n;++i){
fa[i]=i;
size[i]=1;
}
}
int find(int id){
if(id==fa[id]) return id;
fa[id]=find(fa[id]);
return fa[id];
}
void join(int x,int y){
int a=find(x),b=find(y);
if(a!=b){
fa[a]=b;
size[b]+=size[a];
size[a]=0;
}
}
bool isfa(int id){
return id==fa[id];
}
int get_size(int id){
return size[id];
}
};
dsu h,l;
int frac[51];
signed main(){
// freopen("T2.in","r",stdin);
frac[0]=1;
for(int i=1;i<=50;++i){
frac[i]=frac[i-1]*i%p;
}
scanf("%lld %lld",&n,&K);
for(int i=1;i<=n;++i){
for(int j=1;j<=n;++j){
scanf("%lld",&a[i][j]);
}
}
h.clear();l.clear();
for(int i=1;i<=n;++i){
for(int j=i+1;j<=n;++j){
bool flag=true;
for(int k=1;k<=n;++k){
if(a[i][k]+a[j][k]>K){
flag=false;break;
}
}
if(flag) h.join(i,j);
}
}
for(int i=1;i<=n;++i){
for(int j=i+1;j<=n;++j){
bool flag=true;
for(int k=1;k<=n;++k){
if(a[k][i]+a[k][j]>K){
flag=false;break;
}
}
if(flag) l.join(i,j);
}
}
int ans=1;
for(int i=1;i<=n;++i){
if(h.isfa(i)){
ans=ans*frac[h.get_size(i)]%p;
}
if(l.isfa(i)){
ans=ans*frac[l.get_size(i)]%p;
}
}
printf("%lld\n",ans);
}

C.修水管

暴力做法是显然的,写一个深搜暴力转移即可(其实能写状压的,我怎么老是忘了能状压)

#include<bits/stdc++.h>
using namespace std;
#define double long double
int n,r;
int w[251];
double p[251];
double dfs(int now,int brok,double nowp){
double res=0;
if(now>r){ return 0;}
if(nowp==0){ return 0;}
double zc=0;if(brok){ res+=w[brok];zc=p[brok];p[brok]=0;}
double nwp=1;
for(int i=1;i<=n;++i){
res+=dfs(now+1,i,nwp*p[i]);
nwp*=(1-p[i]);
}
res+=dfs(now+1,0,nwp);
if(brok){ p[brok]=zc;}
return res*nowp;
}
int main(){
int cases;cin>>cases;while(cases--){
cin>>n>>r;
for(int i=1;i<=n;++i){
cin>>p[i]>>w[i];
}
printf("%.10Lf\n",dfs(0,0,1));
}
}

这道题的正解是 DP,设计 \(f_{i,j}\) 表示前 \(i\) 个中选 \(j\) 个的概率,则最终的 \(h_i\) 可以通过枚举转移得出

要得出转移,必须要知道第 \(i\) 个数被选的概率 而这个东西等于 \(1\) 减去它不被选的概率,而不被选的概率是 \((1-p_i)^{r-j}\),表示可能选到它的 \(r-j\) 次都没选到(根据定义,有 \(j\) 次选的前面的数,因此不算在里面)

所以有:

\[f_{i,j}=(1−(1−p_{i})^{r−j+1})f_{i−1,j−1}+(1−p_{i})^{r−j}f_{i−1,j}
\]

最后概率乘权值即可.

#include<bits/stdc++.h>
using namespace std;
int n,r;
double ans,p[251],w[251],f[251][251];
int main(){
int cases;scanf("%d",&cases);while(cases--){
scanf("%d %d",&n,&r);
for(int i=1;i<=n;++i){
scanf("%lf %lf",&p[i],&w[i]);
}
memset(f,0,sizeof f);
ans=0;
f[0][0]=1;
double res=0;
for(int i=0;i<=n-1;++i){
for(int j=0;j<=(i<r?i:r);++j){
res=pow(1-p[i+1],r-j);
f[i+1][j]+=f[i][j]*res;
if(j<r){
f[i+1][j+1]+=f[i][j]*(1-res);
ans+=f[i][j]*(1-res)*w[i+1];
}
}
}
printf("%.10lf\n",ans);
}
}

D.货物搬运

暑假集训CSP提高模拟 ∫[0,6] (x^2)/6 dx的更多相关文章

  1. 2015UESTC 暑假集训总结

    day1: 考微观经济学去了…… day2: 一开始就看了看一道题目最短的B题,拍了半小时交了上去wa了 感觉自己一定是自己想错了,于是去拍大家都过的A题,十分钟拍完交上去就A了 然后B题写了一发暴力 ...

  2. 牛客网NOIP赛前集训营-提高组(第四场)游记

    牛客网NOIP赛前集训营-提高组(第四场)游记 动态点分治 题目大意: \(T(t\le10000)\)组询问,求\([l,r]\)中\(k(l,r,k<2^{63})\)的非负整数次幂的数的个 ...

  3. 牛客网NOIP赛前集训营-提高组(第四场)B区间

    牛客网NOIP赛前集训营-提高组(第四场)B区间 题目描述 给出一个序列$ a_1  \dots   a_n$. 定义一个区间 \([l,r]\) 是好的,当且仅当这个区间中存在一个 \(i\),使得 ...

  4. STL 入门 (17 暑假集训第一周)

    快速全排列的函数 头文件<algorithm> next_permutation(a,a+n) ---------------------------------------------- ...

  5. 牛客网NOIP赛前集训营-普及组(第二场)和 牛客网NOIP赛前集训营-提高组(第二场)解题报告

    目录 牛客网NOIP赛前集训营-普及组(第二场) A 你好诶加币 B 最后一次 C 选择颜色 D 合法括号序列 牛客网NOIP赛前集训营-提高组(第二场) A 方差 B 分糖果 C 集合划分 牛客网N ...

  6. 暑假集训Day2 互不侵犯(状压dp)

    这又是个状压dp (大型自闭现场) 题目大意: 在N*N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案.国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共8个格子. ...

  7. 暑假集训Day1 整数划分

    题目大意: 如何把一个正整数N(N长度<20)划分为M(M>=1)个部分,使这M个部分的乘积最大.N.M从键盘输入,输出最大值及一种划分方式. 输入格式: 第一行一个正整数T(T<= ...

  8. #10471. 「2020-10-02 提高模拟赛」灌溉 (water)

    题面:#10471. 「2020-10-02 提高模拟赛」灌溉 (water) 假设只有一组询问,我们可以用二分求解:二分最大距离是多少,然后找到深度最大的结点,并且把它的\(k\)倍祖先的一整子树删 ...

  9. #10470. 「2020-10-02 提高模拟赛」流水线 (line)

    题面:#10470. 「2020-10-02 提高模拟赛」流水线 (line) 题目中的那么多区间的条件让人感觉极其难以维护,而且贪心的做法感觉大多都能 hack 掉,因此考虑寻找一些性质,然后再设计 ...

  10. 牛客网NOIP赛前集训营-提高组(第四场)B题 区间

    牛客网NOIP赛前集训营-提高组(第四场) 题目描述 给出一个序列 a1, ..., an. 定义一个区间 [l,r] 是好的,当且仅当这个区间中存在一个 i,使得 ai 恰好等于 al, al+1, ...

随机推荐

  1. Python 使用Python操作xmind文件

    使用Python操作xmind文件 by:授客 QQ:1033553122   测试环境 Win10 Python 3.5.4 XMind-1.2.0.tar.gz 下载地址: https://fil ...

  2. android实现多线程基础

    //创建线程类 class Mythread extends Thread{ @Override public void run(){ //定义行为 } } //实例化线程类 MyThread mt= ...

  3. SEO初学指南之关键词研究(2) - 搜索意图分析

    Hi,我是听风.这篇文章我们深入探讨下关键词研究中最重要的一点:搜索意图. 虽然这在本系列教程的第一篇中提到过搜索意图,但是我还是想再写一篇文章来帮助你们了解什么是搜索意图以及如何再关键词研究中使用它 ...

  4. 我用Awesome-Graphs看论文:解读Pregel

    Pregel论文:<Pregel: A System for Large-Scale Graph Processing> 上次向大家分享了论文图谱项目Awesome-Graphs的介绍文章 ...

  5. 大厂面经: 字节跳动 iOS开发实习生-飞书

    好家伙, 线上面试,总时长1h30mins左右 整体流程: 0.自我介绍(0-2mins) 1.做的比较难的事情(15min) 我讲我之前写的一个低开平台,写了一个撤销回退功能,提了个pr,用了节流, ...

  6. 【SpringMVC】05 RestFul风格

    什么是RestFul风格? 一个资源定位和资源操作的风格,不是标准,也不是协议, 基于此风格的路径访问可以隐藏真实的参数传递,以提高网站的安全访问 以往的请求参数: jdbc:mysql://loca ...

  7. NVIDIA具身机器人实验室 —— GEAR —— Generalist Embodied Agent Research —— NVIDIA机器人实验室

    相关: https://www.youtube.com/watch?v=jbJPG2H8hn4

  8. 论文《policy-gradient-methods-for-reinforcement-learning-with-function-approximation 》的阅读——强化学习中的策略梯度算法基本形式与部分证明

    最近组会汇报,由于前一阵听了中科院的教授讲解过这篇论文,于是想到以这篇论文为题做了学习汇报.论文<policy-gradient-methods-for-reinforcement-learni ...

  9. 台式机电脑散热之狂想曲——主机机箱散热的另类方法(纯空想中ing)

    本博文是一篇狂想曲,之所以叫狂想曲是因为本文只是博主在无聊时突发奇想,而且仅停留于想的阶段,所以本文内容不用太过认真. 事情是这样的,博主有一台式机,有事没事的就喜欢宅在宿舍里面,有时候还能偶然用这台 ...

  10. 屏蔽RaiDrive的广告

    RaiDrive 广告域名:ads.raidrive.com 在 HOSTS 添加 127.0.0.1 ads.raidrive.com 或者在代理中设置为阻止即可. 效果: 补 最新版(2023.9 ...