清北合肥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 背景 冬令营入学测试题,每三天结算 ...
随机推荐
- centos配置小程序https和wss协议
用nginx做代理,conf.d下ssl.conf配置成https,wss在nginx.conf里http某块中配置 例代码如下: ssl.conf-->https server { liste ...
- Alpha 冲刺 (3/10)
目录 摘要 团队部分 个人部分 摘要 队名:小白吃 组长博客:hjj 作业博客:冲刺3 团队部分 后敬甲(组长) 过去两天完成了哪些任务 文字描述 组织第一次团队编程 继续阅读小程序开发文档 接下来的 ...
- Alpha 冲刺 (2/10)
目录 摘要 团队部分 个人部分 摘要 队名:小白吃 组长博客:hjj 作业博客:拿快递也不能耽搁了软工 团队部分 后敬甲(组长) 过去两天完成了哪些任务 文字描述 github代码管理规范 商家端订单 ...
- Alpha 冲刺 (1/10)
目录 摘要 团队部分 个人部分 摘要 队名:小白吃 组长博客:hjj 作业博客:来自双十一的爱 团队部分 后敬甲(组长) 过去两天完成了哪些任务 文字描述 Alpha版本的任务细分安排 leangoo ...
- 数字证书及CA的扫盲介绍
★ 先说一个通俗的例子 考虑到证书体系的相关知识比较枯燥.晦涩.俺先拿一个通俗的例子来说事儿. ◇ 普通的介绍信 想必大伙儿都听说过介绍信的例子吧?假设 A 公司的张三先生要到 B 公司去拜访,但是 ...
- pwnable.kr simple login writeup
这道题是pwnable.kr Rookiss部分的simple login,需要我们去覆盖程序的ebp,eip,esp去改变程序的执行流程 主要逻辑是输入一个字符串,base64解码后看是否与题目 ...
- MySQL的时间字段转换
使用函数DATE_FORMAT(date,format)进行转换,如 # 输出2017 :: select date_format(now(),'%Y-%c-%d %h:%i:%s'); # 输出20 ...
- Laravel 5.2 错误-----ReflectionException in compiled.php line 8572: Class App\Http\Controllers\Apih5\ZhaoshangController does not exist
测试的时候,报错了!想不到找了半天的问题,居然是个低级错误. <?php namespace App\Http\Controllers\Apih5; use Illuminate\Http\Re ...
- [C]gcc编译器的一些常用语法
简单的GCC语法: 如果你只有一个文件(或者只有几个文件),那么就可以不写Makefile文件(当然有Makefile更加方便),用gcc直接编译就行了.在这里我们只介绍几个我经常用的几个参数,第一是 ...
- Java数据结构与算法解析(十二)——散列表
散列表概述 散列表就是一种以 键-值(key-indexed) 存储数据的结构,我们只要输入待查找的值即key,即可查找到其对应的值. 散列表的思路很简单,如果所有的键都是整数,那么就可以使用一个简单 ...