自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 资源 (1)
  • 收藏
  • 关注

原创 CodeForces - 572C——思维

题意:给定三个木棍,长度为a b c,现在可以给任意木棍增加任意长度(整数),但是增加的长度总数不能超过l(3e5),问有多少种增加方式使得增加完长度后的三个木棍可以构成一个三角形思路:刚开始想到枚举一个最长的木棍,然后枚举该木棍增加的长度,然后计算另外两个木棍的合法情况数,但是不是很好计算,因为合法即要考虑两边之和大于第三边,有要考虑另外两个木棍增加长度后不能超过当前枚举的木棍的长度(因为我...

2018-10-31 14:27:05 309

原创 HDU 6237 A Simple Stone Game——思维

题意:有n(1e5)堆石子,第i堆石子有a[i](1e5)个,现在可以进行任意次操作,每次操作可以把一个石头从一堆挪到另一堆,问最少操作几次可以达成这个条件:存在一个x,使得每堆的石子数量都是x的倍数思路:首先对石子总数进行质因分解,x一定是这些素因子中的一个,这个是我凭感觉蒙的,事实证明确实是对的。然后枚举素因子x,算每个素因子对应的最小移动次数,我们设b[i]=a[i]%x,那么我们对b从...

2018-10-29 16:56:10 255

原创 HDU - 6274 Master of Sequence——二分

按a的值分组,处理一下余数,二分一下就可以了但是我二分上界设置的1e18,在计算过程中爆炸了,正确的上界应该是1e14真的调了很久才意识到这个问题。。。明天就打区域赛了。。。#include <bits/stdc++.h>using namespace std;typedef long long ll;const int maxn = 1010;const i...

2018-10-25 15:09:00 216

原创 poj2954 Triangle——pick定理

题意:给定一个三角形,三角形的三个点都是整数点,问有多少个整数点严格在三角形内部思路:典型的pick定理题目,公式为s=a+b/2-1,s为整数顶点的多边形面积,a为它内部的整数点, b为它边上的整数点(包括顶点),那么题目要求的其实是b=(2*s+2-a)/2s可以通过向量的叉积运算得到,a可以通过gcd得到,两个点形成的线段包含的整数点为它们横坐标差值的绝对值和纵坐标差值的绝对值的gc...

2018-10-24 16:49:19 227

原创 HDU 6266 Hakase and Nano——思维

首先明确这是一个不公平的游戏,作弊的那个人一定更有利,由此猜测所有作弊的人必胜,除非条件实在太差, 我们要找的就是这些作弊也挽回不了的局面,思考后可发现作弊的一方拿只有一个石子的石头堆没有办法,因此从这上面出发,得到下面的结论:1.先手时必胜,除非石子总数是三的倍数且每一堆都只有一个石子2.后手时若对手能给你构造出第一种局面的话那么你必败,否则必胜#include <bits/...

2018-10-22 20:43:44 237

原创 HDU 5558 Alice's Classified Message——后缀数组+set+二分+rmq

15合肥签到题,不会后缀自动机只能用后缀数组来凑了我们要完成的工作是对s的每一个后缀suf[i],找以j(0<=j<i)为起点的一个子串,使得这个子串与suf[i]的公共前缀尽量长其实后缀数组的做法挺明显的,就是对于一个后缀suf[i],首先将它前面的后缀的rank值用set保存,然后拿rank[i]在set里二分找两个与rank[i]最接近的rank,最大匹配一定在这两个ra...

2018-10-22 00:18:38 222

原创 ZOJ - 3981 Balloon Robot——思维

先选1作为起始点跑一遍不高兴值,按不高兴值从小到大排序,然后顺序扫描,当要把第i个位置变为0时,实际上就是将i前面的元素+m,然后整体-unhappy[i]#include <bits/stdc++.h>using namespace std;const int maxn = 1e5 + 10;typedef long long ll;int t, n, q;ll m,...

2018-10-18 23:15:43 247

原创 HDU 5977 Garden of Eden——点分治

上来按照dp的思想没什么头绪,因为5e4*(1<<10)有点大,所以往暴力上想了,树上暴力的话一般是往点分治上想,稍加思考发现这题只要枚举子集就可以在n(log(n))^2内解决,注意root是全局变量会改变,要存一下,因为这个直接自闭#include <cstdio>#include <cstring>#include <iostream&gt...

2018-10-18 15:58:29 215

原创 HDU 5976 Detachment——贪心

很容易想到最优策略是2*3*4一直乘到前缀和小于n的最靠后的位置,设这个位置为p当segma(2,p)==n时明显答案就是mul(2,p)但是当segma(2,p) != n时会有一个余项,设为need,need=n-segma(2,p),显然现在项数不会再增加了,我们只能把need按照一定的策略分配给前面的元素才能使结果更大,按照直觉我们应该将need平摊给前面所有的元素,但是要注意ne...

2018-10-17 22:34:43 219

原创 HDU - 4010 Query on The Trees——Link Cut Tree

LCT模板题,link和cut是基本操作更新一条链(u,v)就是做 mroot(u); access(v); splay(v)操作;然后给v打上标记,splay时上下推即可求一条链(u,v)的最小值,同样做 mroot(u); access(v); splay(v);然后求v的最小值即可 上述的mroot(u); access(v); splay(v);实际上是提取链(u,v),先将u...

2018-10-16 22:35:39 209

原创 HDU - 5514 Frogs——容斥

假设a和b都是m的因子,设t=lcm(a,b),若t<m,则t也是m的因子根据这个结论我们可以在m的因子中进行容斥,因子用fac数组保存,设vis[i]为fac[i]需要贡献的数量,num[i]表示fac[i]实际贡献的数量,那么fac[i]应该对答案贡献(等差数列之和)*(vis[i]-num[i]),然后更新后面的因子j(i+1<=j<=因子总数),num[j] += (...

2018-10-13 17:17:33 203

原创 UVALive 3403 Mobile Computing——爆搜

有点像状压dp的爆搜#include <bits/stdc++.h>using namespace std;typedef pair<double, double> P;const int maxn = 10;const double eps = 1e-6;int dcmp(double x) { if (fabs(x) < eps) retu...

2018-10-13 10:51:13 272

原创 UVALive 4726 Average——斜率优化

维护下凸线,然后二分或者单调队列#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>#include <cmath>using namespace std;typedef long long LL;const int max...

2018-10-11 15:38:16 202

原创 HDU - 5955 Guessing the Dice Roll——ac自动机+概率dp+高斯消元

要写的就是代码中的solve函数,看一下就明白了,其余的都是模板,挺水的#include <bits/stdc++.h>using namespace std;const int maxn = 105;int T, N, L, data[maxn], id[maxn];double a[maxn][maxn], b[maxn];void Gauss(int num) {...

2018-10-09 12:11:57 222

原创 HDU - 5956 The Elder——斜率优化dp

状态转移方程很好想写出来发现是经典的斜率优化由于状态本质上是在树链上转移, 所以回溯的时候要撤销状态分析了一下单调队列可能不太好做,所以直接二分了#include <bits/stdc++.h>using namespace std;typedef long long LL;typedef pair<int, int> PA;const int m...

2018-10-08 18:41:59 267

原创 HDU 5952 Counting Cliques——剪枝

剪就完事了#include <bits/stdc++.h>using namespace std;const int maxn = 110;int T, n, m, s, ans;vector<int> G[maxn];int mp[maxn][maxn], temp[maxn];void dfs(int u, int sz) { if (sz =...

2018-10-08 16:52:48 186

原创 Gym - 101550E Exponial——欧拉降幂

a^b%c = a^(phi(c)+b%phi(c))%c1e9看似吓人,其实中间模数为1时可以直接返回0,算是个强剪枝#include <bits/stdc++.h>using namespace std;typedef long long LL;LL pow(LL x, LL y, LL mod) { LL ans = 1; while (y) {...

2018-10-08 16:17:58 433

原创 Gym - 101350G Snake Rana——容斥

容斥裸题#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;const int maxn = 1e4 + 10;const int INF = 0x3f3f3f3f;int T, n, m, k;...

2018-10-08 11:34:32 236

原创 Gym - 101550C Card Hand Sorting——思维

开始读错题意了,题目要求的是相同花色之间有序,知道这一点以后就枚举一下序列跑几个LCS就好了#include <bits/stdc++.h>using namespace std;const int maxn = 100;char str[maxn];int n, cnt[4], a[4][maxn];struct Node { int val, type;}...

2018-10-08 11:33:31 244

原创 Gym - 101550D Daydreaming Stockbroker——贪心

一个简单的小贪心,被队友坑着写了一发dp,emm。。。#include <bits/stdc++.h>using namespace std;typedef long long LL;const int maxn = 1000;int N;LL a[maxn];int main() { scanf("%d", &N); for (int i =...

2018-10-08 10:07:46 217

原创 HDU 3507 Print Article——斜率优化dp

首先不难推出这道题的状态转移方程:dp[i]=min{dp[j]+(sum[i]-sum[j])^2|0<j<i}假设有k<j,j比k更优当且仅当dp[j]+(sum[i]-sum[j])^2<=dp[k]+(sum[i]-sum[k])^2化简得:dp[j]-dp[k]+sum[j]^2-sum[k]^2<=2*sum[i]*(sum[j]-sum[k])...

2018-10-06 18:12:27 180

原创 CodeForces - 787D Legacy——线段树优化建图

建两棵线段树,一棵表示入区间,一棵表示出区间入区间每个父亲和儿子连边,权值为0,出区间每个儿子和父亲连边,权值为0,入区间和相应的出区间连边,权值为0每次查询新建两个点,这里设为q1,q2,并假设要连边的两个区间为【l1,r1】,【l2,r2】(题目中为有向边),那么其实是【l1,r1】的出区间连q1,边权为0, q1连q2,边权为输入的边权,q2连【l2,r2】的入边,边权为0,和区间连...

2018-10-05 20:35:33 657

原创 UVALive 4850 Installations——思维

按d排序保证最大惩罚最小,但是此时次大惩罚+最大惩罚不一定最小,可以牺牲一个任务使得最大惩罚增大,次大惩罚减小使得最终答案减小#include <bits/stdc++.h>using namespace std;const int maxn = 1000;int T, N, ans;struct Data { int s, d, x; bool oper...

2018-10-04 22:36:14 239

原创 HDU 5992 Finding Hotels——kd树

离线按cost排序,先把所有节点标记为不可用,然后边扫边标记就行了,复杂度O(mlog(n)) (最坏O(msqrt(n)))#include <bits/stdc++.h>using namespace std;typedef long long LL;const LL INF = 1LL<<62;const int maxn = 2e5 + 10;con...

2018-10-04 11:03:18 216

原创 HDU - 2966 In case of failure——kd树

平面最近点对模板#include <bits/stdc++.h>using namespace std;typedef long long LL;const LL INF = 1LL<<62;const int maxn = 1e5 + 10;const int D = 2;int T, N, cmp_idx, split[maxn];struct No...

2018-10-04 10:20:50 211

原创 HDU - 5985 Lucky Coins——概率

题意:有n种硬币,每种硬币有num个,扔一次正面向上的概率为p,现在同时对所有硬币进行操作,每次操作将所有硬币扔一次,舍弃背面朝下的,若干次操作后只剩下一种硬币,这种硬币就是幸运硬币,问每种硬币成为幸运硬币的概率思路:设a[i][j]为第i个硬币,扔j次后没有正面向上的硬币的概率,则a[i][j]=(1-p[i]^j)^num[i]设b[i][j]为第i个硬币,扔j次后至少有一个硬币正...

2018-10-03 20:05:23 205

原创 HDU - 6000 Wash——思维

首先优先队列处理每件衣服最早洗完的时间然后按照最晚洗完的衣服用最快的烘干机的原则贪心#include <bits/stdc++.h>using namespace std;const int maxn = 1e5 + 10;typedef long long LL;int T, L, N, M;LL W[maxn], D[maxn], finish[maxn*10]...

2018-10-03 10:39:13 176

原创 HDU - 6006 Engineer Assignment——dp

和背包差不多#include <bits/stdc++.h>using namespace std;const int maxn = 100;int T, n, m, c[maxn], d[maxn], a[maxn][maxn], b[maxn][maxn];bool vis[maxn+10];vector<int> vec[maxn];int dp[1...

2018-10-01 20:19:49 232

原创 HDU - 6007 Mr. Panda and Crystal——dp

求出每个物品的最小花费后跑完全背包最小花费循环n次,每次把k个关系都更新一遍就行了#include <bits/stdc++.h>using namespace std;const int maxn = 1010;typedef long long ll;const ll INF = 1e12;int t, m, n, k;int flag;ll c[maxn]...

2018-10-01 19:39:37 212

原创 UVALive 4394 String painter——dp

设ans[i]为区间[1,i]已经染好的最小花费若s[i]=t[i],ans[i]=ans[i-1]否则ans[i]=min{ans[j-1]+cost(j,i)},cost(j,i)为区间[j,i]染好的最小花费,1<=j<=i然而会发现cost(j,i)其实是一个子问题,还是不好计算,但这提示我们可以往区间dp上考虑(因为上面问题实际上是一刀切出两个子问题,和区间dp很...

2018-10-01 11:52:12 218

Qt游戏编程——飞机大战

游戏模板,大家可以随意添加自己的元素

2017-07-06

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除