思维
文章平均质量分 60
ACLJW
这个作者很懒,什么都没留下…
展开
-
1339:Ancient Cipher
Ancient CipherTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 36467 Accepted: 11879DescriptionAncient Roman empire had a strong government system with various departments, including a secret...原创 2018-04-09 10:49:51 · 132 阅读 · 0 评论 -
11853:Paintball
Paintball这个题可以看作是图上有很多圆形禁区,如果直接考虑是否可以从左边走到右边似乎有些无从下手,其实可以这样考虑,把整个方形区域看作水面,把禁区看作小岛,如果可以从上边沿着这些小岛走到下边的话,就说明方形区域被禁区整个隔断了,那么就不能从左边走到右边,这样一来DFS即可。(思路来自紫书)至于最北的位置,只需要在DFS的时候计算当前禁区与左右边缘的下交点,不断更新坐标值即可。因为我...原创 2018-08-29 00:32:03 · 217 阅读 · 0 评论 -
11. Container With Most Water
11. Container With Most Water设置两个指针i j ,分别指向首尾两块板,然后向中间移动,那么宽度变小的情况下为了增大面积只有让高度变大,所以每次移动所指板较低的指针,然后计算面积,重复以上过程。int max(int a,int b){ return a > b ? a : b;}int maxArea(int* height, int he...原创 2018-08-27 12:30:35 · 110 阅读 · 0 评论 -
12171:Sculpture
Sculpture思路:将三维空间网格化,每个长方体占据的所有单元标记为1。求面积的话,DFS所有的单元,依次检查是上下左右前后六个方向上相邻单元是否为1,若否则是表面,面积加+1。求体积的话,从外面某个单元开始DFS,求出外面值为0的单元的个数,那么总单元个数 - 外部值为0的单元个数 = 雕塑体积。但是由于外部单元个数巨大会导致堆栈溢出,所以需要对坐标进行离散化,另外应选BFS。原来v...原创 2018-08-07 23:54:36 · 228 阅读 · 0 评论 -
816:Abbott's Revenge
Abbott's Revenge一些细节要特别注意#include<bits/stdc++.h>using namespace std;const int maxn = 10;const char* dirs = "NESW";const char* turns = "FLR";struct Node{ int r,c,dir; Node(int a...原创 2018-07-31 23:39:16 · 201 阅读 · 0 评论 -
669:The Falling Leaves
The Falling Leaves这道题还是递归,仿照上道题的思路挺容易的,不过看了看书上的代码个人觉得我的代码更简洁,思路更清晰些哈哈。我的思路:开个负下标数组,记录每个位置的权重之和,用 p 记录当前节点位置,那么其左节点位置为 p - 1,右节点位置为 p + 1,依次递归增加相应位置的权重,同时更新最右和最左边位置。#include<bits/stdc++.h>using ...原创 2018-05-31 13:25:43 · 153 阅读 · 0 评论 -
839:Not so Mobile
Not so Mobile 我的思路:可以将天平看做一棵二叉树,二叉树的每个节点要记录其父节点。然后其实就是一个建树的过程,遇到 0 节点就向下延伸,每当一个节点的左右子树确定(其重量也随之确定),就计算其是否平衡,然后一直向上追溯,直到该节点尚未平衡,继续建树,直至整棵树建好,是否平衡也随之确定。version 1(40ms):#include<bits/stdc++.h>usin...原创 2018-05-31 00:29:22 · 131 阅读 · 0 评论 -
679:Dropping Balls
Dropping Balls直接模拟似乎很简单,但是会超时。。。每个小球都会落在根结点上,因此前两个小球必然是一个在左子树,一个在右子树。一般地,只需看小球编号的奇偶性,就能知道它是最终在哪棵子树中。对于那些落入根结点左子树的小球来说,只需知道该小球是第几个落在根的左子树里的,就可以知道它下一步往左还是往右了。依此类推,直到小球落到叶子上。version 1(Time Limited):#incl...原创 2018-05-28 18:34:13 · 154 阅读 · 0 评论 -
1103:Ancient Messages
Ancient Messages数一数就能发现,题目表中的6个符号从左到右依次有1,3,5,4,0,2个洞,各不相同。这样,只需要数一数输入的符号有几个“白洞”,就能准确地知道它是哪个符号了。至于具体实现,我的思路是:先确定一个符号,找到该符号的空洞个数然后将该符号“擦除”,继续确定下一个符号。具体而言,每次找到一个黑点,然后DFS,如果其周围点为黑点则递归,若为白点且为封闭块则个数加1,最后再次...原创 2018-06-02 23:52:41 · 379 阅读 · 0 评论 -
1592:Database
Database思路:只枚举c1和c2,然后从上到下扫描各行。每次碰到一个新的行r,把c1,c2两列的内容作为一个二元组存到一个map中。如果map的键值中已经存在这个二元组,该二元组映射到的就是所要求的r1,而当前行就是r2。在主循环之前先做一个预处理——给所有字符串分配一个编号,则整个数据库中每个单元格都变成了整数,上述二元组就变成了两个整数,这个操作同样用到了map。version 1(14...原创 2018-04-17 23:59:59 · 156 阅读 · 0 评论 -
12096:The SetStack Computer
The SetStack Computer为每个不同的集合分配一个唯一的ID,则每个集合都可以表示成所包含元素的ID集合,这样就可以用STL的set<int>来表示了,而整个栈则是一个stack<int>。#include<iostream>#include<cstdio>#include<map>#include<set&g...原创 2018-04-16 21:45:33 · 476 阅读 · 0 评论 -
815:Flooded!
Flooded!思路:题目中说了不需要考虑几个坑是分开的那种情况,所以可以将所有的方格由低到高排序排序,从最低的方格开始灌水,如果可以淹没它,增加淹没面积、海拔高度和淹没个数,减少体积,再接着看下一个方格,否则计算终高度然后 break 即可。刚开始 WA 了,我还以为是浮点数精度的问题,尽可能的提高精度之后还是WA,后来发现是输出格式的问题。。。和之前不一样,不是两个 case 之间有空格,是每...原创 2018-04-14 22:10:28 · 217 阅读 · 0 评论 -
213:Message Decoding
Some message encoding schemes require that an encoded message be sent in two parts. The first part, called the header, contains the characters of the message. The second part contains a pattern that r...原创 2018-04-11 10:17:46 · 148 阅读 · 0 评论 -
1073C. Vasya and Robot
1073C. Vasya and Robot注意如果 d 和 n 奇偶性不一致则是不可能到达的,因为机器人每移动一步,其坐标之和的奇偶性就会发生变化。#include<bits/stdc++.h>using namespace std;typedef pair<int,int>P;const int maxn = 200000 + 5;int n,x,...原创 2018-10-31 22:39:41 · 162 阅读 · 0 评论