NOIP考前回顾
Edward-Tsui
ACMER
展开
-
【NOIP考前题目回顾】Luogu P1000
思路没啥可说的,复制的题解。代码#include<stdio.h>int main() { printf( " ********\n" " ************\n" " ####....#.\n" " #..###.....##....\n"原创 2017-10-29 19:48:07 · 188 阅读 · 0 评论 -
【NOIP考前题目回顾】Luogu P1046
思路模拟。代码#include <iostream>const int CNT = 30;int *a = new int[10];int main(int argc, char ** argv){ for (size_t i = 0; i < 10; i++) std::cin >> a[i]; size_t N; std::cin >> N;原创 2017-10-30 14:45:10 · 225 阅读 · 0 评论 -
【NOIP考前题目回顾】Luogu P1040
思路第一问看上去像是个树形结构,但是其实我们可以把它直接看成是一个区间DP。令fi,jf_{i, j}存储区间[i,j][i, j]内的最大加分,那么三重循环分别枚举左端点、右端点和中间元素,无脑循环出来的f1,nf_{1, n}即为[1,n][1, n]区间内的最大加分。在计算过程中,每次记录一下每个节点的位置,方便第二问输出。代码#include <cctype>#include <climi原创 2017-10-30 14:24:57 · 180 阅读 · 0 评论 -
【NOIP考前题目回顾】Luogu P1012
思路对ASCII码熟悉的很快就可以想出做法,无非就是字符串拼接然后排序,只要排序规则明了的话排序工作就直接给STL做就好了。(这个题卡了我旁边一哥们一下午)代码#include <algorithm>#include <cctype>#include <climits>#include <cmath>#include <cstdio>#include <cstdlib>#include原创 2017-10-29 20:46:32 · 222 阅读 · 0 评论 -
【NOIP考前题目回顾】Luogu P1005
思路很考思维的一道题,但是模拟一下的话就没什么难度了。首先两个人相遇并立即掉头走,那么将这两个人互换一下的话就会发现他们掉头走并没有什么卵用,人还是那几个人。所以直接放代码。代码#include <algorithm>#include <cctype>#include <climits>#include <cmath>#include <cstdio>#include <cstdlib>原创 2017-10-29 20:42:47 · 194 阅读 · 0 评论 -
【NOIP考前题目回顾】Luogu P1006
思路求一个最大值,一般就是DP了。初见这个题目像是费用流,而且建边显而易见,但是太麻烦,就没写……这个题的DP方案也不难,既然是来回,那么我们可以把一个人拆成两个人啊,这样对于“第一个人”枚举ii行,fi,jf_{i, j}表示到第jj个格子时的最佳方案,对于“第二个人”枚举kk行fk,lf_{k, l}同理。这样我们就凑出了一个四维DP: fi,j,k,l=max(fi−1,j,k−1,l,fi原创 2017-10-29 20:34:01 · 199 阅读 · 0 评论 -
【NOIP考前题目回顾】Luogu P1005
思路这道题出题的初衷之一是考高精度,但是如果使用C++的__int128_t类型的话就可以不用高精度了。这道题显然是DP。先预处理出了一个数组PiP_i来存放2i2^i,至于不用1<<i1 << i的原因是这些数太大了。然后我们考虑对于每一行,我们在处理一行的时候,最佳策略同上面某行下面某行没有任何关系,所以一行一行处理。那么方程就很简单了。令fi,jf_{i, j}表示在每一行中区间[i,j][i原创 2017-10-29 20:15:26 · 314 阅读 · 0 评论 -
【NOIP考前题目回顾】Luogu P1003
思路既然给出了每个地毯的坐标和长度,在地毯数目不是特别多的情况下,我们可以用一个结构体来存储所有地毯的信息。那么计算的时候从0开始枚举,如果这个地方有一张地毯在上面,就让答案等于它就好了。注意因为要求的是最后一张地毯是哪个,所以我们判断的范围应该一步一步缩小,保证求出来的是最终答案。代码#include <algorithm>#include <cctype>#include <climits原创 2017-10-29 20:01:47 · 208 阅读 · 0 评论 -
【NOIP考前题目回顾】Luogu P1001
思路最大流。建一个超级源点和超级汇点,然后从源点连出两条边,流量分别为a和b,最后将这两个定点分别向汇点连一条流量为无穷大的边,求得的最大流即为答案。代码#include <cctype>#include <climits>#include <cstdio>#include <cstring>#include <iostream>#include <queue>#define BLA(X)原创 2017-10-29 19:54:35 · 235 阅读 · 0 评论 -
【NOIP考前题目回顾】Luogu P1047
思路类似前缀和,维护一下差分就好。代码#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>using namespace std;int a[10005],n,m,ans=0;int main(){ scanf("%d%d",&n,&m); for (原创 2017-10-30 14:50:23 · 212 阅读 · 0 评论