自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Eternally831143的博客

一只咸鱼的博客

  • 博客(35)
  • 收藏
  • 关注

原创 CodeForces - 476D Dreamoon and Sets(找规律或者数学)

Dreamoon and Sets题解:首先,一个集合只有四个数,要求两两gcdgcdgcd为kkk,那么除以kkk即代表要求两两互质,再想到连续的三个数一定互质,第四个再+2+2+2即可。代码#include<bits/stdc++.h>using namespace std;int a[10010][4];int main(){#ifndef ONLINE_J...

2018-10-30 00:14:25 307

原创 Codeforces Round #519 by Botan Investments C(模拟)

C. Smallest Word题解:自己随便列几组数据模拟一下就会发现,无论如何最后总能翻成类似aaaabbbbbaaaabbbbbaaaabbbbb这样,即aaa全在前面,bbb在后面。数据量又小因此可以暴力模拟。还有解法就是只要遇到当前字符与下一个不同,就翻转一次。代码模拟#include<bits/stdc++.h>int bit[1010],flip[1010];...

2018-10-30 00:00:35 154

原创 Educational Codeforces Round 53 (Rated for Div. 2) C(二分)

C. Vasya and Robot题解:考虑去根据左端点二分答案即可。代码#include<bits/stdc++.h>using namespace std;const int N = 200100;int U[N],R[N],L[N],D[N];int n,x,y,sx,sy;bool ok(int s,int t){ int ret = t - s + 1,...

2018-10-27 00:43:30 125

原创 Educational Codeforces Round 53 (Rated for Div. 2)D(模拟)

D. Berland Fair题解:考虑到每次都会有重复过程。因此我们首先可以算出一轮下来的花费和收获,然后算出这一次会循环多少轮,再给TTT对一轮的花费取模就可以算出剩下的钱。以此反复,继续算下一次的花费和收获。代码#include<bits/stdc++.h>typedef long long LL;using namespace std;const int N = 2...

2018-10-27 00:37:28 143

原创 洛谷P1095 守望者的逃离(dp)

P1095 守望者的逃离题解:每次有三种决策:闪现,跑步,停下休息。由于闪现和跑步不太好同时处理,因为有魔法消耗所以一开始贪心的尽可能多使用闪现,魔法不够就停下休息恢复。最后再考虑何时跑步。代码#include<bits/stdc++.h>using namespace std;int dp[300010];int main(){#ifndef ONLINE_JUDG...

2018-10-24 19:54:25 236

原创 洛谷P1541 乌龟棋(dp)

P1541 乌龟棋题解:dp[i][j][k][l]dp[i][j][k][l]dp[i][j][k][l]表示爬行牌111出牌数量为iii,爬行牌222出牌数量为jjj,爬行牌333出牌数量为kkk,爬行牌444出牌数量为lll时所能获得的最大分数。仔细一看是和多重背包一样的。代码#include<bits/stdc++.h>using namespace std;int...

2018-10-24 19:33:31 262

原创 POJ 1185 炮兵布阵(状压dp)

炮兵布阵题解:先考虑一维的情况,dp[i]dp[i]dp[i]前iii行所最多能摆放的炮兵部队的数量,显然无法满足无后效性,无法递推。再考虑加一维,dp[i][j]dp[i][j]dp[i][j]表示第iii行布局为jjj的情况下所最多能摆放的炮兵部队的数量,此时依然无法递推,因为每一个炮兵影响的范围是前后两格和左右两格,所以在第i−1i-1i−1行布局为kkk的时候无法分辨与布局jjj是否相容...

2018-10-24 19:09:52 222

原创 洛谷P4147 玉蟾宫(悬线法dp)

