9.12NOIP模拟题
NOIP 2017 全假模拟冲刺
hkd
题目名称 |
Spfa |
走楼梯缩小版 |
滑稽 |
|
题目类型 |
传统 |
传统 |
传统 |
|
可执行文件名 |
spfa |
small |
huaji |
|
输入文件名 |
spfa.in |
small.in |
huaji.in |
|
输出文件名 |
spfa.out |
small.out |
huaji.out |
|
每个测试点时限 |
1.0s |
0.2s |
1.5s |
|
内存限制 |
256 MB |
128 MB |
128 MB |
|
测试点数目 |
10 |
20 |
50 |
|
每个测试点分值 |
10 |
5 |
2 |
注意事项:
- 文件名(输入和输出文件名) 必须是英文小写。
- 若无说明,对比方式均为忽略行末空格及文末回车的全文比较。
- C/C++中函数main()的返回值必须是int,程序正常结束的返回值必须是0。
- 评测环境为cena 注意:windows下long long输入输出请使用 %I64d。
- 编译时不打开任何优化选项。
6.不用把题目粘到txt里面,题目里没有题解。
另:题目难度与题目顺序无关!
T1 Spfa
题目描述
B 国在耗资百亿元之后终于研究出了新式武器——连环阵(Zenith Protected Linked Hybrid Zone)。传说中,连环阵是一种永不停滞的自发性智能武器。但经过 A 国间谍的侦察发现,连环阵其实是由 M 个编号为 1,2,…,M 的独立武器组成的。最初,1号武器发挥着攻击作用,其他武器都处在无敌自卫状态。以后,一旦第 i(1<=i< M)号武器被消灭,1 秒种以后第 i+1 号武器就自动从无敌自卫状态变成攻击状态。当第 M 号武器被消灭以后,这个造价昂贵的连环阵就被摧毁了。
为了彻底打击 B 国科学家,A 国军事部长打算用最廉价的武器——炸弹来消灭连环阵。经过长时间的精密探测,A 国科学家们掌握了连环阵中 M 个武器的平面坐标,然后确定了 n 个炸弹的平面坐标并且安放了炸弹。每个炸弹持续爆炸时间为 5 分钟。在引爆时间内,每枚炸弹都可以在瞬间消灭离它平面距离不超过 k 的、处在攻击状态的 B 国武器。和连环阵类似,最初 a1 号炸弹持续引爆 5 分钟时间,然后 a2 号炸弹持续引爆 5 分钟时间,接着 a3 号炸弹引爆……以此类推,直到连环阵被摧毁。
显然,不同的序列 a1、a2、a3...消灭连环阵的效果也不同。好的序列可以在仅使用较少炸弹的情况下就将连环阵摧毁;坏的序列可能在使用完所有炸弹后仍无法将连环阵摧毁。现在,请你决定一个最优序列 a1、a2、a3…使得在第 ax 号炸弹引爆的时间内连环阵被摧毁。这里的 x 应当尽量小。
输入格式:
第一行包含两个整数:n 和 m
输出格式:
一行包含一个整数 x,表示斐波那契数列的第 n 项和第 m 项的最大公约数对1000000007取模后的结果。
样例输入:
4 7
样例输出:
1
对于20%的数据 1<=n,m<=2000000
对于50%的数据 1<=n,m<=200000000
对于100%的数据 1<=n,m<=10^18
/*
矩阵乘法
注意斐波那契数列性质
gcd(f[n],f[m])==f(gcd(n,m));
*/
#include<cstdio>
#include<cstring> #define ll long long
#define mod 1000000007 using namespace std;
ll t[][],ans[][],r[][]; ll gcd(ll a,ll b)
{
return !b?a:gcd(b,a%b);
} void mul(ll a[][],ll b[][])
{
memset(r,,sizeof(r));
for(int i=;i<;i++)
for(int j=;j<;j++)
for(int k=;k<;k++)
r[i][j]+=a[i][k]*b[k][j],r[i][j]%=mod;
for(int i=;i<;i++)
for(int j=;j<;j++)
a[i][j]=r[i][j];
} int main()
{
freopen("spfa.in","r",stdin);
freopen("spfa.out","w",stdout);
ll a,b;
scanf("%I64d%I64d",&a,&b);
ll p=gcd(a,b);
t[][]=t[][]=t[][]=;;
ans[][]=ans[][]=;
if(p==||p==) {printf("");return ;}
p-=;
while(p)
{
if(p&) mul(ans,t);
mul(t,t); p>>=;
}
printf("%I64d",ans[][]);
}
T2 走楼梯缩小版
每一个阳光明媚的午后,xxy 总是欢快地在楼梯上跳来跳去,两具 hkd 的尸体躺在楼梯下面,却影响不了 xxy 继续跳楼梯的想法。每次想到这个画面,xxy 总是激动地双手猛拍轮椅,仿佛要站起来一样。
由于xxy拍轮椅太过用力,所以xxy的轮椅被拍烂了,xxy掉到地上摔成了n个小的xxy,xxy们惊喜的发现楼梯刚好有n个台阶,但是xxy们在每个xxy楼梯的高度上产生了纠纷,xxy们的智慧是不一定相同的,她们认为自己上方的台阶上的xxy不能不如自己聪明,但由于xxy摔倒的时候是没有规律的,所以小的xxy们初始的位置是不一定满足他们的要求的,所以每个xxy可以送给前方与她相邻的xxy1点的智慧而交换位置。
现在给出xxy们初始的智慧,求能否通过交换来满足xxy们的要求。
如果满足,请输出“Happy”,否则输出“Sad”,并输出捶死几个小xxy可以满足xxy们的要求。
输入格式:
一个整数T,表示有T组数据。(T<=10)。
第一行包含一个整数:n(1<=n<=2*10^5)
第二行包括n个整数,第i个数表示第i个xxy的智慧。
后一个xxy排在前一个xxy的前面
输出格式
一行包含一字符串 “Happy”,或“Sad”。
如果第一行输出“Sad”,第二行一个整数,表示捶死几个小xxy可以满足xxy们的要求。
样例输入:
1
2
9 8
样例输出:
Sad
1
样例解释
不管怎么交换总是满足不了xxy们要求,而只要随便捶死一个xxy就可以满足要求。
/*
可以发现a[i]+i==a[j]+j时,i,j等价 要打死一个
所以将a[i]+i记录后
先排序再去重 就能得出答案
*/
#include<algorithm>
#include<iostream>
#include<cstdio>
using namespace std;
int a[],n,t;
int main()
{
freopen("small.in","r",stdin);
freopen("small.out","w",stdout);
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
for(int i=;i<n;i++) scanf("%d",&a[i]),a[i]+=i;
sort(a,a+n);
int t=unique(a,a+n)-a;
if(t==n){printf("Happy");}
else printf("Sad\n"),printf("%d",n-t);
}
}
T3 huaji.jpg
滑稽们在愉快地做游戏,xxy身为在跳楼梯这一极限运动领域已经登峰造极的人来说,跳楼梯已经满足不了她了,她想对滑稽们搞些大新闻。
她用比香港记者跑得还快的速度来到了滑稽树下,对着滑稽们大喊:“整个城乡结合部敢对我用这个表情的人不超过三个。”滑稽们感到很气恼,但良好的素养让他们决定不和xxy这个粗鲁的人一般计较,xxy接着喊;“南方好还是北方好?”。滑稽们再也忍不住了,决定用跳舞的方式来计算出给她来几分钟的禁言套餐。
滑稽们有三种跳舞的方式,分别是5,五和⑤。每次5可以储存一部分的能量,为五做准备,储存的能量为当前滑稽们的个数,如果每次储存之前滑稽们就有能量,就把之前的能量清空。每次五可以产生新的滑稽,每储存一点能量就可以产生一个新的滑稽,但产生新的滑稽不需要消耗能量。每次⑤可以把两个滑稽融合成一个滑稽,并结出一个滑稽果。
滑稽们其实心中已经决定了要给xxy一个n分钟的禁言套餐,跳舞只是走走形式,所以滑稽们不想消耗太多的体力,每种舞都会消耗一点的体力,所以,单纯的滑稽们把这个问题交给了你,请你在1.5s内给出答案,否则滑稽们就会和你在滑稽树前做游♂戏。
一个滑稽可以禁言一分钟。
输入格式:
第一行包含一个整数:n(1<=n<=10^6)
输出格式:
第一行包括一个整数:ans,表示最小的体力。
样例输入:
233
样例输出:
17
对于100%的数据 n<=10^6。
/*
好题,图论模型的转化(可以dp但我不会23333)
开始是1,可以复制粘贴,可以消除
那么久把1向它的倍数连边权为倍数的边。但发现变边太多,所以考虑 i->i*k
如果k不是素数 那么i->k就不必连边,因为这条边可以由另外的替代
再把 当前数跟它减一连边,表示删除。
通打标找规律可发现,素数只需要前十几个。
当然多打些素数表也可以,有备无患......
*/
#include<iostream>
#include<cstdio>
#include<cstring> #define N 1000100 using namespace std;
int n,m,cost,cnt,lim;
int d[N],prime[N]={,,,,,,,,,,,,,};
int inq[N],q[N]; void spfa(int u)
{
int head=,tail=;
memset(d,/,sizeof d);
d[u]=;inq[u]=,q[tail++]=u;
while(head!=tail)
{
int now=q[head++];inq[now]=;
if(head==N) head=;
for(int j=;j<=lim && now*prime[j]<n+;j++)
{
int v=now*prime[j];cost=prime[j];
if(d[v]>d[now]+cost)
{
d[v]=d[now]+cost;
if(!inq[v])
{
inq[v]=;q[tail++]=v;
}
if(tail==N) tail=;
}
}
int v=now-;cost=;
if(d[v]>d[now]+cost)
{
d[v]=d[now]+cost;
if(!inq[v])
{
inq[v]=;q[tail++]=v;
}
if(tail==N) tail=;
}
}
} int main()
{
freopen("huaji.in","r",stdin);
freopen("huaji.out","w",stdout);
lim=;scanf("%d",&n);
spfa();
printf("%d\n",d[n]);
}
9.12NOIP模拟题的更多相关文章
- 10.12NOIP模拟题(2)
/* 有谁知道这道题结论是怎么来的? 晚上问问学数学的孩子23333 */ #include<iostream> #include<cstdio> #include<cs ...
- 10.12NOIP模拟题(1)
#include<iostream> #include<cstdio> #include<cstring> #include<queue> #defin ...
- poj 1008:Maya Calendar(模拟题,玛雅日历转换)
Maya Calendar Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 64795 Accepted: 19978 D ...
- poj 1888 Crossword Answers 模拟题
Crossword Answers Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 869 Accepted: 405 D ...
- CodeForces - 427B (模拟题)
Prison Transfer Time Limit: 1000MS Memory Limit: 262144KB 64bit IO Format: %I64d & %I64u Sub ...
- sdut 2162:The Android University ACM Team Selection Contest(第二届山东省省赛原题,模拟题)
The Android University ACM Team Selection Contest Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里 ...
- 全国信息学奥林匹克联赛 ( NOIP2014) 复赛 模拟题 Day1 长乐一中
题目名称 正确答案 序列问题 长途旅行 英文名称 answer sequence travel 输入文件名 answer.in sequence.in travel.in 输出文件名 answer. ...
- UVALive 4222 Dance 模拟题
Dance 题目连接: https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&pag ...
- cdoj 25 点球大战(penalty) 模拟题
点球大战(penalty) Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/problem/show/2 ...
随机推荐
- iOS中NSAttributedString的使用--对关键字着色,以及处理html实例
1,最近项目中用到了一个功能,一个很好的功能.就是用户在搜索的时候,搜索结果出来后对你输入的关键字进行红色标记.这样用户就很请楚的看到自己输入什么后会出现什么样子的结果.还有一个功能是,现在有一段文字 ...
- 洛谷——P2047 [NOI2007]社交网络
P2047 [NOI2007]社交网络 $Floyd$,一眼看到就是他(博主是不小心瞄到了这个题的标签吧qwq) 这个题目只要预处理出$S$到$T$的最短路的条数即可,类似$Spfa$的更新方法 如果 ...
- ZOJ - 3987 - Numbers (大数 + 贪心)
参考自:https://blog.csdn.net/u013534123/article/details/78484494 题意: 给出两个数字n,m,把n分成m份,使得以下最小 思路: 或运算只有0 ...
- Python&机器学习总结(一)
① numpy中np.c_和np.r_ np.r_是按列连接两个矩阵,就是把两矩阵上下相加,要求列数相等,类似于pandas中的concat(). np.c_是按行连接两个矩阵,就是把两矩阵左右相加, ...
- 【tips】xadmin - django第三方后台管理系统
Django 为大家提供了一个完善的后台管理系统—admin,但是这个后台管理系统总体来说不太适合国人的习惯,所以有大神就使用 bootstrap 和 jQuery,为我们开发了一个第三 方的 Dja ...
- 洛谷 2055 BZOJ 1433 [ZJOI2009]假期的宿舍
[题解] 既然是一人对应一床,那么显然可以用二分图匹配来做.俩人认识的话,如果其中一个a是在校学生,另一个b不回家,b就可以向a的床连边(a,b当然也可以是同一个人). 然后如果最大匹配数大于等于需要 ...
- hihocoder 1032 最长回文子串(Manacher)
传送门 #include<queue> #include<cmath> #include<cstdio> #include<cstring> #incl ...
- Discuz论坛迁移需要修改的3个配置文件
需要修改的3个地方: \config\config_global.php \config\config_ucenter.php \uc_server\data\config.inc.php
- SqlServer2008必须开启哪些服务
SQL Server 2008 大概有下面这些服务 SQL Active Directory Helper 服务支持与 Active Directory 的集成SQL Full-text Filter ...
- ZOJ 3684 Destroy
Destroy Time Limit: 2000ms Memory Limit: 65536KB This problem will be judged on ZJU. Original ID: 36 ...