寒假训练3解题报告 CodeForces #148
CodeForces 148B
一道简单模拟,判断龙能够抓到公主几次,如果公主和龙同时到达公主的城堡,不算龙抓住她,因为路程除以速度可能会产生浮点数,所以这里考虑一下精度问题
#include <iostream>
#include <cstdio>
#include <cstring>
#include <iomanip>
#include <algorithm>
using namespace std;
#define eps 1e-19 int ok(int x)
{
if(abs(x)<=eps) return ;
else return x>?:-;
} int main()
{
// freopen("a.in" , "r", stdin);
double vp , vd , t , f , c;
while(~scanf("%lf%lf%lf%lf%lf", &vp , &vd , &t , &f , &c))
{
if(ok(vp-vd) >= ){
puts("");
continue;
}
double del = t*vp;
double cur = del;
int ans = ;
double t1 , t2;//t1princess从dragon在cave时到达目的地要的时间,t2表示dragon从cave追上princess要的时间
t1 = (c-cur)/vp , t2 = (del)/(vd-vp);
while(ok(t1-t2) > ){
cur += t2*vp;
cur = cur+(cur/vd+f)*vp;
del = cur;
t1 = (c-cur)/vp , t2 = (del)/(vd-vp);
ans++;
}
printf("%d\n" , ans);
}
return ;
}
CodeForces 148C
得到a个数,这些数都比先前的数大但不能比前面所有数的和大,得到b个数这些数都比前面的所有数大
这道题自己写的有点坑,太长了,但其实没那么麻烦
那个Wow成立,说明当前数大于前面所有数的和,我们为了使数尽可能小,所以总是将Wow成立的数放前面,Oh成立的数方面,最后多余的数都和前一个数一样即可
当 a+b+1 = n b=0,a>0时是不成立的,因为第二个数开始就必须比前一个数大,那么第二个数比前面的大,也就是大于前面的总和,必然得到的是Wow,与b=0矛盾
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int num[]; int main()
{
// freopen("a.in" , "r", stdin);
int n,a,b,sum;
while(~scanf("%d%d%d" , &n , &a , &b))
{
int flag = ; if(a+b+ == n){
num[] = , sum = ;
if(b == && a>) flag = ;
for(int i= ; i<=+b ; i++)
{
num[i] = sum+ , sum += num[i];
if(num[i]>=){
flag=;
break;
}
}
for(int i=+b ; i<=n ; i++){
num[i] = num[i-]+ , sum += num[i];
if(num[i]>=){
flag=;
break;
}
} }
else{
sum = ;
num[] = , sum = ;
if(b>){
for(int i= ; i<=+b ; i++)
{
num[i] = sum+ , sum+=num[i];
if(num[i]>=){
flag=;
break;
}
}
for(int i=+b ; i<=+a+b ; i++)
{
num[i] = num[i-]+;
if(num[i]>=){
flag=;
break;
}
}
for(int i=+a+b ; i<=n ; i++)
num[i] = num[i-];
}
else{
for(int i= ; i<=n-a ; i++)
num[i] = ;
for(int i=n-a+ ; i<=n ; i++)
num[i] = num[i-]+;
}
}
if(!flag){
puts("-1");
continue;
}
for(int i= ; i<=n ; i++){
if(i==) printf("%d" , num[i]);
else printf(" %d" , num[i]);
}
puts("");
}
return ;
}
Codeforces 148D
简单的概率dp过程
用dp[0][w][b]表示后取完后游戏还未结束得到w只老鼠,b只黑鼠的概率
用dp[1][w][b]表示龙取完后游戏还未结束得到w只白鼠,b只黑鼠的概率
最后答案就是所有龙取完后游戏未结束的局面*一个后取到白鼠的概率
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
const int N = ;
double dp[][N][N]; int main()
{
// freopen("a.in" , "r", stdin);
int w , b;
while(~scanf("%d%d" , &w , &b))
{
memset(dp , , sizeof(dp));
dp[][w][b] = 1.0;
for(int i=w ; i>= ; i--){
for(int j=b ; j>= ; j--){
dp[][i][j] += dp[][i][j+]*(j+)/(i+j+);
dp[][i][j] += dp[][i][j+]*(j+)/(i+j+)*(j+)/(i+j+) + dp[][i+][j+]*(j+)/(i+j+)*(i+)/(i+j+);
}
}
double ans = ;
for(int i= ; i<=w ; i++)
for(int j= ; j<=b ; j++){
ans += dp[][i][j]*i/(i+j);
}
printf("%.10f\n" , ans);
}
return ;
}
codeforces 148E
每行书都是跟其他行没有直接关系的,求出每行书取得的个数达到的最大值
然后将n行结合在一起当成背包问题看
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
const int N = ;
int dp[N][N][N] , val[N][N] , sum[N][N];
int maxn[N][N] , cnt[N];
int bag[N][N*N]; int main()
{
// freopen("a.in" , "r" , stdin);
int n,m;
while(scanf("%d%d" , &n , &m) != EOF)
{
memset(dp , , sizeof(dp));
memset(maxn , , sizeof(maxn));
memset(sum , , sizeof(sum));
for(int i= ; i<=n ;i++){
scanf("%d" , &cnt[i]);
for(int j= ; j<=cnt[i] ; j++){
scanf("%d" , &val[i][j]);
sum[i][j] = sum[i][j-]+val[i][j];
for(int k= ; k<=cnt[i] ; k++){
for(int l= ; l<=k+ ; l++){
maxn[i][k] = max(maxn[i][k] , sum[i][cnt[i]]-sum[i][l+cnt[i]-k-] + sum[i][l-]);
}
}
}
}
memset(bag , , sizeof(bag));
for(int i= ; i<=n ; i++){
for(int k= ; k<=cnt[i] ; k++){
for(int j= ; j<=m ; j++){
bag[i][j] = max(bag[i][j] , bag[i-][j]);
if(j>=k)
bag[i][j] = max(bag[i][j] , bag[i-][j-k]+maxn[i][k]);
}
}
}
printf("%d\n" , bag[n][m]);
}
return ;
}
寒假训练3解题报告 CodeForces #148的更多相关文章
- ZOJ Monthly, January 2018 训练部分解题报告
A是水题,此处略去题解 B - PreSuffix ZOJ - 3995 (fail树+LCA) 给定多个字符串,每次询问查询两个字符串的一个后缀,该后缀必须是所有字符串中某个字符串的前缀,问该后缀最 ...
- cf1189解题报告
cf1189div2解题报告 codeforces A 答案要不是一串要不就是去掉最后一个字母的两串 #include <bits/stdc++.h> #define ll long lo ...
- codeforces 476C.Dreamoon and Sums 解题报告
题目链接:http://codeforces.com/problemset/problem/476/C 题目意思:给出两个数:a 和 b,要求算出 (x/b) / (x%b) == k,其中 k 的取 ...
- Codeforces Round #378 (Div. 2) D题(data structure)解题报告
题目地址 先简单的总结一下这次CF,前两道题非常的水,可是第一题又是因为自己想的不够周到而被Hack了一次(或许也应该感谢这个hack我的人,使我没有最后在赛后测试中WA).做到C题时看到题目情况非常 ...
- [置顶] 刘汝佳《训练指南》动态规划::Beginner (25题)解题报告汇总
本文出自 http://blog.csdn.net/shuangde800 刘汝佳<算法竞赛入门经典-训练指南>的动态规划部分的习题Beginner 打开 这个专题一共有25题,刷完 ...
- Codeforces Round 665 赛后解题报告(暂A-D)
Codeforces Round 665 赛后解题报告 A. Distance and Axis 我们设 \(B\) 点 坐标为 \(x(x\leq n)\).由题意我们知道 \[\mid(n-x)- ...
- Codeforces Round 662 赛后解题报告(A-E2)
Codeforces Round 662 赛后解题报告 梦幻开局到1400+的悲惨故事 A. Rainbow Dash, Fluttershy and Chess Coloring 这个题很简单,我们 ...
- Codeforces Educational Round 92 赛后解题报告(A-G)
Codeforces Educational Round 92 赛后解题报告 惨 huayucaiji 惨 A. LCM Problem 赛前:A题嘛,总归简单的咯 赛后:A题这种**题居然想了20m ...
- Codeforces Round #382 (Div. 2) 解题报告
CF一如既往在深夜举行,我也一如既往在周三上午的C++课上进行了virtual participation.这次div2的题目除了E题都水的一塌糊涂,参赛时的E题最后也没有几个参赛者AC,排名又成为了 ...
随机推荐
- angular2+typescript在asp.net MVC Web项目上的实现
网上现在还没有关于angular2+typescript在asp.net mvc web项目上的实现的系统介绍,这里我也只是探索到了一个简单的方式,还有很多问题没能解决.但是能有个好的开头也值得记录一 ...
- jQuery select年月日(生日)选择器
实际项目中,在用户的个人中心,编辑用户资料时经常会遇到选择生日选项的问题. 因为我项目工程中没有使用如jQuery UI的插件性下拉列表,所以选择select + option的原生方式,实现选择器. ...
- JAVA高级特性反射和注解
反射: 枚举反射泛型注解.html34.3 KB 反射, 主要是指通过类加载, 动态的访问, 检测和修改类本身状态或行为的一种能力, 并能根据自身行为的状态和结果, 调整或修改应用所描述行为的状态和相 ...
- LN : leetcode 70 Climbing Stairs
lc 70 Climbing Stairs 70 Climbing Stairs You are climbing a stair case. It takes n steps to reach to ...
- [BZOJ1025][SCOI2009]游戏 DP+置换群
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1025 题目中的排数就是多少次回到原来的序列.很显然对于题目所描述的任意一种对应法则,其中一 ...
- linux下mysql开启可访问
修改mysql配置连接信息 将bind-address注释 vim /etc/my.cnf 修改mysql用户授权 mysql>GRANT ALL PRIVILEGES ON *.* TO ' ...
- vue路由细节探讨
1.使用router-link 不会让页面刷新,使用a标签会使页面刷新.2.router-link 里面的to="/路由地址" tag=""自定义标签" ...
- 【Lucene】实现全文索引
2. Lucene 实现全文检索的流程2.1.索引和搜索流程图 绿色表示索引过程,对要搜索的原始内容进行索引构建一个索引库,索引过程包括:确定原始内容即要搜索的内容 -> 采集文档 -> ...
- Python3.0 操作MySQL数据库执行SQL语句
py3不支持MySQLdb,需要导入pymysql模块 # coding: utf-8 # Team : Quality Management Center # Author:Carson # Dat ...
- js 作用域 ?????
///*第一种情况 */ //var mycars = new Array() //mycars[0] = 0; //mycars[1] = 1; //mycars[2] = 2; //functio ...