摘要:两种dp状态的设置法 比较坑的一个地方:不论是哪种设置法,最后都要特判一下所有骨牌相同的情况,这种情况要把最后的结果/2 因为此时每种骨牌排列,都可以将每块骨牌逆过来,还是合法的,基于我们设置的状态,这样就多统计了一倍,所以要/2 只要有一块骨牌和其他不同,上述情况就不成立 此外:当s[i]==t[
阅读全文
摘要:题意比较难懂,因为是最大化最小值,无脑二分答案即可 /* 每走一步,图上所有数-1,使(1,1)走到(n,m)的路径上数最小的点最大,问这个值 样例1的路线 9 8 3 3 5 7 3 4 4 3 */ #include<bits/stdc++.h> using namespace std; #de
阅读全文
摘要:/* 首先想到拆绝对值 ta-tb = ha-hb ta+tb = ha+hb 可以发现,两个特征值之差/和 相等的点可以互相跳跃 那么构造出一幅二分图,左边是所有特征值之差,右边是所有特征值之和,每个点(除结点1外)代表了一条边 要求的结果,显然是从结点1的和|差一直到达结点n的和|差所经过的结点
阅读全文
摘要:被这题气死,做了半天才做出来 求折线U在L上面的面积 有两个点要注意:1.求的面积必须是封闭的,即开口的开头不算,开口的结尾不算 2.最后x可以水平延伸到无限远 #include<bits/stdc++.h> using namespace std; #define N 200006 int n,m
阅读全文
摘要:/* 拼接思想: g[u][j]表示u子树里距离u距离>=j的所有点都被覆盖的代价(子树里扣掉一个以u为圆心的扇形) g[u][j]=sum{g[v][j-1]} f[u][j]表示u子树内以及距离u距离<=j的所有点都被覆盖的代价 (子树加上以u为圆心的圆) f[u][j]=min(f[v][j+
阅读全文
摘要:一对一,多对一的延迟加载: Account对应的User对象在查询时先不加载,等用到了再进行加载 首先在主配置文件里要设置两个选项 <!--配置参数--> <settings> <!--开启mybatis支持延迟加载--> <setting name="lazyLoadingEnabled" val
阅读全文
摘要:定义两个类(对应数据库内两张表) User ,Account,每个Account属于一个User User类 及其 对应的IUserDao package com.itheima.domain; import java.io.Serializable; import java.util.Date;
阅读全文
摘要:/* dp[i][j][k]表示到了第i颗子弹,cd1=j,cd2=k 的最优解 */ #include<bits/stdc++.h> using namespace std; #define N 1005 int cd1,cd2,n,b[N],dp[5][105][105]; int solve(
阅读全文
摘要:首先定义queryVo 类 package com.itheima.domain; import java.util.List; public class QueryVo { private User user; private List<Integer> ids; public User getU
阅读全文
摘要:设单位串长度为k,在母串上维护区间[l,r],右端点每次向右移动k,截取的长为k的字符串tmp,看字符串集里是否有这个串 如果没有,那么[l,r]这一整段都清空掉,l=r=r+k 如果有,那么进行滑动窗口,当且仅当[l,r]区间出现的每种单位串数量<=每种给定集合的单位串数量,l才不往右移动 同时维
阅读全文
摘要:class Solution { public: bool dp[1005][1005]; char S[1005],P[1005]; bool isMatch(string s, string p) { int n=s.size(),m=p.size(); for(int i=0;i<n;i++)
阅读全文
摘要:接雨水的二维版,先把最外层的边框围起来,然后逐步向内收缩边框,每次找边框的最低点,然后内(四个方向拓展) 如何统计每个点的贡献?由于木桶理论,该木桶内水的高度等于木桶边框的最低点,那么拓展时如果遇到边框小于当前边框,说明这个位置可以灌水,同时这个位置的高度也可以改成当前边框的高度 class Sol
阅读全文
摘要:先进行全局配置 SqlMapConfig.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.or
阅读全文
摘要:首先,答案具有单调性,所以我们用一个指针pos指向第k大的值 然后来考虑一个点不会被炸掉的情况(考虑到这个点时,所有比其大的点已经更新在线段树里) 必须是这个点及其后面位置的x个炸弹炸不到它 线段树维护前i个位置的点被炸完还需要的炸弹数,我们再维护一个Max,那么当Max[root]>0时,表示还有
阅读全文
摘要:先把两位数的匹配状态预处理出来,然后用一位数去填 #include<bits/stdc++.h> using namespace std; #define ll long long #define N 30 int cnt[N],len,n,vis[N],a[N],t; char s[N]; vec
阅读全文
摘要:SqlMapConfig.xml 注意在mybatis8.0后要对数据库的url配置要额外增加时区 serverTimezone=GMT%2B8 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//myb
阅读全文
摘要:activity 里的 HttpUtil.sendOkHttpRequest(url, new Callback() { @Override public void onFailure(Call call, IOException e) { } @Override public void onRes
阅读全文
摘要:https://www.cnblogs.com/whycxb/p/9374690.html toolbar和可折叠标题栏会有冲突 CoordinatorLayout 实际上是个帧布局,里面可以添加其他view
阅读全文
摘要:好题,有几个要注意的地方: 1.特判无解的情况 2.如果大区间包含一个小区间,且这两个区间and结果都是0,那么只要考虑小区间就可以了 /* 开数组f[i][j]=1表示第i个数第j位必须取1,这部分可以预处理 然后对于每一位单独考虑,可以得到一个长为n的一维数组,有些段必须为1,有些段至少要有一个
阅读全文
摘要:d:把排列当成环拉出来,老套路了 /* 把每个环拉出来,然后枚举长度的因子,判是否可行 */ #include<bits/stdc++.h> using namespace std; #define N 200005 int vis[N],n,p[N],c[N],ans; vector<int>v;
阅读全文
摘要:这题的证明用了鸽笼原理,感觉真的很精妙 自己傻逼写错了个地方,调了老半天 /* 性质,三个向量里必定存在两个向量,相加后模长<=r 证明:三个向量(以及三个对应的反方向向量)中, 必定有两个向量的夹角在[0,60]之间 -> 必有两个向量夹角在[120,180]之间 所以三个合并成两个,重复这个过程
阅读全文
摘要:/* 把所有的阻挡物按x轴排序,对于每个点i,二分去找左右两端点[l,r],求[l,r]未被阻挡的距离 */ #include<bits/stdc++.h> using namespace std; #define N 400005 #define ll long long typedef doub
阅读全文
摘要:求两个凸包,问其中一个能否在平移,旋转之后与第二个重合 把凸包用 边-角-边 这样的形式hash出来,然后用字符串匹配的方式进行匹配即可 #include<bits/stdc++.h> using namespace std; #define N 200005 #define ll long lon
阅读全文
摘要:不知道为什么tag里会有个fft。。 #include<bits/stdc++.h> using namespace std; #define N 2005 #define ll long long typedef double db; const db eps=1e-8; const db pi=
阅读全文
摘要:感觉这里有点坑,不能直接在runOnUiThread里调用 adapter.notifyDataSetChanged(); (没有效果) 直接重新new一个adapter,然后用recycleView去设置一下 目前好像只有这种解决方法了。。
阅读全文
摘要:https://www.cnblogs.com/mengdd/p/5590634.html 修改toolbar的title public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container
阅读全文
摘要:感觉这题思路简单,其实就是解一个二元一次方程组 #include<bits/stdc++.h> using namespace std; #define N 20 int x[N],y[N],n; double xa,xb,xc,ya,yb,yc,X,Y; int main(){ cin>>n>>X
阅读全文
摘要:据说这个是长链剖分。。 自底向上树形dp,维护住子树里最深的那个叶子即可 #include<bits/stdc++.h> using namespace std; #define ll long long #define N 200005 ll n,k,a[N],num[N]; vector<int
阅读全文
摘要:dp[i]表示一个人在前i轮死亡的概率一个人在第i轮胜出的概率=(其余在前i死亡的概率-其余人在前i-1轮死亡的概率)*这个人前i轮不死的概率 pass:感觉正解有点奇怪 /* dp[i]表示一个人在前i轮死亡的概率 一个人在第i轮胜出的概率=(其余在前i死亡的概率-其余人在前i-1轮死亡的概率)*
阅读全文
摘要:枚举所有时刻,在两个时刻之间三分,因为距离肯定是个单峰函数 对卡精度又有了一些心得。。如果是db和某个int标准值比较,那么用sign,如果是两个db判大小,如三分,二分里精度要求高,那么不用sign会比较好 /* 从时间1-n段枚举这个过程 将每个人每个时间段的路程看做是线段, 求出两线段的最近点
阅读全文
摘要:由题目给出的条件不难发现这是个凸包 又因为要求的是曼哈顿距离的最大值,所以当k>=4时都是同一个答案,即上下左右的最远点构成的凸包外接矩形 当k=3时固定两个极点,枚举第三个点即可(赋值粘贴就完事了) #include<bits/stdc++.h> using namespace std; #def
阅读全文
摘要:直接无脑求交点然后求最短路了 #include<bits/stdc++.h> using namespace std; typedef double db; const db eps=1e-8; const db pi=acos(-1); int sign(db k){ if (k>eps) ret
阅读全文
摘要:尽量用setImageURI进行设置资源的路径(本地或网络), 加载本地资源时如果用setImageResource,那么xml设置里的属性(如圆角)都会失效
阅读全文
摘要:好好的马拉车不用,非要用回文树,结果调了半天 枚举回文中心位置,看这个位置的回文串是否可以和前缀或后缀接上,如果能接上,算答案的时候要优先取前后缀,即可能会截掉一部分回文串的两侧 用马拉车在s_new上非常方便处理 #include<bits/stdc++.h> using namespace st
阅读全文
摘要:由于斜率不是递增的,所以凸壳队列的head就不能动(退化成了一个单调栈),然后每次二分找直线切到的点 #include<bits/stdc++.h> using namespace std; #define N 2000006 #define ll long long struct point{ l
阅读全文
摘要:struct point{ ll x,y; point operator + (const point &k1) const{return (point){k1.x+x,k1.y+y};} point operator - (const point &k1) const{return (point)
阅读全文
摘要:#include<bits/stdc++.h> using namespace std; #define ll long long #define N 500005 struct point{ ll x,y; point operator + (const point &k1) const{retu
阅读全文
摘要:把hdu3507的式子转化一下就行 #include<bits/stdc++.h> using namespace std; #define ll long long #define N 500005 struct point{ ll x,y;//x=sum[i],y=dp[i]+sum[i]*su
阅读全文
摘要:https://blog.bill.moe/1d1d-DP-optimization-notes/#%E6%96%9C%E7%8E%87%E4%BC%98%E5%8C%96 #include<bits/stdc++.h> using namespace std; #define ll long lo
阅读全文
摘要:stl的queue反而很慢 /* 枚举上下边界,再从左到右扫一次就ok */ #include<bits/stdc++.h> using namespace std; #define N 505 int n,m,sum[N][N],k; char s[N][N]; int main(){ freop
阅读全文
摘要:/* dp[i]表示前i个数的最优解 dp[i]=min{ dp[j]+max[j+1,i] },sum[i]-sum[j]<=M 使用决策单调性:显然dp[i]是单调递增的 那么维护一个区间[j+1,i]关于a的递减单调队列q 对于a[q[1]]可以控制的决策范围是[j+1,q[1]],又因为决策
阅读全文
摘要:经典老题了,其实数据没那么强 /* dp[i]表示覆盖了前[0,i]区间的最优解 dp[i]=min(dp[i-j]) 2A<=j<=2B 直接用单调队列优化 对于奇数坐标,直接忽略就行 */ #include<iostream> #include<queue> #include<cstring>
阅读全文
摘要:/* dp[i][0|1]表示选|不选第i只奶牛可获得的最大收益 dp[i][0]=max(dp[i-1][0],dp[i-1][1]) dp[i][1]=max(dp[x][0]+sum[i]-sum[x]) 转化得到 dp[i][1]=max(dp[x][0]-sum[x])+sum[i] 那么
阅读全文
摘要:#include<bits/stdc++.h> using namespace std; typedef double db; const db eps=1e-6; const db pi=acos(-1); int n; struct Node{ int id;db h; Node(){} Nod
阅读全文
摘要:结论:只要多边形的所有对边都是两两平行的,就一定能满足条件 #include<bits/stdc++.h> using namespace std; #define N 300006 #define ll long long ll n,x[N],y[N]; int main(){ cin>>n; f
阅读全文
摘要:/* 贪心:一开始所有点都看成一个独立区间,从后往前遍历每一个点,用一个栈(显然是单调递增的)维护后面的点组成的区间 如果该点的值超过 队首的区间平均值,那么进行合并 */ #include<bits/stdc++.h> using namespace std; #define N 2000005
阅读全文
摘要:Android 1.把listview改成recycleview ✅ 2.增加下拉刷新和上拉刷新 ✅ 3.图片加载改成fresco https://blog.csdn.net/android_ls/article/details/53137867?depth_1-utm_source=distrib
阅读全文
摘要:/* 随机,给每个点黑白随机黑白染色,由于题目要求路径必须黑白相间 dp[k][i]表示长度为k的路径,终点是i的最小代价 除去点1之外,最小值对应的路径里最多有9个点,那么这条路径随机到颜色对应的概率是1/512 那么随机5000次,这个概率就接近1了 */ #include<bits/stdc+
阅读全文
摘要:/* 对于每个n,满足条件的d总是在一段区间内 d的最小值就是完全二叉树的dmin,最大值是链的dmax [dmin,dmax]这段区间内的所有值都可以取到 策略:先构造一棵n个点的完全二叉树,自底层向上判断,每次只把一个可以往下挪的点往下挪 这样每次d只会+1 */ #include<bits/s
阅读全文
摘要:/* 1-100t 3+2t 2+3t v<0的分一组,v>=0的分一组 */ #include<bits/stdc++.h> using namespace std; #define N 400005 #define ll long long struct Node{ ll x,v; }a[N],
阅读全文
摘要:/* 奇数位上的0只能移动到奇数位,偶数同理 t1,t2可互相转化的一些推论 1.t1,t2里0的个数相等 2.t1里所有0的相对位置不会变化,所以t1,t2里所有对应的0奇偶性必须相等 把原串所有0按照位置的奇偶性进行hash,然后考虑如何快速hash t1,t2里的0序列 找到t1,t2里第1个
阅读全文
摘要:挺好的题 /* 每个武器攻击力ai,价格cai 每个装备防御力bi,价格cbi 每只怪兽攻击力xi,防御力yi,收益zi ai>yi && bi>xi 那么可以获得收益zi 选择一件武器,一件装备,求最大收益 武器装备按ai,bi升序排序 怪兽按yi升序排序,那么当遍历到第i、只怪兽时,只有aj>y
阅读全文
摘要:https://blog.csdn.net/qq_35840038/article/details/85061597
阅读全文
摘要:/* p个位置用来组队(有序) k个观众(无序) 要求收益最大化,dp[i][S]表示前i个人的组队状态是S时的最大收益 先对a进行排序 第i个人加入后有三种选择: 找个位置组队: 挑一个S中为0的位置 不组队,去当观众/有可能当不成:如果i-cnt(S)>=k,那么当不成观众 */ #includ
阅读全文
摘要:/* 首先有gcd的性质 gcd(a1,a2...) = gcd(a1,a2+a1...) 本题要求所有f(S)的gcd,可以转化成找所有单位点集的gcd 什么是单位点集? 右侧两个点a,b相邻点集想等,则这两个点在同一个集合内 证明:所有不同的f(S)都可以由单位点集的f(S)凑出来 */ #in
阅读全文
摘要:cf1323 E (ok) cd1316 E (ok) cf1316 F 51nod1269 cf1312 D (ok) cf1312 E (ok) cf1326E (ok) cf1327F (ok) cf1332E (ok) cf1332F (ok) cf1330E (ok) cf1334D (o
阅读全文
摘要:https://blog.csdn.net/qq_35649707/article/details/80199823
阅读全文
摘要:1.使用通知以及PendingIntent if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) { Context context=getApplicationContext(); Intent inte
阅读全文