ACM,例题
文章平均质量分 66
Hormous的一天
这个作者很懒,什么都没留下…
展开
-
想法模拟题——Stack
题目链接 点击打开链接给你两个栈,push操作是压入,pop是弹出栈顶并输出,merge是将后面的栈合并到前面的栈,并且按压入时间排序。 Solution1 前两个仅仅需要模拟就行了,主要是解决merge,倒过来倒过去,很容易超时,可以定义now为A所属的栈,!now为B所属的栈,那么将元素少的栈合并到元素多的栈里,如果merge A B的时候B的元素多,那么我们把A中的倒入B中,now取反即可。...原创 2018-03-14 12:02:27 · 123 阅读 · 0 评论 -
枚举的初识
枚举在某些题目中有着非常重要的作用。其中最方便的就是利用位运算来进行枚举,枚举2的n次方例题:这是一道典型的折半枚举例题,通过先枚举其中一半的数据,在通过数组储存起来。这样就可以进行排序后的二分搜索了。空间换时间 int n2 = n/2; for (int i = 0;i < 1 << n2;i ++){ ll sw = 0,sv = 0; ...原创 2018-03-11 09:31:57 · 160 阅读 · 0 评论 -
超大容量背包问题
超大背包问题:有n个重量和价值分别为w[i]和v[i]的物品,从这些物品中挑选总重量不超过W的物品,求所有挑选方案中价值总和的最大值。其中,1 ≤ n ≤ 40, 1 ≤ w[i], v[i] ≤ 10^15, 1 ≤ W ≤ 10^15.这个问题给人的第一感觉就是普通的01背包。不过,看完数据范围会发现,这次价值和重量都可以是非常大的数值,相比之下n比较小。使用DP求解背包为题的复杂度是O(nW...原创 2018-03-15 18:21:07 · 2820 阅读 · 5 评论 -
尺取法
尺取法经典例题#include <bits/stc++.h>using namespace std;const int MAX_P = 1e6+7;int P;int a[MAX_P];void solve(){ set<int> all; for (int i = 0;i < P;i ++){ all.insert(a[...原创 2018-03-07 19:22:31 · 292 阅读 · 0 评论 -
关于全局变量与递归的进一步理解——加深迭代例题
原来这两个的关系一直没有弄得很清楚,经过一个bug的洗礼,我看透了很多题目链接:点击打开链接迷宫问题Time Limit: 1000MS Memory Limit: 65536KTotal Submissions: 28022 Accepted: 16150Description定义一个二维数组: int maze[5][5] = { 0, 1, 0, 0, 0, 0, 1, 0, 1, ...原创 2018-02-12 22:41:25 · 1321 阅读 · 1 评论 -
深度优化搜索 ---判断是否可以从给定整数中选出若干数,使它们的和恰好为k
//关于sort和二分法查找,就告一段落了,现在就开始对深度优化搜索来进行简单的尝试。#include #include #define MAX 5using namespace std;int a[MAX] = {1,2,4,7};int n,k;bool dfs(int i,int sum){ // 如果前面几项都计算过了,则返回sum的值是否和k相等 if原创 2017-11-18 13:54:55 · 5488 阅读 · 4 评论 -
关于BIT问题的错误
/*Description给定L,R,输出X,X在[L,R]中,且其为转化成二进制后1的总数最多的那个数(同时存在多个解,输出最小的那个)。Input第一行为询问个数n,(1<=n<=10000).接下来有n行.每行有两个数为L,R(0<=L<=R<=10^18)Output每个询问输出一个答案。Sample Input31 22 41 10Sample Output1原创 2017-11-20 18:22:11 · 1154 阅读 · 0 评论 -
动态规划 --- 最长子序列问题
#include #include #define MAX_N 501#define MAX_M 501#define max(a,b) ((a)>(b)?(a):(b))int main(){ int n,m; char s[MAX_N],t[MAX_M]; int dp[MAX_M+1][MAX_N+1]; while (1){ sc原创 2017-11-20 19:15:49 · 253 阅读 · 0 评论 -
农夫与牛问题的分析 ---二分法流弊
那么我现在想起了一句话,所有的n的二次方,都可以简化为nlogn了了,真的厉害,可以在大数据中大大简化。原创 2017-11-21 15:51:48 · 2159 阅读 · 0 评论 -
一个简单的深度搜索
#include #define MAX_N 100#define MAX_M 100using namespace std;int N,M;char field[MAX_N][MAX_M+1] = {{'.','W','.','W','.','.','.'},{'.','W','.','W','.','.','.'},{'.','W','.','W','.','.','.'},{'.'原创 2017-11-22 20:45:50 · 733 阅读 · 1 评论 -
简单高精度
L1-6 整除光棍(20 分)这里所谓的“光棍”,并不是指单身汪啦~ 说的是全部由1组成的数字,比如1、11、111、1111等。传说任何一个光棍都能被一个不以5结尾的奇数整除。比如,111111就可以被13整除。 现在,你的程序要读入一个整数x,这个整数一定是奇数并且不以5结尾。然后,经过计算,输出两个数字:第一个数字s,表示x乘以s是一个光棍,第二个数字n是这个光棍的位数。这样的解当然不是唯一...原创 2018-03-24 19:01:06 · 217 阅读 · 0 评论