Day1

    思路:

    大致是 把一个环拆成链, 找某个人无非是向右找或向左找(即对当前点加或减)

    若加上要移动的位置后坐标大于总人数, 就把当前坐标减去总人数,

    若减去要移动的位置后坐标小于0, 就把当前坐标加上总人数

    另外要注意的就是每个小人的朝向问题, 这个也很好解决。

    通过观察不难发现,小人面朝里, 向右移动的话, 就是加, 向左为减。

             小人面朝外则反之。

    最后输出当前坐标小人的名称。

    

#include <iostream>
#include <cstdio>
#include <cstring>
#define Max 100003
using namespace std;
int N, M;
struct node
{
int towards;
string name;
}people [Max];
int main()
{
scanf ("%d%d", &N, &M);
int f;
string a;
for (int i = ; i <= N; i++)
{
scanf ("%d", &people [i].towards);
cin >> people [i].name;
}
int x, y;
int now = ;
for (int i = ; i <= M; i++)
{
scanf ("%d%d", &x, &y);
if (people [now].towards == && x == )
{
now -= y;
if (now <= )
now = N + now;
}
else if (people [now].towards == && x == )
{
now += y;
if (now > N)
now = now - N;
}
else if (people [now].towards == && x == )
{
now += y;
if (now > N)
now = now - N;
}
else if (people [now].towards == && x == )
{
now -= y;
if (now <= )
now = N + now;
}
}
cout << people [now].name;
return ;
}

    

第二题 天天爱跑步

  不会, 当时做时就是骗的分

  由数据范围可知:  

  前两个点所有玩家的起点等于终点, 那么就好办了。

  扫一遍所有的点, 如果有玩家的起点在这个点上(因为起点与终点相同 所以只需要判起点就好了), 那么这个观察员可观察的人数加1。如此, 最后输出即可

  第三和第四个点是 观察员的观测时间都是0,

  那么只要扫一遍所有玩家的起点,把起点上的观测员可观察到的人数加一即可。

  但是 !!当时考试时我就是这么打的, 结果一分没得。(原因不明)

  (把自己的答案与标准答案比了半天也没发现哪有不同)。

第三题 换教室

  不会 当时打的是暴力

  当时思路就是 先跑一边floyed 找处所有点的最短路

  然后搜索可能的情况(类似于全排列),挨个算, 算完后刷新最小值

  但是还是写崩了, 枚举可能的情况那一步怎么也打不对。

  无奈想放弃治疗时, 突然发现有些数据是m = 0 的, 即只需跑一边裸的floyed。

  找出最短路即可, 结果floyed 初始化时忘记把对角线赋值为零(即当 i = j的情况)。

  于是GG。 0分

Day2

第一题 组合数

思路:

  

  当时考场上时, 由于未接触过组合数什么的

  所以做此题时一头扎进他给的公式中出不来了

  想了很久, 大多是围绕直接算阶乘的方法。最后无果, 只能打了个30%数据的表

  骗了30.。

  AC做法。。

  动态规划, 恩, 好吧。。一点也没想到

  大体上是 运用递推, 推出

  公式为 number[i][j] = number[i-1][j-1]+number[i-1][j]  注意还要mod K, 反正都是要求的是K的倍数,mod K一举两得

  因为可能这个数会很大。。。。爆long long

  如果mod K 后等于0, 那么说明符合题意 i的计数器加一

  最后再加到 答案dp[i][j]中去 , dp[i][j] = dp[i-1][j] + 计数器

  最后再注意判断一下 m 和 n 的关系 这个题就OK了。。

#include <iostream>
#include <cstdio>
#include <cstring>
#define Max 2000
using namespace std;
long long number [Max][Max]; // 组合数 。number [i][j]表示i个东西选出j个东西的方案数
long long dp [Max][Max]; // dp[i][j] 表示的是i个东西选出j个东西 方案中是k的倍数 的方案数
long long Total [Max];
inline void read (int &now)
{
char word = getchar ();
now = ;
while (word > '' || word < '')
word = getchar ();
while (word <= '' && word >= '')
{
now = now * + (int)(word - '');
word = getchar ();
}
}
int main()
{int T, K;
read (T);
read (K);
number [][] = ; //初始化
for (int i = ; i <= Max; i++) //先把所有的预处理出来, 否则 每次都查询会超时。。
{
number [i][] = ; //初始化 i个物品选0个的方案数为 1
for (int j = ; j <= i; j++)
{
number [i][j] = (number [i - ][j - ] + number [i - ][j]) % K; // 递推求组合数 number[i][j]是由上一个物品选或不选递推而来
if (number [i][j] == ) //如果能被K整除 计数器加一
Total [i]++;
dp [i][j] = dp [i - ][j] + Total [i]; //i个物品选出j个 的方案数满足条件的 是上一个状态加上这一个状态的总数得出
if (i == j) // 注意判断一下i == j 即i个物品选i个 的情况 。
dp [i][j] = Total [i] + dp [i - ][j - ];
}
}
while (T--)
{
int n, m;
read (n);
read (m);
cout << dp [n][m > n ? m = n : m] << endl; //因为 0 <= m <= min (m, n), 所以要判断一下
}
return ;
}

