模拟
文章平均质量分 63
Coco_T_
东南大学本科毕业生,浙江大学在读研究生
展开
-
Divisors(屈辱的一道题。。。)
给定 m 个不同的正整数 a1; a2; …..; am,请对 0 到 m 每一个 k 计算,在区间 [1; n] 里有多少正整数是 a 中恰好 k 个数的约数Input 第一行包含两个正整数 n;m,分别表示区间范围以及 a 数组的大小。 第二行包含 m 个不同的正整数 a1; a2; …….; am,表示 a 数组。Output 输出 m + 1 行,每行一个整数,其中第 i 行输出 k原创 2017-07-18 14:16:47 · 1032 阅读 · 0 评论 -
与dalao学校的联shou考wan(11.2)(dp+乱搞+树形dp+期望)
T1.hanoi题目描述 众所周知, 汉诺塔是一个古老又经典的游戏. 这个游戏是这样的, 你有 N 个大小不同的盘子和3 根柱子, 一开始所有盘子都叠放在第 1 根柱子上, 你需要把N 个盘子全都移动到第3根柱子上, 每次都可以选择某根柱子最上面的盘子移动到另一根柱子上, 但是任何时候都必须保证没有一个盘子上面放了一个比它大的盘子. 求最少的移动步数. 这个问题太简单了,原创 2017-11-02 16:04:57 · 616 阅读 · 0 评论 -
与DB某学校的联zha考chuan(11.1)(鸽巢+乱搞+x^2的转化)
这次联考,是我近年来最炸穿的一次。。。T1.set题目描述 你手上有N个非负整数, 你需要在这些数中找出一个非空子集, 使得它的元素之和能被N整除. 如果有多组合法方案, 输出任意一组即可. 注意: 请使用高效的输入输出方式避免输入输出耗时过大.输入格式 第一行一个整数N, 代表数字个数. 接下来一行N个数, 代表你手上的数. 输出格式 如果无解, 输出-1. 否则, 第一行输出一个整原创 2017-11-01 16:07:35 · 862 阅读 · 0 评论 -
UVa11292 - Dragon of Loowater (贪心+模拟)
题目链接分析: 能力强的骑士开高价是合理的 但是不能大材小用,所以我们直接贪心 把龙和骑士排序之后, 一个一个砍就行了 当然,不能砍掉“当前需要砍掉的头”的骑士我们就不用再考虑ta了tip成功的砍掉一个头之后,不要忘了把骑士的指针向后推移一位附图: //这里写代码片#include <iostream> #include <cstdio> #include <cstring>原创 2017-10-13 18:49:41 · 291 阅读 · 0 评论 -
UVa 11464 - Even Parity(枚举)
简介: 每个元素上,下,左,右的元素之和为偶数分析: 首先想到一定是暴搜啊(耿直),枚举每一个数字变还是不变,最后一起判断 然而这样的最多需要枚举2^255,这是完全不可能的(即使剪枝也没办法)然而我们注意到n只有15,很符合枚举的条件啊 没错,我们这道题就是要枚举, 但是我们只枚举第一行 因为知道了第一行后,整个矩阵就都能计算出来了tip第一行的状态我们可以直接用二进制来枚举,这样超方原创 2017-10-14 09:59:33 · 321 阅读 · 0 评论 -
UVa 11210 - Chinese Mahjong(枚举+搜索)
题目链接分析: 身为一个麻将老手,我都不一定能”听“全牌 一共只有34种牌,我们可以考虑枚举每一张牌, 这样问题就可以转化成判断14张牌是否可以“和”为此,我们可以枚举将牌,之后每次选三张作为刻子或者顺子 如图: 选将有5种方式, 为了快速的选出将,顺,刻,我们可以用一个34维向量表示每一张牌有多少, 除了第一次枚举将牌,我们每次只用考虑最小的牌在哪一个顺子或刻子里就好了tip每种原创 2017-10-15 08:39:52 · 324 阅读 · 0 评论 -
UVa11520 - Fill the Square
题目链接简介:方格填字母,相邻的要求互异分析: 题目要求输出字典序最小的方案, 实际上这就是在提示我们这道题的解法: 我们直接贪心的向方格里填数就好了 一开始我还以为要搜索,一道搜到一种合法方案就停止,实际上这就是贪心填数的过程//这里写代码片#include<cstdio>#include<cstring>#include<iostream>using namespace std;i原创 2017-10-15 14:09:13 · 222 阅读 · 0 评论 -
UVa1262 - Password(解码问题)
题目链接简介: 给出两个6行5列的字母矩阵,一个密码满足:密码的第i个字母在两个字母矩阵的第i列均出现 然后找出字典序为k的密码,如果不存在输出NO分析: 本题是一道经典的解码问题 我们先统计每一个位置上能放哪些字符: 对于第一个样例来说,我们得到ACDW、BOP、GMOX、AP、GSU 要确定第一个字母,如果1≤k≤72,则是A;如果73≤k≤144,则是C,以此类推当然这道题还有一个原创 2017-10-29 09:38:01 · 397 阅读 · 0 评论 -
UVa10340 - All in All(模拟)
题目链接分析: 两个指针从前往后扫 当然,还有一种更好的方法: 直接循环t,len作为s的指针,相等时len++,最后比较len和strlen(s)//这里写代码片#include<cstdio>#include<cstring>#include<iostream>using namespace std;char s[1000010],t[1000010];int main(){原创 2017-10-18 18:35:28 · 658 阅读 · 0 评论 -
Tyvj1053
题目链接分析: 这道题我觉得比表达式求值还难受直接模拟 在碰到当前位置的下一个位置是‘-’时 就要考虑展开了不必展开的所有情况:1.a-a —-> a-a -号两边的符号相同 2.a-b,1-2 -号两边的符号紧邻 —-> ab —-> 12 3.a-4,3-b 两边的符号不同类 —-> a-4 —-> 3-b 4.-号前后也是- –9 —-> –9展原创 2017-09-03 07:43:49 · 283 阅读 · 0 评论 -
Tyvj1147
题目链接分析: 数的范围挺小, 所以直接开一个数组, len(x)=len(x-k)+1tip可能有负数,所以所有数都要加上100000 数组大小要开到100000*3 因为k有可能是负的这里写代码片#include<cstdio>#include<iostream>#include<cstring>using namespace std;const int N=100001;in原创 2017-09-11 08:27:50 · 292 阅读 · 0 评论 -
Tyvj1032
题目链接分析: 显然,比c面值大的钱,我们直接给就好了 那么问题就变成了,有一堆比c面值小的硬币, 让我们凑出尽量多的c正当我苦于c的范围无法承受01背包时 我又看了一遍题面,发现了这句话: 每一个面额都能整除所有比它大的面额这句话好像非常的关键 也就是说,大面值的钱能做到的事,比ta小的硬币都能做到显然我们要是能凑出c的钱数 就不要给奶牛贝西大于c的钱优先选用面值大的钱(直觉告诉我)原创 2017-09-01 17:27:31 · 289 阅读 · 0 评论 -
Tyvj1022
题目链接分析: 这道题要求我们把十进制数转化成负二进制 如果是二进制,那非常的简单(logn) 负二进制能不能以此类推呢我们先看几个例子吧 -2 |-13 1 -2 | 7 1 -2 |-3 1 -2 | 2 0 -2 |-1 1 -2 | 1 1 0-2 |10 0 -2 |-5原创 2017-08-31 21:35:38 · 222 阅读 · 0 评论 -
Tyvj1077
题目链接分析: 数论 第一反应,这个P是素数的限制比较厉害,有可能是一个很有用的条件 我们先放在这(后来证明没有什么卵用)最朴素的算法就是N^2,但是肯定TLE 那我们就要考虑优化了 假设我们枚举i,j i/j≈sqrt(p) 然而这个p我们是已知的 如果我们只枚举一个i j≈sqrt(i*i/p) 从这里我们就可以看到,其实不用枚举j就可以算出答案 这样我们就可以直接做了ti原创 2017-09-07 10:52:14 · 197 阅读 · 0 评论 -
poj1026 Cipher(置换)
题目链接 题目翻译分析: 理解题意之后,我们计算出轮换的大小 每一位每一位的模拟 第i" role="presentation" style="position: relative;">iii位的交换次数=m(mod)sizei所在的轮换" role="presentation" style="position: r原创 2018-02-03 15:48:29 · 247 阅读 · 0 评论