清北合肥day1
题目:
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的更多相关文章
- 清明培训 清北学堂 DAY1
今天是李昊老师的讲授~~ 总结了一下今天的内容: 1.高精度算法 (1) 高精度加法 思路:模拟竖式运算 注意:进位 优化:压位 程序代码: #include<iostream>#in ...
- 4.4清北学堂Day1 主要内容:数论,数学
Day 1; 1.常见的高精 输入输出都用字符数组: 字符数组的实际长度用strlen()来求: 运算时倒序运算,把每一个字符都-‘0’ 进位的处理上也要注意: 小数减大数时先判断大小然后加负号 只能 ...
- 清北国庆day1 (脑)残
(留坑) /* 不知道为什要找的循环节TM这么长 */ #include<cstdio> #include<cstdlib> #include<cstring> u ...
- 五一培训 清北学堂 DAY1
今天是冯哲老师的讲授~ 1.枚举 枚举也称作穷举,指的是从问题所有可能的解的集合中一一枚举各元素. 用题目中给定的检验条件判定哪些是无用的,哪些是有用的.能使命题成立的即为其解. 例一一棵苹果树上有n ...
- 清北合肥day2-day5
day2:215这一天的题目相对比较模板化t1:50看错了数据范围求n个点到给出的点哈夫曼距离的最小值我想到的是一种非常zz的做法我们二分答案,然后判断是否在这个距离内有点但是这样前缀和不是很好维护于 ...
- 2017 五一 清北学堂 Day1模拟考试结题报告
预计分数:100+50+50 实际分数:5+50+100 =.= 多重背包 (backpack.cpp/c/pas) (1s/256M) 题目描述 提供一个背包,它最多能负载重量为W的物品. 现在给出 ...
- 清北Day4
版权声明:如需转载请标明出处,未得到本人许可请勿转载. 今天就可以看到传说中的 数据结构 嘿嘿嘿嘿 都有什么呢 链表 队列 栈 st表 hash 线段树 树链剖分 一.栈: 放出来这个看烂了的图 值得 ...
- 清北学堂2017NOIP冬令营入学测试P4745 B’s problem(b)
清北学堂2017NOIP冬令营入学测试 P4745 B's problem(b) 时间: 1000ms / 空间: 655360KiB / Java类名: Main 背景 冬令营入学测试 描述 题目描 ...
- 清北学堂2017NOIP冬令营入学测试 P4744 A’s problem(a)
清北学堂2017NOIP冬令营入学测试 P4744 A's problem(a) 时间: 1000ms / 空间: 655360KiB / Java类名: Main 背景 冬令营入学测试题,每三天结算 ...
随机推荐
- EntityFramework之事务
一.EF事务 引用程序集 using System.Transactions; 用法 var writer = new System.IO.StringWriter(); try { using (v ...
- hibernate学习笔记第七天:二级缓存和session管理
二级缓存配置 1.导入ehcache对应的三个jar包 ehcache/*.jar 2.配置hibernate使用二级缓存 2.1设置当前环境开始二级缓存的使用 <property name=& ...
- 【SCOI2010】序列操作
各种繁琐的线段树标记操作...赤裸裸的码农题. 调了一个晚上,最后写篇题解. 题解亮点:代码短,~~跑得慢(连第一页都没挤进去)~~ 其实我跟你们说啊,代码短是好事~~(这里不是说压行好,我的代码不压 ...
- 006_理解inode
inode是一个重要概念,是理解Unix/Linux文件系统和硬盘储存的基础. 我觉得,理解inode,不仅有助于提高系统操作水平,还有助于体会Unix设计哲学,即如何把底层的复杂性抽象成一个简单概念 ...
- sugarCRM文档翻译1
2018-3-9 14:42:14 星期五 本文分两部分: 第一部分是从index.php入口开始的代码执行的部分流程 第二部分是对官方文档的翻译 第一部分: 流程: 入口文件: index.php ...
- python学习第5天
数据类型:字典 字典 why: 列表的缺点: 1,列表如果存储的数据比较多,那么他的查询速度相对慢. 2,列表存储的数据关联性不强. what: python基础数据类型之一:字典. python中唯 ...
- java8 常用函数式接口
public static void main(String[] args) { // TODO Auto-generated method stub //函数式接口 Function<Inte ...
- 【原创】运维基础之OpenResty(Nginx+Lua)+Kafka
使用docker部署 1 下载 # wget https://github.com/doujiang24/lua-resty-kafka/archive/v0.06.tar.gz# tar xvf v ...
- java按照关键字指定的key删除redis(支持模糊删除)
pom依赖: <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</a ...
- ACM-ICPC 2018 焦作赛区网络预赛 I Save the Room
Bob is a sorcerer. He lives in a cuboid room which has a length of AAA, a width of BBB and a height ...