第二题  蚯蚓

  非常苦逼

  当时做的时候加了一堆特判。

  不能特判的就打了个十分十分朴素的做法。结果拿了20.

  可当我拿过程序来自己测试的时候, 竟神奇的得了25分。

  然后把所有的特判都去掉, 就拿了35分。。。。。。。。。。。

  当时的做法就是 用优先队列存所有蚯蚓的长度。

  每次取出堆顶元素, 后将堆顶元素弹出。

  再开个临时数组, 存堆中的元素,然后在把他们加上特定长度后再扔到堆里。

  再是对堆顶元素的操作, 模拟一下, 把它分成两段, 都扔到堆里。

  最后把堆里的元素都输出。。这是35分。。

第三题 愤怒的小鸟

  不会。

  当时是想直接枚举 for(-10.00  to  10.00 )

  但是时间不太够了, 前两题耗费了太多时间。。只能弃了。

  于是, 蒟蒻的Noip2016 就这样画上了句号

  说到此次noip的感想。。。

  由于自己是去当分母的, 所以并没有什么太大的想法。

  考试前是抱着不爆零的心态去的。

  但是实际做了一下题目后发现实际上是可以骗到很多分的, 即使你不会做。

  可还是由于种种失误, 分数与自己的预期差别很大。。

  所以先简单反思一下自己出现的问题

1 . 时间分配非常不合理。无论是哪一次考试我都或多或少的存在这个问题。 当 拿到一个题看似很简单时, 就会不假思索的去写。 写的过程中经常会出现很 多问题。比如写着写着发现这个地方自己实现不了了, 又或者是写出来了但 是写崩了。这时候心态就会爆炸,变的很慌, 越是写不出来, 就越要把它写 出来, 然而这样就陷入到了恶性循环中。。。。

2 . 丢三落四。 比如这次day1的T3, floyed竟然忘了初始化 邻接矩阵的对角线为0,就这样很坑的 丢掉了至少30分(数据有些是直接跑一次多源最短路   就可以过的)。

3 . 思路不清晰就开始写。。。肯定吃枣药丸。很多时候写着写着就不会写了。更有甚者写着写着发现思路根本不对,当时只是想当然的认为是这样做, 就不去多深究,急急忙忙开始写。 下场大多都比较惨。

4 . 基础不牢, 一些简单的东西打不出来,就像day1 T3 当时是能打出暴力的(虽然会比骗的分少), 但是有一个类似于全排列的东西打不出来了。。就挂了。

所以问题大致有这么几个。。以后还要改正。

  

  再一个就是 平时上课了。。效率很低。

  做题慢, 整理算法也不快。

  我觉得自己知识上薄弱的方面是动规和数论。。一看见就头疼。

  这个原因也是多方面的,一是动规当时学的时候就学的不好。学完后没做多少练习题, 就转到别的方面去了。。。并且之后一见到动规题就想跳,导致动规一直很渣。

  二是数论, 关于数论,做过的学习就只有听了一节数学课。。。。并且平时还是缺少练 习。数论的一些思想,原理, 公式都不知道怎么应用。。数论也是渣。 

  当然这也并不代表我别的方面就很好。。比如和我相同的人,有时他们说的算法根本就不会。。所以说, 我要走的路还很长。

  

  以后的努力方向我个人觉得 要是做题为主, 我的目标是把洛谷试炼场上的题从入门 到提高专题挨个做一遍。。

