![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
思维
文章平均质量分 72
Lazines_by
好吧,我要工作了
展开
-
第八届蓝桥杯第十题
感觉最后一题写一下挺爽的!第十题标题: k倍区间给定一个长度为N的数列,A1, A2, ... AN,如果其中一段连续的子序列Ai, Ai+1, ... Aj(i <= j)之和是K的倍数,我们就称这个区间[i, j]是K倍区间。 你能求出数列中总共有多少个K倍区间吗? 输入-----第一行包含两个整数N和K。(1 <= N, K <= 100000)原创 2017-04-29 20:43:23 · 807 阅读 · 0 评论 -
poj 2454 随机
题意:有三个区,要保证至少两个区的投票在k * 500之上。思路;先排个序,然后将前k * 2大的数进行分成两个区,如果不符合的话就从两个区中得到这个数进行交换。PS:随机是个好东西#include#include#includeusing namespace std;typedef long long ll;const int maxn = 50 + 10;原创 2017-08-04 21:09:20 · 299 阅读 · 0 评论 -
hdu6040 (nth_element函数)
题意:搞糟出一个数组,查询整个数组第k大。思路:可以运用nth_element函数,nth_element函数是把第k大的数放在第k位,然后左边都是比它小的数,右边都是比它大的数,顺序任意。为了更优化一些,先将要查询的数列排个序,然后从后往前进行查询,因为输入保证任意两个小的之和小于第三个所以查询数列的间隔一定大于等于斐波那契,也就是从大到小查询的话,每次至少能去掉一半的区原创 2017-07-26 15:08:11 · 617 阅读 · 0 评论 -
codeforces 463C(对角线技巧)
题意:选取两个点,分别得到两个点对应的对角线上的值,要求两个点走的对角线不能相交,然后求两个点的对角线的值最大。思路:对于一个n * n,求一个点的左对角线和右对角线的技巧为:对于a[i][j]这个点对应的左对角线上的横坐标+纵坐标都等于i + j,右对角线 的i - j + n 都相等。例如4 * 4 的:i + j :为左对角线i - j +原创 2017-07-26 10:10:21 · 427 阅读 · 0 评论 -
poj3318 (随机化验证)
题意:验证两个矩阵A * B相乘是否等于C;思路:直接相乘的话n^3,不行;可以加入一个辅助行矩阵H,如果A * B = C,那么 H * A * B = H * C,因为H * A 之后还是一个行矩阵,时间复杂度为n^2。不过为了避免错误,H数组需要随机。Code:#include#include#include#includeusing nam原创 2017-07-18 21:10:56 · 767 阅读 · 0 评论 -
codeforces 673D(思维)
题意:给出一个a,b,c,d。然后求出一个满足a -> …… -> b ,c -> …… -> d的情况,a ,b不能直接相连,c ,d不能直接相连,给出点数和允许的最大的边数。思路:随意构造出一个满足的情况,你会发现满足最少的边数为n + 1。除ACBD点的边数为n - 4 - 1,然后还需要6条边,所以至少需要n+1条边。#includeusing namespa原创 2017-07-31 11:05:48 · 288 阅读 · 0 评论 -
codeforces 673C(思维)
题意:找出每种颜色在区间是否满足它在这个区间的数量最多或者与最大相等但颜色最小,满足的话就加一,输出每种颜色操作后的结果。思路:直接枚举区间,开一个数组然后O(1)维护这个区间的最多的颜色的数。PS:比赛的时候想不到呀?思维还是不够!#includeusing namespace std;typedef pair P;const int maxn = 5000 +原创 2017-07-31 10:53:00 · 220 阅读 · 0 评论 -
hihocoder1543(思维+ 二分)
题意:给出一个10^9的数,然后判断这个数最多能够由多少个连续的数组成。思路:先假设能1 ~ n组成这个数,打个表,二分一下,然后得到这个数最多有多少个数组成,最多为10^5;然后以这个最多的数开始进行暴力枚举,枚举这个数由多少个连续的数组成,假设这些连续的数的起点为x,那么的话满足(x + (x + i - 1))/2 * i == n;得到如果刚好分完的话x = (n * 2 /原创 2017-07-31 10:41:09 · 169 阅读 · 0 评论 -
任务分配hihocoder 1309(离散化 )
题目链接:http://hihocoder.com/problemset/problem/1309描述给定 N 项任务的起至时间( S1, E1 ), (S2, E2 ), ..., ( SN,EN ), 计算最少需要多少台机器才能按时完成所有任务。同一时间一台机器上最多进行一项任务,并且一项任务必须从头到尾保持在一台机器上进行。任务切换不需要时间。输入第一原创 2017-07-18 19:59:28 · 300 阅读 · 0 评论 -
poj1506(栈优化技巧)
题意:给出一些柱状图,要求求出柱状图中长方形的最大面积。思路:以每个点为起点,左右延伸,要保持a[j] >= a[i] ,a[j]为a[i]两边的数,得到以a[i]为高形成的长方形,底为满足a[j] >= a[i],经过i并且连续的区间。然后枚举以h[i]为高形成的长方形的面积的大小,得出答案。这里得到以a[i] 为高的长方形的底的方法为:因为数有10^6个,所以不能暴力。当算原创 2017-07-21 20:04:06 · 252 阅读 · 0 评论 -
51Nod1116 K进制下的大数(思维)
题意:一个大数是k进制并且是(k - 1)的倍数,求出最小的k;思路:当为k进制的时候,因为k % (k - 1) == 1,k ^ k % (k - 1) == 1,……,所以这个大数每位的权取模之后全是一,所以要判断k进制数是否是(k - 1)的倍数的话直接将各个数相加,判断一下是否是(k - 1)的倍数就行。COde:#include#include#include原创 2017-07-16 20:57:01 · 226 阅读 · 0 评论 -
玲珑杯round #18 1147 - 最后你还是AK了(思维)
题意:给一棵树,然后找n / 2对点,使得max(∑n/2i=1dis(ai,bi))最大,而且可以给边加某些数,每条边只能加一次。思路:PS:n和m搞混了,一直WA,太粗心!#define OPENSTACK#includeusing namespace std;typedef unsigned long long ll;const ll maxn原创 2017-07-16 11:26:35 · 318 阅读 · 0 评论 -
codeforces828C
题意:给出一些串的位置,要求构造成原串,空余的地方补a;思路:将每一个串的位置用vector存,排序,然后避免重复。PS:在循环里面string 赋值就超时了,要调用,因为这里串的长度和串的个数都很大。。Code:#include#include#include#include#includeusing namespace std;typedef l原创 2017-07-15 17:47:02 · 300 阅读 · 0 评论 -
CodeForces 822C(思维)
题意:给出n条线段和m,每条线段有一个cost,然后求出长度和等于m的两条不相交线段的cost之和最小,输出最小cost思路:用一个sum[]数组记录之前出现的区间长度的最小cost值,,将所有段点的进行排序; 然后进行遍历,如果是左端点的话就直接更新ans,不是的话就更新sum值; 为了使求得两条线段不相交,在排序的时候,有可能一条线段的原创 2017-07-12 14:32:00 · 348 阅读 · 0 评论 -
codeForces 612D(思维)
转载自:http://blog.csdn.net/qq_34374664/article/details/72377345题意: 给出n条线段和k,然后输出被这些线段经过了至少k次的点形成的线段。思路:一个计数变量cnt,遇到一个起点就cnt++,终点就cnt--,如果遇到起点cnt变成了k,说明他是所求线段的一个起点,把他扔进答案,如果遇到了一个终点,原来是k,说明他转载 2017-07-12 10:55:22 · 250 阅读 · 0 评论 -
hdu 5334
题意:给出一个数组的不同子集的个数k,求出一个数列满足这个条件;思路:当数列为1 ,2,3,,,,n的时候,不同子集的个数就为等差数列求和n * (n + 1)/2;当数列中出现两个相同的数的时候,你会发现不同子集数少了一个,以此类推,3个的时候少了 1+ 2 = 3个,4个的时候少了1 + 2 + 3个……;找的时候记得用二分;#includeusing nam原创 2017-04-29 20:49:46 · 216 阅读 · 0 评论 -
hdu5965(思维)
PS:当初用状压dp写了一发,无限超时,感觉时间复杂度最多为T * n * 20。后面看了题解之后,发现可以直接枚举第一列的个数,用dp[i]记录每一列的数的个数。如果为0或者2的话,就有1种情况;为1的话就有两种情况。其他为零。PS: 竟然是对1e8+7取模,满满的都是套路呀。#includeusing namespace std;typedef long lon原创 2017-08-21 20:44:27 · 409 阅读 · 0 评论