题目:

1.给出一个由0,1组成的环

求最少多少次交换(任意两个位置)使得0,1靠在一起

n<=1000

2.两个数列,支持在第一个数列上区间+1,-1 每次花费为1

求a变成b的最小代价

n<=1e5

3.

有n首歌,每首歌每秒有p[i]的几率被破译(当大于等于t时自动破译),求期望破译歌数

题解:

t1t2都是送分题

t1 显然枚举每个位置作为开头就可以了

可以前缀和优化到O(n)

t2我们从左往右考虑每个元素,发现对于左边一位的操作是知道的

另外我们会发现一个点是不可能既有+又有-操作的(很好yy)

于是就可以直接贪心了

t3首先比较容易想到的是f[i][j]表示前i个,用了t时间的概率

然后枚举经过多长时间才到下一个来转移

但是这样是n*t*t的

考虑优化

我们会发现f[i][j]和f[i][j-1]就差了一点

然后通过之间关系来转移(看代码吧太复杂了)

考试的时候没有注意最后可能未到t时间就用完了(对拍竟然也写错了)

然后竟然还有80

另外写的时候有个细节就是如果上一次是k,但是这一次用时超过t了,我们要归为上一类

这个概率的计算我们只需要通过所有的-当前还在的来计算就可以了

代码:

t1:

#include <bits/stdc++.h>
using namespace std;
#define rint register int
#define IL inline
#define rep(i,h,t) for (rint i=h;i<=t;i++)
#define dep(i,t,h) for (rint i=t;i>=h;i--)
const int N=;
char s[N];
int n;
int main()
{
freopen("swap.in","r",stdin);
freopen("swap.out","w",stdout);
ios::sync_with_stdio(false);
cin>>n;
cin>>s;
int cnt=;
dep(i,n,)
{
s[i+n]=s[i]=s[i-];
if (s[i]=='') cnt++;
}
int ans=1e9;
rep(i,,n)
{
int ans2=;
rep(j,i,i+cnt-)
if (s[j]=='') ans2++;
ans=min(ans,ans2);
}
cout<<ans<<endl;
return ;
}

t2:

#include <bits/stdc++.h>
using namespace std;
#define rint register ll
#define IL inline
#define rep(i,h,t) for (rint i=h;i<=t;i++)
#define dep(i,t,h) for (rint i=t;i>=h;i--)
#define ll long long
const ll N=2e5;
ll a[N],b[N];
ll ans,n;
int main()
{
freopen("bricks.in","r",stdin);
freopen("bricks.out","w",stdout);
ios::sync_with_stdio(false);
cin>>n;
rep(i,,n) cin>>a[i];
rep(i,,n) cin>>b[i];
ll lst=;
rep(i,,n)
{
if (b[i]>=a[i])
{
if (lst>) ans+=max(b[i]-a[i]-lst,0ll);
else ans+=b[i]-a[i];
} else
{
if (lst<) ans+=max(a[i]-b[i]+lst,0ll);
else ans+=a[i]-b[i];
}
lst=b[i]-a[i];
}
cout<<ans<<endl;
return ;
}

t3:

#include <bits/stdc++.h>
using namespace std;
#define rint register int
#define IL inline
#define rep(i,h,t) for (rint i=h;i<=t;i++)
#define dep(i,t,h) for (rint i=t;i>=h;i--)
int n,T;
int b[];
double f[][],a[];
int main()
{
freopen("song.in","r",stdin);
freopen("song.out","w",stdout);
ios::sync_with_stdio(false);
cin>>n>>T;
rep(i,,n) cin>>a[i]>>b[i],a[i]/=;
f[][]=;
double num=;
double jl=;
rep(i,,n)
{
int lst=(i+)%,now=i%;
memset(f[now],,sizeof(f[now]));
double ans2=,ans3=;
rep(j,,b[i]-) ans2*=(-a[i]);
rep(j,,T)
{
ans3*=-a[i];
f[now][j]=f[lst][j-]*a[i]+ans3*a[i];
if (j>=b[i]) f[now][j]+=f[lst][j-b[i]]*ans2*(-a[i]);
if (j>=b[i]) ans3-=f[lst][j-b[i]]*ans2;
ans3+=f[lst][j-];
}
num+=f[now][T]*i;
if (i==n)
{
rep(j,,T-) num+=f[now][j]*i;
}
double ans=;
rep(j,,T) ans+=f[now][j];
num+=(jl-ans)*(i-);
jl=ans-f[now][T];
}
printf("%.4f",num);
return ;
} //考试的时候少处理了最后剩余的状态
//对拍竟然也没处理 还有80分
//细节就是从上一层到这一层的时候有可能会有需要超过t才能到达的需要算入上一层