Noip 2016的更多相关文章

  1. NOIp 2016 总结

    NOIp 2016 总结 -----YJSheep Day 0 对于考前的前一天,晚自习在复习图论的最短路和生成树,加深了图的理解.睡得比较早,养足精力明日再战. Day 1 拿到题目,先过一边,题目 ...

  2. 【NOIP 2016】斗地主

    题意 NOIP 2016 斗地主 给你一些牌,按照斗地主的出牌方式,问最少多少次出完所有的牌. 分析 这道题的做法是DFS. 为了体现这道题的锻炼效果,我自己写了好多个代码. Ver1 直接暴力搞,加 ...

  3. [NOIP]2016天天爱跑步

    [NOIP]2016天天爱跑步 标签: LCA 树上差分 NOIP Description 小C同学认为跑步非常有趣,于是决定制作一款叫做<天天爱跑步>的游戏.<天天爱跑步>是 ...

  4. NOIP 2016 迟来的满贯

    17-03-22,雨 17-03-22,一个特别重要的日子 在这一天,本蒻攻克了NOIP 2016最难的一题,D1T2——天天爱跑步 实现了NOIP 2016的AK! YAYAYAYAYAYAY 自然 ...

  5. NOIP 2016 D2T2 蚯蚓](思维)

    NOIP 2016 D2T2 蚯蚓 题目大意 本题中,我们将用符号 \(\lfloor c \rfloor⌊c⌋\) 表示对 \(c\) 向下取整,例如:\(\lfloor 3.0 \rfloor = ...

  6. Noip 2016 Day 1 & Day 2

    Day 1 >>> T1 >> 水题直接模拟AC: 考察三个知识点:1.你能不能编程 2.你会不会取模 3.你脑子抽不抽 然而第一次评测还是90,因为当模运算时 “ en ...

  7. 清北 Noip 2016 考前刷题冲刺济南班

    2016 10 29 周六 第一天 %%%,%ZHX大神 上午,60分, 下午,爆零orz 2016 10 30 周天 第二天 炒鸡倒霉的一天 %%%,%ZHX大神 据大神第一天的题最简单. 上午,和 ...

  8. noip 2016 提高组题解

    前几天写的那个纯属搞笑.(额,好吧,其实这个也不怎么正经) 就先说说day2吧: T1:这个东西应该叫做数论吧. 然而我一看到就照着样例在纸上推了大半天(然而还是没有看出来这东西是个杨辉三角) 然后就 ...

  9. noip 2016 提高组总结(不是题解)

    小弱鸡杨树辰是第一次参加像noip这样的高大上的比赛,于是他非常,非常,非常激动. 当他第二天考完试后,他正在yy自己的分数:day1T1应该是a掉了,T2写了个30分的暴力,T3也是个40分的暴力, ...

随机推荐

  1. Random随机数

    Random类的常用方法 方法 备注 Int nextInt() 返回一个int类型的随机数 Int nextInt(n) 返回一个0到n之间的数,不包括n Double nextDouble() 返 ...

  2. Routing(路由) & Multiple Views(多个视图) step 7

    Routing(路由) & Multiple Views(多个视图) step 7 1.切换分支到step7,并启动项目 git checkout step-7 npm start 2.需求: ...

  3. Xcode中如何集成Unity

    项目中需要集成unity,摸索了大半周,碰到了很多坑,终于搞定. 我的方法是,通过unity导出一个空的iOS项目,然后再新建一个Xcode项目,针对配置页面一一对应.直到配置完全一样,然后倒入相关资 ...

  4. D8

    =-=昨天被老师拉去吃点心了就没有发题解...忧伤..昨天的T2貌似都没有调完嗯 今天脑洞是大啊.. T1模拟写挂..呵呵我一面 T2数学题..刚开始只会求素数表的那种方法暴力..不过后面他们都知道一 ...

  5. 如何将 Area 中的 Controller 放到独立的程序集?

    目录 背景如何将 Area 中的 Controller 放到独立的程序集?备注 背景返回目录 本文假设您已经熟悉了 ASP.NET MVC 的常规开发方式.执行模型和关键扩展点,这里主要说一下如何使用 ...

  6. (Java 多线程系列)Java 线程池(Executor)

    线程池简介 线程池是指管理同一组同构工作线程的资源池,线程池是与工作队列(Work Queue)密切相关的,其中在工作队列中保存了所有等待执行的任务.工作线程(Worker Thread)的任务很简单 ...

  7. java生成PDF文件(itext)

    itextpdf-5.4.3.jar下载地址: http://www.kuaipan.cn/file/id_58980483773788178.htm 导入itextpdf-5.4.3.jar ToP ...

  8. Show 一下最新的动态属性扩展功能与键值生成器功能

    Show 一下最新的动态属性扩展功能与键值生成器功能 YbSoftwareFactory 各种插件的基础类库中又新增了两个方便易用的功能:动态属性扩展与键值生成器,本章将分别介绍这两个非常方便的组件. ...

  9. Android Chronometer控件使用,计时器

    Android Chronometer实现了一个简单的计时器,继承自TextView,因此可以使用TextView的text控制属性来控制时间显示的颜色.字体大小等:可以定义时间显示格式,默认“MM: ...

  10. Google论文之三----MapReduce

    Google论文之三----MapReduce MapReduce:大型集群上的简单数据处理 摘要 MapReduce是一个设计模型,也是一个处理和产生海量数据的一个相关实现.用户指定一个用于处理一个 ...