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/颜色问题 题解:算一下每个仆人到它的目的地 ...
随机推荐
- Eclipse Java开发环境的搭建
(2019年2月19日注:这篇文章原先发在自己github那边的博客,时间是2016年9月6日) 工作室的老人家们和小朋友们组成了一个Java开发学习团队,想起之前在暑假项目中学过一点Java基础知识 ...
- mysql 根据时间查询 格式转换竟然要注意大小写,天坑
时间需要转换格式在查询 查询2018年12月24日以后的记录 SELECT id FROM t_client_info WHERE DATE_FORMAT(visit_datetime,'%Y-%m- ...
- redhat4.4下安装GMT4.5.11
GMT是地学界常用的开源软件,不仅是因为其开源的特性,还有着独特的魅力. 所需要的软件如下 安装步骤: 1. Put the soft packages in one folder, i.e. /ho ...
- java面向对象特征 — 一句话概括
java基础学习总结之基本特征,最开始学习的时候,是形而上的理解,用了3年多,再回头看,理解起来颇为顺理成章 语言学习大概就是这样一种规律,学习,不甚解,应用,应用,渐深入人心,回头一看,恍然一悟 最 ...
- 【牛客挑战赛31D】 雷的打字机
题目 首先看到这个出现长度至少为\(2\)的回文子串 这就等价于不能出现两个连续且相同的字符 于是我们用概率生成函数来搞 设\(g_i\)表示\(i\)次操作后游戏没有结束的概率,\(f_{i,j}\ ...
- 【CF285E】Positions in Permutations
题目 刷水题涨信心 显然这是个广义容斥,我们现在算一下至少有\(i\)个完美数的方案数就好了 这\(1000\)的数据范围显然在暗示\(n^2\)的dp 我们注意到这个条件大概就是\(P_i=i-1\ ...
- vue 组件内引入外部在线js、css
参考:https://blog.csdn.net/u010881899/article/details/80895661 例:引入element-ui js: mounted() { const oS ...
- tensorflow+inceptionv3图像分类网络结构的解析与代码实现
tensorflow+inceptionv3图像分类网络结构的解析与代码实现 论文链接:论文地址 ResNet传送门:Resnet-cifar10 DenseNet传送门:DenseNet SegNe ...
- Leetcode938. Range Sum of BST二叉搜索树的范围和
给定二叉搜索树的根结点 root,返回 L 和 R(含)之间的所有结点的值的和. 二叉搜索树保证具有唯一的值. 示例 1: 输入:root = [10,5,15,3,7,null,18], L = 7 ...
- Gym - 102021E
Gym - 102021Ehttps://vjudge.net/problem/2109787/origin主要是一个处理精度的技巧,避免精度误差可以加eps,然后乘1e(小数点之后的位数). #in ...