清北合肥day1的更多相关文章

  1. 清明培训 清北学堂 DAY1

    今天是李昊老师的讲授~~ 总结了一下今天的内容: 1.高精度算法 (1)   高精度加法 思路:模拟竖式运算 注意:进位 优化:压位 程序代码: #include<iostream>#in ...

  2. 4.4清北学堂Day1 主要内容:数论,数学

    Day 1; 1.常见的高精 输入输出都用字符数组: 字符数组的实际长度用strlen()来求: 运算时倒序运算,把每一个字符都-‘0’ 进位的处理上也要注意: 小数减大数时先判断大小然后加负号 只能 ...

  3. 清北国庆day1 (脑)残

    (留坑) /* 不知道为什要找的循环节TM这么长 */ #include<cstdio> #include<cstdlib> #include<cstring> u ...

  4. 五一培训 清北学堂 DAY1

    今天是冯哲老师的讲授~ 1.枚举 枚举也称作穷举,指的是从问题所有可能的解的集合中一一枚举各元素. 用题目中给定的检验条件判定哪些是无用的,哪些是有用的.能使命题成立的即为其解. 例一一棵苹果树上有n ...

  5. 清北合肥day2-day5

    day2:215这一天的题目相对比较模板化t1:50看错了数据范围求n个点到给出的点哈夫曼距离的最小值我想到的是一种非常zz的做法我们二分答案,然后判断是否在这个距离内有点但是这样前缀和不是很好维护于 ...

  6. 2017 五一 清北学堂 Day1模拟考试结题报告

    预计分数:100+50+50 实际分数:5+50+100 =.= 多重背包 (backpack.cpp/c/pas) (1s/256M) 题目描述 提供一个背包,它最多能负载重量为W的物品. 现在给出 ...

  7. 清北Day4

    版权声明:如需转载请标明出处,未得到本人许可请勿转载. 今天就可以看到传说中的 数据结构 嘿嘿嘿嘿 都有什么呢 链表 队列 栈 st表 hash 线段树 树链剖分 一.栈: 放出来这个看烂了的图 值得 ...

  8. 清北学堂2017NOIP冬令营入学测试P4745 B’s problem(b)

    清北学堂2017NOIP冬令营入学测试 P4745 B's problem(b) 时间: 1000ms / 空间: 655360KiB / Java类名: Main 背景 冬令营入学测试 描述 题目描 ...

  9. 清北学堂2017NOIP冬令营入学测试 P4744 A’s problem(a)

    清北学堂2017NOIP冬令营入学测试 P4744 A's problem(a) 时间: 1000ms / 空间: 655360KiB / Java类名: Main 背景 冬令营入学测试题,每三天结算 ...

随机推荐

  1. 解决python发送multipart/form-data请求上传文件的问题

    服务器接收文件时,有时会使用表单接收的方式,这意味着我们需要使用Python的requests上传表单数据和文件. 常用的方式一般如下: data = { 'name': 'nginx' } file ...

  2. $Django orm增删改字段、建表 ,单表增删改查,Django请求生命周期

    1 orm介绍  ORM是什么   ORM 是 python编程语言后端web框架 Django的核心思想,“Object Relational Mapping”,即对象-关系映射,简称ORM.  一 ...

  3. fpm...failed: Cannot assign requested address

    2017年6月23日 16:00:28 星期五 启动fpm的时候总是报错, 看了网上说的修改rlimit值但是不管用 后来发现fpm配置文件监听的地址写错了, 127.0.0.1 写成了 172.0. ...

  4. 模拟电路学习之NMOS开关电路1

  5. 如何在同一台电脑上使用两个github账户(亲测有效)

    1 前言 由于有两个github账号,要在同一台电脑上同步代码,需要给每一个账号添加一个SSH public key,此时推送时git push origin,不知道是哪个账号的远程仓库名称,所以需要 ...

  6. redhat7.3安装python3 pip3

    首先系统自带的python是python2 我们需要安装一个python3(这里的所有源码包都可以在环境中准备好,这样没有网也可以进行安装) 安装python 1.安装环境 # yum -y inst ...

  7. Web框架之Bootstrap

    一.Bootstrap简介 Bootstrap,来自Twitter的设计师Mark Otto和Jacob Thornton合作开发,是目前很受欢迎的Web前端开源框架. Bootstrap 是基于HT ...

  8. 其他 Confluence 6 的 cookies 和备注

    其他 Confluence 的 cookies 针对 Confluence 的功能,我们还使用了其他的一些 cookies 来存储基本的 产品持久性(product presentation).Con ...

  9. Confluence 6 修改日志文件的大小数量和级别

    修改日志文件的大小和数量 在默认的情况下,Confluence 将会保持 5 个日志文件,每一个日志文件的大小超过 20 MB 的时候将会被重写. 你可以修改默认日志文件的大小和数量,通过编辑 < ...

  10. Confluence 6 配置服务器基础地址示例

    如果 Confluence 的安装是没有安装在非根目录路径(这个是上下文路径),然后服务器基础 URL 地址应该包括上下文地址.例如,你的 Confluence 正在运行在下面的地址: http:// ...