Codeforces Round #105 (Div. 2) ABCDE
A. Insomnia cure
哎 只能说英语太差,一眼题我看了三分钟。
题意:给5个数k, l, m, n 和 d,求1~d中能被k, l, m, n 至少一个整除的数的个数。
题解:……
代码:
#include <iostream>
using namespace std; int main()
{
int a, b, c, d, n;
cin >> a >> b >> c >> d >> n;
int ans = ;
for (int i = ; i <= n; ++i)
if (i % a && i % b && i % c && i % d) ++ans;
cout << n - ans;
return ;
}
B. Escape
题意:还是5个数,vp, vd, t, f and c,公主的速度是vp,龙的速度是vd,公主先跑时间t,龙开始追公主,追到的时候,公主扔一个宝物,龙拿起回到起点然后花时间f把宝物藏起来,问最少扔多少个宝物公主才能跑距离c。
题解:模拟吧,有一个算是trick吧,就是如果vp>=vd直接输出0。
代码:
#include <iostream>
using namespace std; int main()
{
int vp, vd, t, f, c;
cin >> vp >> vd >> t >> f >> c;
double a = vp * t;
double d = vd - vp;
int ans = ;
double t1 = a / d;
a += t1 * vp; if (vp >= vd) { cout << ''; return ; } while (a < c) {
ans++;
a += vp * (f + a / vd);
t1 = a / d;
a += t1 * vp;
}
cout << ans;
return ;
}
C. Terse princess
题意:傻逼公主选夫君,n个候选人,每个人有一个财富值,当看到一个人比前面所有的人都富有,公主就喊“Oh”,当看到一个人的财富比前面所有的人的财富和都多,公主就喊“Wow”(此时不喊“Oh”),一共n个人,喊a次“Oh”和b次“Wow”,让你构造一个财富值顺序,构造不出就输出-1。
题解:大概想一下就能知道,先一个1,然后b个“Wow”,然后a个“Oh”,然后全是1。有个Trick,如果b=0,那么构造的数组是1 2 。。。的话,2是要“Wow”的。(div2的C题我都不会做了,弱的不行……
代码(写的比较挫):
#include <iostream>
#include <cstdio>
using namespace std; int main()
{
int a, b, n;
cin >> n >> a >> b; int i = ;
int ans[]; ans[] = ; if (b) {
for (i = ; i <= b; ++i) {
ans[i] = ans[i-] * ;
if (ans[i] > ) {
printf("-1");
return ;
}
}
for (; i <= b+a; ++i) {
ans[i] = ans[i-] + ;
}
for (; i < n; ++i) {
ans[i] = ;
}
} else {
if (a && a >= n-) {
printf("-1");
return ;
}
ans[] = ;
for (i = ; i <= a+; ++i) {
ans[i] = ans[i-] + ;
}
for(; i < n; ++i) ans[i] = ;
} printf("%d", ans[]);
for (int i = ; i < n; ++i) printf(" %d", ans[i]); return ;
}
D. Bag of mice
题意:还是傻逼公主,和龙玩游戏。有一个口袋,里面有w个白老鼠和b个黑老鼠,俩人轮流抓老鼠,第一个抓到白老鼠的人赢,龙抓一次之后会吓跑一只老鼠,吓跑的老鼠不算抓到的。公主先抓,如果没有人抓到白老鼠就是龙赢。求公主赢的概率。
题解:比较简单的概率DP。从初态正推。
代码:
#include <iostream>
#include <cstdio>
using namespace std;
const int N = ;
double dp[N][N][];
int main()
{
int a, b;
cin >> a >> b;
dp[a][b][] = ;
for (int i = a; i >= ; --i) {
for (int j = b; j >= ; --j) {
if (j) dp[i][j-][] += dp[i][j][] * j / (i+j);
if (j > ) dp[i][j-][] += dp[i][j][] * j / (i+j) * (j-) / (i+j-);
if (i && j) dp[i-][j-][] += dp[i][j][] * j / (i+j) * i / (i+j-);
}
}
double ans = ;
for (int i = a; i >= ; --i)
for (int j = b; j >= ; --j)
if (i) ans += dp[i][j][] * i / (i+j);
printf("%.9f", ans);
return ;
}
E. Porcelain
题意:N个架子,每个架子上有一些瓷器,对于每个架子只能从旁边拿一个(左边或右边),求问M次最多拿总价值多少的瓷器。
题解:类似01背包。预处理出每个架子拿1~c(假设该架子一共有C个瓷器)个瓷器的最大值。每个架子只能选择一次。具体看代码吧。
代码:
#include <iostream>
#include <cstdio>
using namespace std;
const int N = ; int a[N], c[N];
int v[N][N];
int dp[];
int l[N], r[N];
int main()
{
int n, m;
cin >> n >> m;
for (int i = ; i <= n; ++i) {
cin >> c[i];
for (int j = ; j <= c[i]; ++j) cin >> a[j];
for (int j = ; j <= c[i]; ++j) {
l[j] = l[j-] + a[j];
r[j] = r[j-] + a[c[i]-j+];
}
for (int j = ; j <= c[i]; ++j)
for (int k = ; k <= j; ++k)
v[i][j] = max(v[i][j], l[k] + r[j-k]);
}
for (int i = ; i <= n; ++i)
for (int j = m; j >= ; --j)
for (int k = ; k <= c[i] && k <= j; ++k)
dp[j] = max(dp[j], dp[j-k] + v[i][k]); cout << dp[m];
return ;
}
Codeforces Round #105 (Div. 2) ABCDE的更多相关文章
- Codeforces Round #261 (Div. 2)[ABCDE]
Codeforces Round #261 (Div. 2)[ABCDE] ACM 题目地址:Codeforces Round #261 (Div. 2) A - Pashmak and Garden ...
- 水题 Codeforces Round #105 (Div. 2) B. Escape
题目传送门 /* 水题:这题唯一要注意的是要用double,princess可能在一个小时之内被dragon赶上 */ #include <cstdio> #include <alg ...
- Codeforces Round #279 (Div. 2) ABCDE
Codeforces Round #279 (Div. 2) 做得我都变绿了! Problems # Name A Team Olympiad standard input/outpu ...
- Codeforces Round #460 (Div. 2) ABCDE题解
原文链接http://www.cnblogs.com/zhouzhendong/p/8397685.html 2018-02-01 $A$ 题意概括 你要买$m$斤水果,现在有$n$个超市让你选择. ...
- codeforces水题100道 第四题 Codeforces Round #105 (Div. 2) A. Insomnia cure (math)
题目链接:http://www.codeforces.com/problemset/problem/148/A题意:求1到d中有多少个数能被k,l,m,n中的至少一个数整出.C++代码: #inclu ...
- Codeforces Round #105 (Div. 2) D. Bag of mice 概率dp
题目链接: http://codeforces.com/problemset/problem/148/D D. Bag of mice time limit per test2 secondsmemo ...
- Codeforces Round #546 (Div. 2) ABCDE 题解
1136A: 题意:一本书有n个章节,每个章节的分别在li到ri页,小明读完书后将书折在第k页,问还有多少章节没有读 题解:控制k在li~ri的范围内后输出n-i即可 #include <set ...
- Codeforces Round #105 (Div. 2) E. Porcelain —— DP(背包问题)
题目链接:http://codeforces.com/problemset/problem/148/E E. Porcelain time limit per test 1 second memory ...
- Codeforces Round #105 (Div. 2) 148C Terse princess(脑洞)
C. Terse princess time limit per test 1 second memory limit per test 256 megabytes input standard in ...
随机推荐
- Flask, Tornado, GEvent, 以及它们的结合的性能比较
Flask, Tornado, GEvent, 以及它们的结合的性能比较 英文: http://blog.wensheng.com/2011/10/performance-of-flask-torna ...
- Spring在代码中获取bean的几种方式
方法一:在初始化时保存ApplicationContext对象 方法二:通过Spring提供的utils类获取ApplicationContext对象 方法三:继承自抽象类ApplicationObj ...
- 李洪强iOS开发本人集成环信的经验总结_03_注册
李洪强iOS开发本人集成环信的经验总结_03_注册 环信一共提供了三种注册的方法: 01 同步注册: 02 异步注册: 03 - 使用代理回调进行注册,但是3.0没有了,3.0之前有 调用注册 ...
- HeadFirst设计模式之单例模式
一. 1.The Singleton Pattern ensures a class has only one instance, and provides a global point of acc ...
- 忽然发现,if语句没有相应的continue功能
就是剩下部分语句不用执行了,但是又不退出当前函数,只退出当前if块.虽说else可以解决问题,但是这样还是会重复写代码,假如continue语句后面的内容是相同的话.当然可以通过再次加一个if语句解决 ...
- Centos之LAMP环境搭建
原文:http://blog.sina.com.cn/s/blog_c02ed6590101d2sl.html 一.安装 MySQL 首先来进行 MySQL 的安装.打开超级终端,输入: [root@ ...
- the service mysql56 was not found in the Windows services的解决办法
mysql无法启动,无法改变状态-CSDN论坛-CSDN.NET-中国最大的IT技术社区 http://bbs.csdn.net/topics/390943788 具体描述: 关闭,重启mysql ...
- NFC(9)NDEF文本格式规范及读写示例(解析与封装ndef 文本)
只有遵守NDEF文本格式规范的数据才能写到nfc标签上. NDEF文本格式规范 不管什么格式的数据本质上都是由一些字节组成的.对于NDEF文本格式来说. 1,这些数据的第1个字节描述了数据的状态, 2 ...
- 彻底搞懂javascript中的match, exec的区别
在工作中经常发现一些同学把这两个方法搞混,以致把自己弄的很郁闷.所以我和大家一起来探讨一下这两个方法的奥妙之处吧. 我们分以下几点来讲解: 相同点: 1.两个方法都是查找符合条件的匹配项,并以数组形式 ...
- poj2752 水题
又2b了一次…… var s:ansistring; ans,pre:..] of longint; i,k,tot:longint; procedure main; begin pre[]:=;k: ...