NOIP模拟 9.09
AK300分
果实计数
(count.pas/.c/.cpp)
时间限制:1s,空间限制32MB
题目描述:
淘淘家有棵奇怪的苹果树,这棵树共有n+1层,标号为0~n。这棵树第0层只有一个节点,为根节点。已知这棵树为b叉树,且保证是一颗满b叉树。如图为一颗满3叉树。
现在,该树第n层的每个节点上都结出了一个苹果,淘淘想知道共结了多少苹果。由于数量可能很大,答案要求输出mod k后的结果。
输入描述:
给出第1层的节点数b和层数n和k.
输出描述:
输出苹果数mod k后的结果。
样例输入:
2 10 9
样例输出:
7
数据范围:
30%的数据保证:b<=100,n<=10, k<=100.
100%的数据保证:b<2^31,n<2^31,k<=2^15.
【题解】
嗯?求n层完全b叉树的节点数?
嗯。。等比数列求和公式。。不对,模数是k,1-q不一定有逆元。。嗯。分治nlog^2n算法。。
嗯。。嗯?
求完全b叉树第n层节点数?
woccccccccc
这题太神辣!!
传说中的二进制拆分倍增算法啊!
(简称快速幂)
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib> inline void read(long long &x)
{
x = ;char ch = getchar(), c = ch;
while(ch < '' || ch > '')c = ch, ch = getchar();
while(ch <= '' && ch >= '')x = x * + ch - '', ch = getchar();
if(c == '-')x = -x;
} long long b,n,k; long long pow(long long a, long long b)
{
register long long r = , base = a%k;
for(;b;b >>= )
{
if(b & )r *= base, r %= k;
base *= base, base %= k;
}
return r%k;
} int main()
{
read(b), read(n), read(k);
printf("%lld", pow(b,n)%k);
return ;
}
T1
打地鼠游戏
(mouse.pas/.c/.cpp)
时间限制:1s 空间限制:128MB
题目描述:
伟大的2320学长特别喜欢打地鼠游戏,这个游戏开始后,会在地板上冒出一些地鼠来,你可以用榔头去敲击这些地鼠,每个地鼠被敲击后,将会增加相应的游戏分值。可是,所有地鼠只会在地上出现一段时间(而且消失后再也不会出现),每个地鼠都在0时刻冒出,但停留的时间可能是不同的,而且每个地鼠被敲击后增加的游戏分值也可能是不同。
最近2320学长经常玩这个游戏,以至于敲击每个地鼠只要1秒。他在想如何敲击能使总分最大。
输入描述:
输入包含3行,第一行包含一个整数n(1<=n<=100000)表示有n个地鼠从地上冒出来,第二行n个用空格分隔的整数表示每个地鼠冒出后停留的时间(Maxt<=50000),第三行n个用空格分隔的整数表示每个地鼠被敲击后会增加的分值v(v<=1000)。每行中第i个数都表示第i个地鼠的信息。
样例输入:
5
5 3 6 1 4
7 9 2 1 5
样例输出:
24
数据范围:
30%的数据保证n<=100, t<=500,v<=50
60%的数据保证 n<=10000,t<=3000,v<=500
100%的数据保证 n<=100000,t<=5000,v<=1000
【题解】
嗯。。我太弱辣,居然没有一眼看出贪心策略
把时间限制从大到小排列
从大到小扫时间
把当前时间点的地鼠压入堆
每个时间点从堆中取最大值
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <queue>
#include <algorithm>
#include <vector>
#define max(a, b) ((a) > (b) ? (a) : (b)) inline void read(int &x)
{
x = ;char ch = getchar(), c = ch;
while(ch < '' || ch > '')c = ch, ch = getchar();
while(ch <= '' && ch >= '')x = x * + ch - '', ch = getchar();
if(c == '-')x = -x;
} const int MAXN = + ; int n, ma, ans; struct Node
{
int v,t;
}node[MAXN]; bool cmp(Node a, Node b)
{
return a.t > b.t;
} struct cmpp
{
bool operator()(Node a, Node b)
{
return a.v < b.v;
}
}; std::priority_queue<Node, std::vector<Node>, cmpp> q; int main()
{
read(n);
for(register int i = ;i <= n;++ i)
read(node[i].t), ma = max(ma, node[i].t);
for(register int i = ;i <= n;++ i)
read(node[i].v);
std::sort(node + , node + + n, cmp);
register Node tmp;
node[n + ].t = 0x7fffffff;
for(register int now = ma, i = ;now >= ;-- now)
{
while(node[i].t == now)
{
q.push(node[i]);
++ i;
}
if(q.size())
{
tmp = q.top();
ans += tmp.v;
q.pop();
}
}
printf("%d", ans);
return ;
}
T2
斗牛
(niuniu.pas/.c/.cpp)
时间限制:2s,空间限制:128MB
题目描述:
为了更快的获取欢乐豆(因为本蒟蒻斗地主水平太低233),hzwer准备去玩欢乐斗牛,但是由于rp太差,hzwer在一个小时之内输光了20个QQ号的欢乐豆(每天系统会赠送每个号4000欢乐豆)。第二天他准备继续再战欢乐斗牛的抢庄模式,但是由于缺乏思考能力,hzwer需要编写一个程序来决定是否抢庄。
在玩家决定是否抢庄之前,系统会下发四张牌称为底牌,最后一张牌在决定后发放,每张牌可能为1-10,J,Q,K,hzwer认为最后一张牌为每一种点数的概率是相同的,对于一个由五张牌组成的牌型,分数计算规则如下,请你得出底牌的期望得分。
首先注意:在斗牛中,J,Q,K的点数视为10点,即11,12,13在计算头或点数时均视为10,所有牌无视其花色。
首先考虑特殊牌型
- 四炸——即5张牌中有4张一样的牌(如33334),分数为40
- 五花牛——五张牌均是J,Q或K(如JQJQK),分数为50
- 五小牛——五张牌点数都小于5且点数和小于或等于10(如11223),分数为60
若有多种特殊牌型,得分取分数最大的特殊牌型(如11112视为五小牛)。
如果没有特殊牌型,首先判断牌型是否有“头”,如果五张牌中任意三张的总和为10的倍数如(1K9)即为有“头”,无“头”的牌型得分为0。
对于有头的牌型得分计算如下:
所有牌的和记为t,如果t%10=0则称为“牛牛”,牛牛得分为30;t%10<7称为“小牛”,得分为t%10,否则得分为(t%10)*2。
输入描述:
第一行一个整数T,表示T组数据
每组数据占一行,为4个整数(11,12,13分别表示J,Q,K)
输出描述:
对于输入的n行,输出每4张牌的期望得分(四舍五入)
样例输入:
2
2 2 2 2
10 4 5 12
样例输出:
43
9
样例解释:
对于2 2 2 2,最后一张为1或2时,构成五小牛,否则为炸弹,期望得分为(2*60+11*40)/13=43.08
对于10 4 5 12,最后一张为1-13的得分分别是30+0+0+0+4+5+0+0+0+18+18+18+18=111/13=8.54
1为牛牛,5为4点,6为5点,10-13为9点,其余无头
数据范围:
30%的数据T<=5
70%的数据T<=100000
100%的数据T<=1000000
蒟蒻感言:
在某次对局中发现期望得分很高,果断抢了庄,但是发现有闲家3个“牛牛”,瞬间消失20W欢乐豆
【题解】
我太弱辣。。这种题居然还得调一会儿才能调对,应该是一遍过的啊
情况数*10~询问数
所以预处理所有情况即可
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#define min(a, b) ((a) < (b) ? (a) : (b)) inline void read(int &x)
{
x = ;char ch = getchar(), c = ch;
while(ch < '' || ch > '')c = ch, ch = getchar();
while(ch <= '' && ch >= '')x = x * + ch - '', ch = getchar();
if(c == '-')x = -x;
} int num[],ans[][][][][]; int main()
{
register int t;
read(t);
register int sum,a,b,c,d,e,ta,tb,tc,td,te;
for(a = ;a <= ;++ a)
for(b = ;b <= ;++ b)
for(c = ;c <= ;++ c)
for(d = ;d <= ;++ d)
for(e = ;e <= ;++ e)
{
if(a < && b < && c < && d < && e < && a + b + c + d + e <= )
{
ans[a][b][c][d][e] = ;
}
else if(a > && b > && c > && d > && e > )
{
ans[a][b][c][d][e] = ;
}
else if((a == b&&b==c&&c==d) || (a==b&&b==c&&c==e) || (a==b&&b==d&&d==e) || (b==c&&c==d&&d==e) || (a==c&&c==d&&d==e))
{
ans[a][b][c][d][e] = ;
}
else
{
ta = min(, a), tb = min(, b), tc = min(, c), td = min(, d), te = min(, e);
if((ta + tb + tc)% == || (ta + tb + td)% == || (ta + tb + te)% == || (tb + tc + td)% == || (tb + tc + te)% == || (ta + tc + td)% == || (ta + tc + te)% == || (ta + td + te)% == || (tb + td + te)% == || (tc + td + te)% == )
{
sum = ta + tb + tc + td + te;
if(sum% == ) ans[a][b][c][d][e] = ;
else if(sum% < )ans[a][b][c][d][e] = sum%;
else ans[a][b][c][d][e] = (sum%)*;
}
else
{
ans[a][b][c][d][e] = ;
}
}
}
for(;t;--t)
{
read(num[]),read(num[]),read(num[]),read(num[]);
sum = ;
for(register int i = ;i <= ;++ i)
{
num[] = i;
sum += ans[num[]][num[]][num[]][num[]][num[]];
}
sum = (sum/13.0) + 0.5;
printf("%d\n", sum);
}
return ;
}
T3
NOIP模拟 9.09的更多相关文章
- NOIP模拟 1
NOIP模拟1,到现在时间已经比较长了.. 那天是6.14,今天7.18了 //然鹅我看着最前边缺失的模拟1,还是终于忍不住把它补上,为了保持顺序2345重新发布了一遍.. # 用 户 名 ...
- NOIP模拟赛20161022
NOIP模拟赛2016-10-22 题目名 东风谷早苗 西行寺幽幽子 琪露诺 上白泽慧音 源文件 robot.cpp/c/pas spring.cpp/c/pas iceroad.cpp/c/pas ...
- contesthunter暑假NOIP模拟赛第一场题解
contesthunter暑假NOIP模拟赛#1题解: 第一题:杯具大派送 水题.枚举A,B的公约数即可. #include <algorithm> #include <cmath& ...
- NOIP模拟赛 by hzwer
2015年10月04日NOIP模拟赛 by hzwer (这是小奇=> 小奇挖矿2(mining) [题目背景] 小奇飞船的钻头开启了无限耐久+精准采集模式!这次它要将原矿运到泛光之源的矿 ...
- 大家AK杯 灰天飞雁NOIP模拟赛题解/数据/标程
数据 http://files.cnblogs.com/htfy/data.zip 简要题解 桌球碰撞 纯模拟,注意一开始就在袋口和v=0的情况.v和坐标可以是小数.为保险起见最好用extended/ ...
- 队爷的讲学计划 CH Round #59 - OrzCC杯NOIP模拟赛day1
题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的讲学计划 题解:刚开始理解题意理解了好半天,然后发 ...
- 队爷的Au Plan CH Round #59 - OrzCC杯NOIP模拟赛day1
题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的Au%20Plan 题解:看了题之后觉得肯定是DP ...
- 队爷的新书 CH Round #59 - OrzCC杯NOIP模拟赛day1
题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的新书 题解:看到这题就想到了 poetize 的封 ...
- CH Round #58 - OrzCC杯noip模拟赛day2
A:颜色问题 题目:http://ch.ezoj.tk/contest/CH%20Round%20%2358%20-%20OrzCC杯noip模拟赛day2/颜色问题 题解:算一下每个仆人到它的目的地 ...
随机推荐
- 进程外Session---数据库Session的配置
怎么将Session记录到数据库中呢? 其实微软已经为我们设置好了.只要我们简单的配置一下就行了. 当然也要在 “我的电脑” 鼠标右键--->管理--->服务和应用程序----> 服 ...
- C++中如何实现像Java中接口功能--C++抽象类(纯虚函数,虚函数)
在Java中定义个接口,之后可以定义不同的类来实现接口,如果有个函数的参数为这个接口的话,就可以对各自的类做出不同的响应. 如: interface animal { public void info ...
- Spring Cloud Eureka 使用外网IP和端口号进行服务注册
应用场景如下: 服务提供方(即要注册到服务中心的服务)的内网地址,外界无法访问(或者使用docker等做了应用端口等的配置),做了IP映射后,公网IP49.10.22.106映射到服务提供方的内网ip ...
- windows 服务下搭建jsp运行环境
此处搭建的是运行环境,不是开发环境. 1, 下载sdk 并安装 1.8 http://rj.baidu.com/soft/detail/14459.html?ald 2, 配置环境变量 步 ...
- 最小费用最大流——EK+SPFA
终于把最小费用最大流学会了啊-- 各种奇奇怪怪的解释我已经看多了,但在某些大佬的指点下,我终于会了. 原来是个好水的东西. 最小费用最大流是什么? 不可能不知道网络流吧?如果不知道,自行百度去-- 费 ...
- 说说前端开发中的SEO
SEO(Search Engine Optimization),就是传说中的搜索引擎优化,是指为了增加网页在搜索引擎自然搜索结果中的收录数量以及提升排序位置而做的优化行为.我认为这是一门说来简单,但操 ...
- 20191005 - New Beginning
真·反思 Before 发现$T1$是约瑟夫,$T2$不清楚,$T3$是算法进阶上的$LCIS$ During得&失 做的不错的地方: 多少想了T1的优化(最后没打完). T3的暴力写得很快也 ...
- Web充斥着存在漏洞的过期JavaScript库
虽然使用第三方软件库通常会降低开发的时间,但同时也会增加网站暴露出的攻击表面,对此我们应有充分的认识.因此需要保持第三方软件库的最新版本依赖,以便从安全更新中获益.即便如此,一份近期研究表明,在Ale ...
- MySql存储过程批量删除多个数据库中同名表中的指定字段
1. 创建存储过程batchDeleteField:删除所有名称为"MyDB_"开头的数据库中的指定字段 -- ---------------------------- -- Pr ...
- 谈谈数据库sql编写
本文主要给初学者关于关系数库的一个浮光掠影式的介绍,如果想深入理解,必须对于下文提到的每个内容单独深入学习! it-information technology的简称,中文是信息机技术,信息其实就是数 ...