清北合肥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 背景 冬令营入学测试题,每三天结算 ...
随机推荐
- RESTful API 设计指南(转)
网络应用程序,分为前端和后端两个部分.当前的发展趋势,就是前端设备层出不穷(手机.平板.桌面电脑.其他专用设备......). 因此,必须有一种统一的机制,方便不同的前端设备与后端进行通信.这导致AP ...
- c++内存对齐原理
转载自http://blog.csdn.net/it_yuan/article/details/24651347 #类中的元素 0. 成员变量 1. 成员函数 2. 静态成员变量 3. 静 ...
- [MySQL]子语句的查询技巧
一.统计group by语句的行数 group by语句中,如果包含字段统计函数(诸如:count(),sum()...),这种情况下统计函数只会作用于group by的字段,因此想拿到最终结果的行数 ...
- swift 实践- 03 -- UILabel
class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() // 标签 let ...
- System.TypeInitializationException: The type initializer for 'Oracle.DataAccess.Client.OracleConnection' threw an exception. ---> Oracle.DataAccess.Client.OracleException: 提供程序与此版本的 Oracle 客户机不兼容”
.net应用程序通过Oracle.DataAccess.dll访问64位的Oracle服务器,在连接时出现以下异常:“System.TypeInitializationException: The t ...
- Confluence 6 安装 PostgreSQL
如果你的系统中还没有安装 PostgreSQL 数据库,你需要先下载后进行安装. 在安装 PostgreSQL 时候的一些小经验: 在安装的时候提供的 密码(password )是针对 'postg ...
- Tmk吃汤饭
问题 : Tmk吃汤饭 时间限制: 1 Sec 内存限制: 128 MB 题目描述 Tmk喜欢吃汤饭! Tmk喜欢吃汤饭!! Tmk喜欢吃汤饭!!! 汤饭窗口分点餐和取餐两个窗口,一位蜀黍负责点餐窗 ...
- Android Studio 设置编辑器(Editor)的字体、字体大小
操作系统:Windows 10 x64 IDE:Android Studio 3.2.1 参考:https://www.cnblogs.com/diyishijian/p/6824328.html 备 ...
- SSM文件下载
SSM框架文件下载比文件上传稍微麻烦一点,但这次还是写成最简朴的形式,哈哈~如下 参考:http://blog.csdn.net/lcx556224523/article/details/702076 ...
- Jmeter 谷歌插件工具blazemeter录制脚本
1.下载谷歌浏览器插件工具:blazemeter. 2.在谷歌浏览器中拖放安装扩展工具:blazemeter. 粘贴的图像828x219 13.5 KB 3.测试网站利用这个工具录制jmter脚本. ...