
思维
Dale_zero
从零开始吧!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
zoj 4029 2018浙江省赛F Now Loading!!!
题目链接:zoj 4029用n^2不现实,考虑到某些数字对于用一个p的log值相等,所以可用二分解决用到了c++的upper_bound,找到比当前值大的第一个数字在数组中的位置,然后一个前缀数组算出分子的和#include<iostream>#include<cstdio>#include<vector>#include<set>#incl...原创 2018-05-04 20:15:24 · 576 阅读 · 0 评论 -
hdu 6435 CSGO 曼哈顿距离性质
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6435你有n把主武器,m把副武器。现在你要各选一把。每把武器有一个基础能力值和k各参数。你需要使你的两把武器的基础值之和加各个能力值的绝对值之和最大。先只考虑能力值:如|a1-b1|+|a2-b2|+|a3-b3|约掉绝对值之后根据a1~a3和b1~b3的值,原式的每个数字的符号有2^3种可能性...原创 2018-08-22 21:36:16 · 460 阅读 · 0 评论 -
hdu 6438 Buy and Resell 优先队列贪心+思维
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6438 k值为是否已经卖出的标记,若k=1,说明在该天曾经卖出一件物品。然而因为从a买入,从b卖出,再从b买入,从c卖出和从a买入,从c卖出的结果是一样的。所以定义k值用来更新买卖的最优值。在优先队列中,如果两元素w值(当天价值)相同,则优先取k较大的元素。优先队列存储每一天的价格,贪心对于...原创 2018-08-27 17:26:54 · 285 阅读 · 0 评论 -
codeforces 1025C Plasticine zebra
题目链接:http://codeforces.com/contest/1025/problem/C要形成最大值只需要裁切旋转一次,把开头和结尾的串拼起来判断是否比当前最优值更优。逻辑不好处理的话,注意n=1和2的时候的特判。显然最优值不可能大于n,所以最后和n比较一下大小。。。 #include<bits/stdc++.h>#define inf 0x3f3f3...原创 2018-08-21 18:02:37 · 298 阅读 · 0 评论 -
hdu 6415 Rikka with Nash Equilibrium DP
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6415dp i,j,k代表当前已经放置了n-i+1~n个数,剩下的数字不能在j行,k列中放置③:1.dpi+1,j,k+1;2.dpi+1,j+1,k;3.dpi+1,j,k;倒着DP时,最后输出DP【n*m】【n】【m】#include<bits/stdc++.h>...原创 2018-08-21 18:23:46 · 210 阅读 · 0 评论 -
hdu 6424 Rikka with Time Complexity 数学
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6424进行复杂度的比较时先比大项后比小项。这道题基数是logn所以log越多复杂度越小,要注意一下。然后n最大为3,考虑n为3的时候对整个式子取两次log。变成f(A+2)+f(B+1)f(C),为了使f(A+2)和f(B+1)f(C)能够比较,变成f(A+2)f(+oo)和f(B+1)f(C)...原创 2018-08-24 19:16:04 · 289 阅读 · 0 评论 -
hdu 6447YJJ's Salesman 离散化+树状数组+DP
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6447因为图中点的坐标值过大,达到1e9.然而只有1e5个点。所以先将其离散化。并按照<x.y>二元组排序。每次对于同一行的点连续处理两次。第一次:先考虑由上一行转移而来的情况:树状数组找到左上角的最大值+v、以及上方值的最大值。第二次:考虑由同行的点转移来的情况。树状数组查询区...原创 2018-08-25 21:24:58 · 690 阅读 · 0 评论 -
hdu 6370Werewolf 并查集、思维
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6370因为狼人能说谎话也能说实话,所以所有人都有可能是狼人,能确定的村民数量为0要判断一个人是不是狼人,先假设他是村民,然后看是否有矛盾(他认为的村民说他是狼人),若有矛盾说明他是狼人,然后说他是村民的人也一定是狼人。县用并查集维护所有村民的边,然后对村民边反向建边。代码比较简单#in...原创 2018-09-04 15:27:16 · 199 阅读 · 0 评论 -
hdu 6373 Pinball
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6373将重力加速度分解成垂直平面与平行于平面两个分加速度,然后用时间做一下计算就ok,注意平行于斜面的距离计算要到垂直于远点o为止,而不是到y轴。#include<bits/stdc++.h>#include<math.h>#define mod 100000000...原创 2018-09-04 00:03:06 · 212 阅读 · 0 评论 -
codeforces 1059B Forgery 暴力
题目链接:http://codeforces.com/problemset/problem/1059/B给你一个印章,能印出形为####.####的图案,#代表墨水,.代表空。给定图案问是否能用这个印章印出目标图案遍历图中每一个点,检查以每一个s[i][j]为中心点时是否能盖下印章,如果以其为中心点,四周的八个点有‘.’或者超出边界,则不能以其为中心点盖章,遍历整个图吧能盖...原创 2018-10-06 12:37:06 · 445 阅读 · 0 评论 -
hdu 5514 Frogs 思维+容斥
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5514容易得出一跳距离为x的青蛙在m个石头上形成的等差数列差值d=gcd(x,d),问题转化成在0~m-1区间上有一些d=m的因数(因为gcd(x,m)是m的因数)的等差数列螚覆盖多少个石头。首先O(sqrt(m))处理出m的所有因数,如果某个因数是某个gcd值的倍数,则说明其一定至少出现一次,...原创 2018-10-31 15:51:37 · 270 阅读 · 0 评论 -
hdu 5510 Bazinga KMP+暴力
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5510对于字符串si和si+1,如果si是si+1的子串,那么在判断si+1和si+2的时候,只需要判断si+1是不是si+2的子串即可,si可忽略掉。但是如果si不是si+1的子串,那么在判断si+1和si+2的时候,需要判断si是不是si+2的子串这种关系用一个visit数字保存,暴力k...原创 2018-10-30 21:32:26 · 285 阅读 · 0 评论 -
hdu 5512 Pagodas 思维
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5512一开始的a和b确定了等差的一个数列,差值d为gcd(a,b),所以判断能选数字的奇偶性即可#include<bits/stdc++.h>using namespace std;int main(){ int t; int cas=1; sca...原创 2018-10-30 22:13:52 · 327 阅读 · 0 评论 -
hdu 6446 Tree and Permutation dfs,思维
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6446在n个点的全排列中,考虑每一条边出现的次数。设这条边把树分为两个连通分量分别有M和N-M个节点。那么其排列数为M*(N-M),因为还有倒过来的情况所以要*2.考虑其他点的全排列,所以再乘上(n-2)!。所以这条边对答案的贡献为w*(N-M)*M*2*(n-2)!遍历N-1条边,再乘上n-1...原创 2018-08-26 16:48:25 · 214 阅读 · 0 评论 -
hdu 6406
好歹是过了。。。题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6406不知道用dp是怎么做的思路上最大的亮点就是找出从i到n的数中第一个大于k的数字。考虑将第p个数改为q。分为前后两边考虑前面:预处理出b【i】代表前i个数能取走多少个数,再维护一下前i个数的最大值。如果前k-1个数的最大值小于q,这部分对答案的贡献就是b【...原创 2018-08-17 01:42:08 · 416 阅读 · 0 评论 -
hdu 2018 母牛的故事 思维题
题目链接:hdu 2018题目有点意思,话说奶牛不分公母得嘛。。。把牛分为四类:成年牛,一年级,二年级,三年级(四年级就是成年牛了)维护n次,每一年的:一年级牛等于成年牛数量二年级牛等于一年级牛数量三年级牛等于二年级牛数量三年级牛全部变为成年牛最后求所有牛的数量就好了#include<iostream>#include<cstdio>#include<vector...原创 2018-05-22 18:56:50 · 331 阅读 · 0 评论 -
Codeforce 981D 贪心+dp
题目链接:点击打开链接本题目能简单的以dpij为前i段到第j个的最大值来dp,不满足最优子结构性质。因为最大的数有50位,可以进行60轮次动态规划,看最后的解能否达到这一轮的ans,如果不能达到,则去掉本轮新增的1位。因为位数是在上一轮的基础上增加的,所以不会出现都能达到而方案不同的漏洞#include<iostream>#include<cstdio>#include...原创 2018-06-04 21:36:05 · 347 阅读 · 0 评论 -
codeforce 985E dp+BIT
题目链接:点击打开链接思维很重要,首先要把这个问题抽象成模型。即能否用若干个盒子装下n个物品,每个盒子里的物品价值范围为ai,aj和ai到aj区间内的所有物品。用dp【i】表示从i到n个物品能否按规则装下,是为1,否为0;先将从小到大数组排序考量一个dp【i】时只需考量dp【i+k+1】,dp【i+k+2】。。。dp【x】(a【x】为upper_bound(a【i】+d+1))其中若有一个dp值为...原创 2018-06-05 13:50:05 · 293 阅读 · 0 评论 -
codeforce 990F
题目链接:点击打开链接给定每一个点的初始存量,通过分配管道的流量使得每个点最后的存量为0看了大神的题解,如果所有点的初始存量和不为0,那么直接输出impossible。(因为管道无论怎么分配都不会影响存量总量)然后生成一棵树,进行dfs。到达叶节点时处理之后回溯。每次对当前节点和其父节点的边进行处理,将当前节点的存量变为0,然后更新父节点的存量。#include<iostream>#...原创 2018-06-23 14:58:53 · 305 阅读 · 0 评论 -
codeforce 991E (组合数递归搜索)
题目链接:点击打开链接给出小明在迷糊的时候看到的车牌号数字,和真实数字相比:①真实出现的数字,小明都看到了②小明只可能把同一个数字看多,不可能看少③车牌号没有前导零问真实的数字有可能有多少种情况先把每个数字出现的次数记录下来,这就是在搜索时每个数字取到的上限从0到9遍历(相当于10层循环,在这里用递归的方式实现,每层循环的遍历次数即为该层数字出现的次数,代表取多少个这个数)在最后一层统计用当前这些...原创 2018-06-24 23:43:37 · 470 阅读 · 0 评论 -
hdu 6396 Swordsman 思维,排序,输入挂
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6396假设k为5,那么开5个数组用来分别存放每头怪兽对应的五个防御力用五个指针去从头开始遍历,如果当前值小于对应的攻击力,就判断一下这头怪兽的五个值是不是都小于其对应的男主的攻击力如果都小于那么就把能力值都加上b继续找,直到找不到为止namespace IO { const in...原创 2018-08-15 00:38:12 · 271 阅读 · 0 评论 -
hdu 6357 Hills And Valleys思维
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6357将枚举【i,j】区间化为枚举值域,原问题转化为两串的最长公共子序列问题,其中构造串可以重复的匹配#include<bits/stdc++.h>#define mod 1000000007#define For(i,m,n) for(int i=m;i<=n;i++)...原创 2018-08-07 23:12:03 · 355 阅读 · 0 评论 -
Codeforces Round#502 (Div1+Div2)D. The Wu
因为每个询问的k足够小(小于100),考虑将k变为答案的一维,然后可行状态最多有2^12个,所以最终答案的数组可以开成【4096】【100】。因为是小于等于k的个数,所以用前缀和求解比较方便。预处理数组p【4096】【4096】代表ij状态的Wu值,pre【i】【j】代表i状态k=j时s集合中与j状态的Wu值小于等于k的串的数量太弱了自己#include<bits/stdc++.h...原创 2018-08-09 00:58:55 · 416 阅读 · 0 评论 -
Codeforces Round#502 (Div1+Div2)C. The Phone Number思维
n个数的排序方式型为:x,x+1,x+2,...n,x-p,x-p+1,x-p+2.....,x-1,......1,2,3,....p即若干段连续上升的子序列,但其之间是从大的到小排序分块循环节为sqrt(n)的时候答案最小。本来写的是遍历搜索最优值,但是不知道为什么不对。。 #include<bits/stdc++.h>#define mod 1000000...原创 2018-08-09 01:04:46 · 206 阅读 · 0 评论 -
hdu 6408 From ICPC to ACM贪心模拟
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6408刚刚到学校火车坐的想死。。拜读了大佬的代码,有两个思路上的新理解吧。。1、还是降维吧,给了一个材料费用一个组装费用。将第i天最小的材料费用计算出来。本来想的是要n^2去计算,后来发现只要和前一天进行比对即可,因为两天如果材料来源相同,差别只在于i-1到i天的存储费用2、计算某天某材...原创 2018-08-18 22:10:11 · 406 阅读 · 0 评论 -
codeforces 1023D Array Restoration 线段树
题目链接:http://codeforces.com/problemset/problem/1023/D之前想的时候忘了如果序列中没有q,也没有0时应该输出no先特判,若果没有q并且有0,则先任意将一个0置为q,然后将所有的0置为他们相邻的值。这样不会影响序列的合法性,并且序列中没有了0,只需判断是否合法即可用线段树查询一个数字出现的两个端点之间是否有比它小的数,如果有输出no,如果每...原创 2018-08-19 13:36:18 · 317 阅读 · 0 评论 -
hdu 6400 Parentheses Matrix思维
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6400这题有坑。。hw的最小值小于等于4是一种情况,否则是另外一种情况。第一种情况可以(((((((())))(((((((())))))))))))第二种情况时第一行全为(,最后一行/列全为),中间则是"()()()()"和"(()()())"交替排列。。。。证明过...原创 2018-08-16 21:02:52 · 278 阅读 · 0 评论 -
CF 1091D
有两种子串能达到n*(n+1)/2,一种是n的全排列,有n个另一种是分段的,一段在前面的排列里,一段在后面的排列里。只要保证在前面排列里的序列不是完全倒着的就可以计入贡献。要用lucas计算组合数 #include<bits/stdc++.h>#define mod 998244353using namespace std;long long a[1000...原创 2018-12-31 15:21:58 · 474 阅读 · 0 评论