这次是zay神仙给我们出的NOIP模拟题,不得不说好难啊QwQ,又倒数了~ T1 大美江湖 这个题是一个简单的模拟题.   ----zay 唯一的坑点就是打怪的时候计算向上取整时,如果用ceil函数一定要先转化成double类型(话说我就这么掉坑里了?QwQ) 测试点 1: 0 次询问,所以直接freopen一下输出文件即可得分.期望得分 10 分. 测试点 4.5: 由于保证人物不移动,而且不捡拾出生点的物资也不在出生点打怪,所以攻击 防御一定全部为初始值,耗血一定为 0 ,直接输出 q 行数…
看到Day 2的题真的想打死zay了,忒难了QwQ~ T1 江城唱晚 这明显是个求方案数的计数问题,一般的套路是DP和组合数学. 正如题目中所说,这个题是一个 math 题.      ----zay不会的 math 题让我们做?QwQ DP已经优化到了尽头,现在我们考虑组合数学! zhx:这应该是个小学奥数题! 恩,这其实就是个经典的组合数问题啦. 首先我们以数学的来思考这个题: 我们有n个位置来摆放m盆花,还要保证每盆花之间至少有一个空位置.如果我们单单去刻意拆空位置的话,我们会发现这很难实…
contesthunter暑假NOIP模拟赛#1题解: 第一题:杯具大派送 水题.枚举A,B的公约数即可. #include <algorithm> #include <cmath> #include <iostream> using namespace std; #define MAXN 100010 struct node { int a,b,c; }ans[MAXN]; int main() { int R, G; scanf("%d%d",&…
这一次是交流测试?边交流边测试(滑稽 15数码问题 大家应该都玩过这个15数码的游戏吧,就在桌面小具库那里面哦. 一看到这个题就知道要GG,本着能骗点分的原则输出了 t 个无解,本来以为要爆零,没想到这个题数据是真的水,全输出无解能骗到40分,某些大佬输出样例了又骗到了20分 QwQ~: 本题对应着洛谷的UVA10181 15-Puzzle Problem ,省选难度,果然不简单QwQ~,_rqy 讲了一番,听得糊里糊涂. 这个题正解是搜索(貌似是废话,都给了15s的时间了),但是还是需要一些剪…
(换个编辑器代码就SB地不自动折叠了.. T1 2A 考察快读的写法. $code:$ T1 #include<bits/stdc++.h> #define scanf SCANF=scanf using namespace std; namespace IO{ inline int read(){ char ch=getchar(); int x=0,f=1; while(ch<'0'||ch>'9'){ if(ch=='-') f=-1; ch=getchar(); } whi…
这一次是交流测试?边交流边测试(滑稽 极值问题 乍一看这是一道数学题,因为1e9的数据让我暴力的心退却. 数学又不好,不会化简式子嘞,咋办? 不怕,咱会打表找规律.(考场上真的是打表找出了规律,打表打法好!!) 这里就不带着大家一起来打表了,我们是来正正经经的推式子滴. So,这道题就是求斐波那契数列的大水题啦. water_lift:其实这道题数据还是出水了,求斐波那契数列的时候完全可以卡到用矩阵加速. 我们:……(心里一万只草泥马跑过) 代码如下哦: #include<iostream>…
这一次是交流测试?边交流边测试(滑稽 挖地雷 这个题是一个递推问题. 首先我们看第一个格子,因为它只影响了它的上面和右上面这两个地方是否有雷. 我们可以分3种情况讨论: 1. 第一个格子的数字是2: 2. 第一个格子的数字是1: 3. 第一个格子的数字是0: 显然对于第1种情况和第3种情况,我们可以确定前两个空的埋雷情况: 第1种情况就是前两个空都埋雷了,第3种情况就是钱两个空都没有埋雷: 第二种情况我们需要再往下细分:第一个空埋雷,第二个空不埋雷:第一个空不埋雷,第二个空埋雷: 我们根据样例来…
考试的一道附加题~ 一看题目描述:把区间[l,r]里每个数异或上x,求区间[l,r]里所有数的异或和,这明显的要用数据结构或RMQ吧. 恩,所以正解就是线段树啦,至于树状数组行与否,不知道~ water_lift:这不是sb题嘛?线段树板子题都不会?把加法操作改成异或操作不就好啦? 其实好像真的是这样的,将加法操作改成了乘法操作: 然后你会发现自己只得了20分的暴力分,没错!相当于没写线段树! 因为线段树区间修改需要用到一个非常重要的东西: 懒标记 为什么要用到这个,直接暴力递归不好吗? 问得好…
一开始想的贪心,可是发现贪心的问题太多了啊!只能保证当前最优,全局完全无法考虑. 所以正解是dp.预处理出前缀和,枚举每个区间,在每个点记录$now[i]$表示以$i$这个塔结尾的塔组目前的高度.$dp[i]$表示以$i$这个塔结尾最多能分成多少组.如果$dp[i]$可以更新成更优值,则直接更新$dp$和$now$值,否则如果$dp$值相同,则尽量使$now$值最小. #include<iostream> #include<cstdio> #define ll long long…
大眼一看最下面的题意解释的话,发现这和洛谷P1310表达式的值挺像的,大概都是给定一些运算符号,让最后的表达式为true的概率,为false的概率啥的QwQ~: 然后这个题嘛?就是在所有的运算符中提溜出一个作为最后一次运算的运算符,然后我们去算这个运算符左边的那一堆式子,然后再算右边那一堆式子,最后再算一下最后一个运算符对应的运算就好啦! 那么怎么算这个运算符左边的式子和右边的式子呢?我们再从左边的式子中找出一个运算符最为最后一次运算的运算符,然后算它左边的式子,算它右边的式子…… 我们发现这就…