思维题
Henry_WYH
兴趣使然
展开
-
usaco training 5.1 星空之夜
https://www.acwing.com/problem/content/1404/这道题bfs一眼出关键在于如何处理相同形状—哈希:对于相同形状的哈希处理方法有一个套路:用一个vector存下所有组成当前形状的坐标,对所有坐标两两求欧几里得距离sqrt(double)得到的双精度值就是哈希值,由于只有26个字母,所以在查找哈希值的时候遍历一遍即可#include<bits/stdc++.h>using namespace std;#define N 510typedef原创 2021-09-21 00:32:20 · 128 阅读 · 1 评论 -
Abracadabra 子串匹配 、 分治
https://codeforces.com/contest/161/problem/C#include<unordered_set>#include<unordered_map>#include<functional>#include<algorithm>#include<string.h>#include<iostream>#include<iterator>#include<cstring>原创 2021-10-26 18:53:06 · 129 阅读 · 0 评论 -
K-th Number二分+枚举区间的好方法---尺取法
题目描述 Alice are given an array A[1..N] with N numbers.Now Alice want to build an array B by a parameter K as following rules:Initially, the array B is empty. Consider each interval in array A. If the length of this interval is less than K, then ignore th原创 2021-10-25 20:45:18 · 161 阅读 · 0 评论 -
cf744 div3 G Minimal Coverage
大意是有之前拜访的直线的端点当作起始点摆放,要求最小的覆盖并集长度状态标识:f[i][k]表示前i个直线能摆放的,当前距离最左边曾到过的端点为参照系的距离为k ,的所有方案总的覆盖并集长度的最小值有状态转移方程://2000是所能保证的最差情况的最优解,鉴于ai<=1000;此状态表示如果向右摆放所能得到的总长度最小值if(k+a[i]<=2000) f[i][k+a[i]]=min(f[i][k+a[i]],max(f[i-1][k],k+a[i]));//表示向左摆放,如果.原创 2021-10-02 16:48:55 · 147 阅读 · 0 评论 -
DP中的实际意义: NC17621 管道取珠 NC210732 灯谜
这道题直接要求ai^2,但是我们呢不可能把所有ai都求出来然后求和,因此我们需要换个角度切入这里的ai^2 是有实际意义的:ai ^2表示两个一摸一样的装置一起取珠子,取得的结果完全一样的方案数。因此我们可以设出状态标识:f[i][j][k][l]f[i][j][k][l]f[i][j][k][l]表示第一个装置上面取到第i个,下面取到第j个,第二个装置上面取到第k个,下面取到第l个的方案数当一上,一下分别等于二上二下的时候对应四种状态转移方程但是由于数据范围,开思维远超内存,因此我们可以压缩掉一..原创 2021-10-02 09:58:55 · 124 阅读 · 0 评论 -
Codeforces Round #744 div3 E-2 Array Optimization by Deque
https://codeforces.com/contest/1579/problem/E2终于补完题辣。。。这道题当时脑抽了一下,没搞出来。首先,还是双端队列插头插尾的问题,但是要求的是逆序对最小。这里也有一个小结论,就是我们按照贪心的思路插,每次选择逆序对较小的插法:插前or插后先对整体离散化,然后用树状数组维护每个位置出现的个数,插前插后取最小的即可:int tr[N],n,m,T;vector<int> a,b;int lowbit(int x){ return x&原创 2021-10-01 15:37:16 · 89 阅读 · 0 评论 -
Codeforces #745 div2 C. Portal
补完这道C题感觉收益匪浅啊…也学习到了优化n^4前缀和的技巧,感觉和之先做过的多维背包DP很类似:首先把行,列,和整个的前缀和预处理出来然后封装函数calc计算固定上界和下界时,某一列中符合要求的数量,如列y:然后写一个计算如图形状中,需要反转的数量的计算函数get;变成像一个汉堡一样,上界下界全是1,中间全是0的如图形状需要反转的次数然后我们就可以开始分析了;我们列出当确定上界up,下界dw,右界i的时候,(这些靠枚举),如何求得符合要求的传送门?借助我们之先封装好的两个函数,有:g.原创 2021-10-01 10:58:19 · 189 阅读 · 0 评论 -
How Many 0‘s?
这道题的题意就是给定L和R让求L到R之间出现的所有数中数位是0的个数和其实是一道思维题+递推模拟一个例子:40320在最后一位:40310在倒数第二位:40100在倒数第三位:3*100+32+1 (注意此时0~32共33个)0在最后一位:0因此我们直接枚举一遍数位即可:#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>using names.原创 2021-09-26 18:36:43 · 96 阅读 · 0 评论 -
珂朵莉与宇宙
链接:https://ac.nowcoder.com/acm/problem/14600来源:牛客网题目描述星神是来自宇宙的所以珂朵莉也是吧所以我就出了个题给你一个长为n的序列a,有n*(n+1)/2个子区间,问这些子区间里面和为完全平方数的子区间个数链接:https://ac.nowcoder.com/acm/problem/14600来源:牛客网输入描述:第一行一个数n第二行n个数表示序列a输出描述:输出一个数表示答案示例1输入复制60 1 0 9 1 0输出复原创 2021-09-24 14:44:46 · 224 阅读 · 0 评论 -
不用加减乘除的加法---全加器
只用位运算,比较神奇class Solution {public: int add(int num1, int num2){ while(num2){ int sum=num1^num2,carry=(num1&num2)<<1; num1=sum,num2=carry; } return num1; }};原创 2021-09-22 16:41:20 · 65 阅读 · 0 评论 -
北师大ACM-鄙视链
链接:https://ac.nowcoder.com/acm/contest/20164/CNU ACM校队现在有n名队员,对于任意两名队员i和j,要么i鄙视j,要么j鄙视i,需要注意的是鄙视关系并不满足传递性,即使i鄙视j、j鄙视k,也并不意味着一定有i鄙视k。小Q同学认为,如果有t名不同的队员满足a_1鄙视a_2、a_2鄙视a_3、……、a_{t-1}鄙视a_t,那么这就是一条长度为t的鄙视链。显然鄙视链越长越不利于团队建设,小Q同学希望你帮他分别算一算有多少种n个人之间的鄙视关系满足最长的鄙视链的长原创 2021-09-09 01:33:35 · 321 阅读 · 0 评论