P4147 玉蟾宫题解:悬线dpdpdp,先预处理出悬线的左右边界。hhh数组记录能到的最高高度。然后max(h(i,j)∗(Right(i,j)−Left(i,j)+1)max(h(i,j)∗(Right(i,j)−Left(i,j)+1)max(h(i,j)∗(Right(i,j)−Left(i,j)+1)即可。代码#include<bits/stdc++.h>const ...

2018-10-23 22:25:48 311 1

原创 2018-2019 ICPC, NEERC, Southern Subregional Contest (Online Mirror, ACM-ICPC Rules) H(暴力map)

BerOS File Suggestion题解:这道题说实话有点想多了,还考虑用trietrietrie树去做(虽然有神犇这样做的),可惜蒻根本不会trietrietrie树。实际上用mapmapmap统计子串出现次数并记录子串的原串就好了。代码#include<bits/stdc++.h>using namespace std;map<string,int> ...

2018-10-23 00:28:19 554

原创 HDU 6033 Add More Zero(思维取对数)

Add More Zero题解:水题,取logloglog即可。代码import java.util.Scanner;public class Main { public static void main(String[]args){ Scanner in = new Scanner(System.in); int t = 1; ...

2018-10-22 00:29:37 183

原创 洛谷P1083 借教室(二分+差分)

借教室题解:看到多次区间操作,立刻想到差分,然后二分查询订单即可。时间复杂度O(nlog(n))O(nlog(n))O(nlog(n))。代码#include<bits/stdc++.h>using namespace std;const int N = 1e6+10;int n,m,num[N],ret[N];struct node{ int v,l,r;}a[...

2018-10-22 00:23:13 223

原创 The 2018 ACM-ICPC Asia Qingdao Regional Contest, Online H Traveling on the Axis(dp)

Traveling on the Axis题解:考虑当前状态和下一个状态的关系,只有四种情况,1→0,1→1,0→1,0→01\to0, 1\to1, 0\to1,0\to01→0,1→1,0→1,0→0。而且当s[i]=0s[i] = 0s[i]=0时,下一个位置s[i+1]s[i+1]s[i+1]的正状态对当前第iii个位置正状态的贡献是2⋅(n−i+1)2\cdot (n -i + 1)2...

2018-10-21 23:26:02 160

原创 HDU 5988 Coding Contest(最小费用最大流)

Coding Contest题意:nnn个区域,每个区域有一些食物和人,mmm条有向路径,每条路径有人数上限,第一个通过的人不会触电,之后通过的人有p%p\%p%的概率触电,求所有人都获取到食物触电的最小概率。题解:转换为求不会触电的最大概率。但是呢,我们在费用流里都是通过相加得到的结果,所以有没有将乘法变为加法的方法呢?没错,就是logloglog,取个log就变成了加法。对于uuu到vvv...

2018-10-21 21:11:19 190

原创 HDU 5821 Ball(贪心)

Ball题解:首先贪心的去把aaa数组对应到bbb数组的位置,然后每次操作就相当于对小球升序排序,让其更接近应该在等等位置,最后看一下最后的位置是不是到位了即可。代码#include<bits/stdc++.h>using namespace std;pair<int,int> a[1011];int main(){#ifndef ONLINE_JUDGE...

2018-10-21 20:05:57 259

原创 HDU 5521 Meeting(虚点建图)

Meeting题意:从111到nnn有mmm处具有sss个点的点集合,每个集合任意两点的距离为ttt,问两人同时分别从111和nnn出发,要相遇的最短的距离是多少并输出相遇点,如果有多个答案按升序输出。题解:真是又涨知识了…对于每个集合增加一个虚点,集合里的每个点向这个虚点建一条距离为t/2t/2t/2的边,这样就保持了原集合任意两点的距离不变。然后以111为源点跑一次最短路,以nnn为源点跑...

2018-10-18 22:37:28 225

原创 牛客多校第十场 D Rikka with Prefix Sum(组合数学)

Rikka with Prefix Sum题解: 这道题之所以不是线段树,是因为有操作222的存在,将数组AAA转变为了它的前缀和,而且每次操作都和前缀和有关。假设我们现在有一个数组a=[0,0,0,0,0]a=[0,0,0,0,0]a=[0,0,0,0,0],我们先考虑单点修改,起始我们给a[0]+1a[0]+1a[0]+1,我们做几次前缀和看一下。这里我们用ttt代表第几次做前缀和。t=1...

2018-10-17 16:05:54 287

原创 BZOJ 1057 [ZJOI2007]棋盘制作 最大子矩阵(悬线法)

棋盘制作题解:伪dp+dp+dp+悬线法悬线法推荐一篇国家队的论文《极大化思想解决最大子矩阵问题》讲的真是明明白白…#include<bits/stdc++.h>using namespace std;const int N = 2001;int n,m,square,rectangle;int a[N][N], Left[N][N], Right[N][N], l[...

2018-10-15 22:08:52 191

原创 POJ1753 Flip Game(暴力枚举)

Flip Game题解:因为数据只有4⋅44\cdot 44⋅4,dfsdfsdfs暴力枚举每种情况即可。翻硬币次数最多不会超过161616次,因为翻两次相当于没有翻。代码#include<iostream>using namespace std;bool a[6][6];bool check(){ char pre = a[0][0]; for(int i = ...

2018-10-14 23:39:09 289

原创 HDU2037 今年暑假不AC(贪心)

今年暑假不AC题解:准着贪心原则,越早结束的尽量先看。因此对结束时间排序,如果下一个节目的开始时间要大于当前节目的结束时间,那说明可以看一个节目。代码#include<bits/stdc++.h>using namespace std;struct tv{ int l,r; bool operator < (const tv & u)const{ r...

2018-10-14 23:27:20 194

原创 HDU 4310 HERO(贪心)

HERO题解:优先打hpdps\frac{hp}{dps}dpshp​小的,排个序即可。代码#include<bits/stdc++.h>using namespace std;struct node{ int dps,hp; bool operator < (const node & u)const{ if(1.0 * hp / dps == 1...

2018-10-14 23:17:25 138

原创 HDU5128The E-pang Palace(计算几何暴力枚举)

The E-pang Palace题解:预处理出所有矩形,然后枚举满足情况的两两矩形即可。因为是矩形,所以我们只需要存对角的两个点即可。就是要注意嵌套也是满足的。代码#include<bits/stdc++.h>using namespace std;struct Point{ int x,y; Point() {} Point(int _x,int _y) { x...

2018-10-14 23:01:59 166

原创 UVA - 11572 Unique Snowflakes(滑动窗口)

Unique Snowflakes题解:用setsetset维护一个当前最多的不同数集合,然后两个指针控制连续子串长度。代码#include<bits/stdc++.h>using namespace std;int a[1010000];int main(){#ifndef ONLINE_JUDGE // freopen("input.in","r",stdi...

2018-10-14 22:42:30 176

原创 HDU 5037 Frog(贪心)

Frog题解:模拟肯定是不能模拟的了,就考虑怎样放石头才能让青蛙跳的次数尽量多了。能想到的只有在L+1L+1L+1的长度内最多跳两次,所以我们就去尽可能构造L+1L+1L+1。如果当前石头距离上一次石头的距离大于LLL,那么就需要单独再跳一次,否则就可以归到上一次跳跃。代码#include<bits/stdc++.h>using namespace std;int n,...

2018-10-14 21:45:39 148

原创 HDU5661 Claris and XOR(异或贪心)

Claris and XOR题解:考虑异或的性质,肯定是尽量让x和y满足以下两种情况:xxx第iii位为111,yyy第iii位为000xxx第iii位为000,yyy第iii位为111但是要考虑第三种种情况,以上两种情况都满足不了时,第iii位同时为111,此时我们应该也算上,不然对于判断后面低位的时候会有影响。因此我们直接考虑枚举二进制位即可。至于判断的时候,我们去看在x+(1&...

2018-10-14 13:47:52 239

原创 牛客国庆集训派对Day5 L数论之神(CCPC_CAMP)除法分块

数论之神题解:除法分块。如果是k≤nk\leq \sqrt nk≤n​的话第二个数值就是⌊ak⌋\lfloor \frac{a}{k} \rfloor⌊ka​⌋,否则就是n+1\sqrt n+1n​+1对应的⌊ni⌋\lfloor \frac{n}{i} \rfloor⌊in​⌋减掉kkk超过n\sqrt nn​的部分然后在加上111。代码#include<bits/stdc++.h...

2018-10-08 20:47:03 212

原创 牛客国庆集训派对Day5 B 电音之王(CCPC_CAMP) 黑科技-蒙哥马利快速乘

电音之王dls专卡Θ(1)\Theta(1)Θ(1)快速乘,orzzzzz,我只想说,dls牛逼!题解:蒙哥马利代码#include <bits/stdc++.h>using namespace std;#define rep(i,a,n) for (int i=a;i<n;i++)#define per(i,a,n) for (int i=n-1;i>=a;...

2018-10-08 18:31:54 397

原创 牛客国庆集训派对Day6 B(CCPC_CAMP)思维

Board题意:有一个n⋅mn\cdot mn⋅m的矩阵,每次可以给一行或一列加111,问被隐藏的格子的值。题解:这个题有一个很巧妙的思维,假设现在我们有aij,aik,axj,axka_{ij},a_{ik},a_{xj},a_{xk}aij​,aik​,axj​,axk​四个点,明显aij,ai,ka_{ij},a_{i,k}aij​,ai,k​是一行,axj,axka_{xj},a_{x...

2018-10-08 09:24:34 170

原创 牛客国庆集训派对Day6 A Birthday(秦皇岛CCPC_CAMP)最小费用最大流

Birthday题解:本题…关键就在于建图。首先,从源点向每一根蜡烛建一条费用为000流量为111的边。其次,考虑将每个partpartpart拆成nnn个点,代表nnn个时间差,选择第iii个点的时候,就代表第插第iii根蜡烛与第i−1i-1i−1根蜡烛的时间差,因此就是1,3,5,7,9...1,3,5,7,9...1,3,5,7,9...即i2−(i−1)2i^2-(i-1)^2i2−(...

2018-10-08 01:20:57 210

原创 牛客国庆集训派对Day5 G 贵族用户(枚举)

贵族用户题意:一件衣服可以由kkk种材料合成,第iii种材料数量为cic_ici​价格为did_idi​个钻石。有mmm档vipvipvip等级,当vipvipvip等级为iii时,优惠为pip_ipi​,所以材料价格变为⌈di(1−p)⌉\lceil d_i(1-p)\rceil⌈di​(1−p)⌉。问合成衣服最少需要冲多少钻石。题解:枚举每一档vipvipvip即可。代码#includ...

2018-10-08 00:12:48 163

原创 牛客国庆集训派对Day7 K(2016ICPC青岛区域赛K) KDTree

Finding Hotels题意:对于mmm个客人询问对于每个人离他们最近且价格在自己可承受范围内的酒店是哪一个,一共有nnn个酒店。题解:裸KDTree,直接加一维价格,然后查找的时候记得比较酒店价格和客人的可接受价格。#include<bits/stdc++.h>typedef long long LL;using namespace std;const LL MAXN...

2018-10-07 23:54:36 283

原创 牛客国庆集训派对Day4 I 连通块计数(排列组合)

连通块计数题意:有nnn条链和一个点作为中心组成的树,求非空连通子树数目。题解:包含中心的连通子树数目:∏i=1n(ai+1)\prod_{i=1}^n(a_i+1)∏i=1n​(ai​+1)(这里画个图就知道了)不包含中心的连通子树数目:∑i=1nC(ai+1,2)\sum_{i=1}^nC(a_i+1,2)∑i=1n​C(ai​+1,2)代码#include<bits/std...

2018-10-04 22:06:17 225

原创 牛客国庆集训派对Day3 I Metropolis(多源多汇最短路)

Metropolis题意:ppp个点mmm条无向边,对于这ppp个点,问距离其它点最近的距离。题解:首先,如果我们考虑最暴力的方法,ppp次单源最短路。但是ppp的大小有2e52e52e5,明显是不可能了。那就考虑多源最短路吧。将这ppp个点都加入队列作为源点。对于每一个节点,我们记录它是由哪一个源点扩展出来的。当从一个源点iii,扩展到另一个源点jjj扩展出来的一个节点uuu时,那么dis(...

2018-10-04 19:13:10 320

原创 牛客国庆集训派对Day3 H Travel(连通块计数)

Travel题意:求对于n−1n-1n−1条边连通的nnn个城市进行mmm次旅游,每一座城市恰好旅行一次有多少种方案。(每次至少旅游一座城市)题解:求树分割成mmm块,然后全排列即可。即从n−1n-1n−1条边选择m−1m-1m−1条边进行分割,再对mmm个连通块全排列。C(n−1,m−1)⋅m!C(n-1,m-1)\cdot m!C(n−1,m−1)⋅m!代码#include<b...

2018-10-04 18:02:35 221

原创 洛谷P1419 寻找段落(二分+单调队列)

P1419 寻找段落题解:题中需要我们去求一个最大的长度在[S,T][S,T][S,T]之间的连续子序列平均值。即x=∑i=LRaiR−L+1(S≤R−L+1≤T)x = \frac{\sum_{i=L}^R a_i}{R-L+1} (S\leq R-L+1\leq T) x=R−L+1∑i=LR​ai​​(S≤R−L+1≤T)∑i=LRai=x⋅(R−L+1)\sum_{i=L}^R a_...

2018-10-01 12:26:52 363

原创 洛谷P2678 跳石头(二分枚举)

P2678 跳石头题解:二分枚举答最长的最短跳跃距离。本题关键在于checkcheckcheck函数怎么写。我们可以这样想,如果当前石头与上一块石头的距离小于枚举的答案,那么说明当前石头需要被移走,依次反复,如果到达终点的时候所移走的石头不超过MMM块,那么说明当前枚举的答案可行,但是需要继续增加距离,因为可能还不是最长的,否则就减小距离。代码#include<bits/stdc++....

2018-10-01 09:24:41 694

空空如也

空空如也

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

TA关注的人

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