自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 收藏
  • 关注

原创 东北农业大学第九届程序设计竞赛 题解

啦啦啦,我现在已经能ak校赛啦,啦啦,一年没白学(大雾)A:DLK的魔法分析:这题直接逆推,每次将当前数字尽量变成一个平方数,然后直接平方,直到1思路:尽量少使用+1操作,就是最优方案,那么就是尽量多平方操作,那么逆推的时候,每次尽量造出平方数代码:ll n,a,b,c;int main(){ cin>>n; if(n<=2) cout<<n<<"\n"; else { do {

2020-11-25 22:28:08 528

原创 luogu P2486 [SDOI2011]染色 解题报告

P2486 [SDOI2011]染色题目分析:这题看似很诡异,求的不是不同颜色的数量,而是颜色段的数量,可是仔细一想,这不就是个区间合并吗,记录区间的左右端点颜色,当合并的时候,假如左儿子的右端点和右儿子的左儿子相同,总数-1,然后其他部分标准的树链剖分,直接粘了之前的代码,就把线段树的部分重新写了下反思:查询操作的时候,想复杂了,其实一个flag标记一下当前是否旋转了即可,假如旋转了,就代表线段树查的是反的,合并的时候记得先交换下左右端点颜色即可,一开始写的老复杂了,又是记录端点,又是判断上一条链

2020-11-09 21:15:12 138

原创 树链剖分及进阶 边权化点权 luogu4315 luogu1505

树链剖分模板 点权 2遍dfs+线段树#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;i--)typedef long long ll;typedef double db;typedef pair<int,int> P;typedef vector<int&g

2020-11-04 19:15:45 330 1

原创 线段树题集--SPOJ GSS1~GSS8解题报告

GSS1 - Can you answer these queries I第一题,主要处理不同区间里,最大值,从左边开始的最大值,从右边开始的最大值,总和 这4个点的合并即可,luogu之前做过和这题思路及其类似的就是我,这题也是线段树的题,不过侧重于维护区间连续1的长度,并且需要支持区间修改和区间查询,不过大概思路是可以借鉴的那么回到本题,既然需要是查询某一段中最大的前缀和,那么就得想如何处理区间合并,假设现在左子区间和右子区间已经确定了最大前缀和,那这一段的最大前缀和,要么是左子区间的最大前缀和,.

2020-10-28 18:15:04 226

原创 Educational Codeforces Round 95 补题报告

A. Buying Torches分析:签到题,但是题面改来改去的,也是因为这题导致unrate,思路就是先把所需要的煤都转化成棍子,再看达成这么多棍子需要换多少次代码:int main(){ ll T,n,m,k; cin>>T; while(T--) { cin>>n>>m>>k; ll ans=k*m; ans+=k-1; ll qwe=ans/(n-1); if(ans%(n-1)) { qwe++;

2020-09-16 19:36:15 203

原创 Codeforces Round #654 (Div. 2) 补题报告

A. Magical Sticks给你n个木棍,可以任意拼接,问你最多能有多少个相同长度的,那肯定是1和n拼n+1,2和n-1拼n+1,以此类推int T,n;int main(){ cin>>T; while(T--) { cin>>n; //a+b=c //1+n=n+1 //2+n-1=n+1 cout<<(n+1)/2<<"\n"; } return 0;}B. Magical Calendar找不相等的排

2020-08-15 11:52:49 133

原创 Codeforces Round #655 (Div. 2) 补题报告

传送门A. Omkar and Completion大意:保证任意2个ai和不等于任意一个ai;思路:全都是1即可int T,n;int main(){ cin>>T; while(T--) { cin>>n; rep(i,0,n) cout<<"1 "; cout<<"\n"; } return 0;}B. Omkar and Last Class of Math大意:找到一组a,b,使a+b==n,并且使得lc

2020-08-13 23:53:29 121

原创 Codeforces Round #663 (Div. 2) B. Fix You

给你一个n,m的矩阵,n,m是终点,是C,其他点是D就代表往下走,R就代表往右走,需要你任意修改几个点,保证不出这个矩阵,问你最少修改次数既然只有往下和往右走,那其实只有可能在右边界和下边界出去,所以枚举右边界的点,假如是R就改成D,枚举下边界的点,假如是D就改成Rstring s1[105];int n,m,T;int main(){ cin>>T; while(T--) { int ans=0; cin>>n>>m; rep(i,0,n)

2020-08-10 23:31:11 131

原创 Codeforces Round #663 (Div. 2) C - Cyclic Permutations

大概意思就是只要数列里,有任意一组i<j<z,满足a[i]>a[j]并且a[z]>a[j]即可,所以假如不满足的话,就是单峰数列,最大值在某个位置,左边单调递增,右边单调递减,总数量就是n!-2^(n-1),用快速幂加速一下,没了ll mod_pow(ll x,ll n, ll mod){ ll res=1; while(n) { if(n&1) res=res*x%mod; x=x*x%mod; n>>=1; } return res;

2020-08-10 23:16:09 106

原创 Codeforces Round #663 (Div. 2) D-505

题目要求每一个平方子矩阵里1都为奇数那么我们先分析,最小的子矩阵肯定是 2×22\times 22×2,然后就是 4×44\times 44×4 的矩阵了,然而假如 2×22\times 22×2 的矩阵里,1都是奇数个,那 4×44\times 44×4 矩阵里,怎么都是偶数,所以min(n,m)肯定不能大于等于4,否则直接输出-1,那么我们现在可以确定n和m至少有一个是小于等于3的了。再继续分析,我们设n是小的,m是大的(总之这个矩阵你可以随便转90°,要是n比m大你就转一下呗),假如n是1,就一行

2020-08-10 20:57:31 365

原创 Codeforces Round #642 (Div. 3)补题报告

(因本人懒得翻墙,以下链接皆为cf的镜像网站链接)AE. K-periodic Garland(点击传送)dp题,字符串长度最大为1e6,从1开始,设dp[i]为在i位置时,满足要求的最小修改次数,那么dp[i]要么等于1~i-1,也就是之前所有的数字里,为1的数字总和,你把前面所有的1全变成0,不就满足条件了吗?要么等于dp[i-k]加上i-k+1 ~ i-1这个范围里所有的1的数量,dp[i-k]是i-k位置时满足的,所以把他后面到 i 位置的1全变成0,也是合理的,最后看i位置本身是不是1,假如

2020-08-07 07:25:47 206

原创 20200525日常摸鱼

20200525日常摸鱼共计8题,有点少今日训练时长:未定洛谷P1638 逛画展先从1开始读入数据,直到画家数量达到m的时候,便可以开始真正的处理,首先设置左端点l=1,右端点r=第一次满画家的位置,同时b数组用来存储这一段画家各出现了多少次,桶排的思想,然后判断左端点的点出现次数是否>1,假如大于1的话就可以删去,直到左端点无法再删除,这时比较下l,r和q,w,取最短的区间保存,然后每次r++,都重复进行上面的操作,判断左端点能否删,并取最短区间,这题就做完了#include <bi

2020-05-26 00:22:42 150

原创 Codeforces Round #492 (Div. 1) :995C - Leaving the Bar

题目传送门题意:有一堆向量,你可以将一些取反,使后所有向量之和的长度小于1.5×10^6,保证有解。思路:最后的总和向量,x ^ 2 + y ^ 2,肯定是小于2.25*10^ 12,而每条边的向量模最大是1 ^6,所以极限情况是2条边都是1 ^6,并且成90°,这时模长最大是√2 * 10 ^6,所以任意两条边的向量和长度小于1.414 * 10 ^6<1.5 * 10 ^6。使用...

2020-04-08 04:25:54 195

原创 白皮书2.6学习笔记

2.6学习2.6.1gcd扩展欧几里得算法模板如下,具体运算过程书上解释很清楚int extgcd(int a,int b,int &x,int &y){ int d=a; if(b!=0) { d=extgcd(b,a%b,y,x); y-=(a/b)*x; } else { x=1,y=0; } return d;}例题实战1.洛...

2020-03-09 21:59:38 812 2

原创 寒假训练(补)0129_并查集

Epoj1456emmm,一开始用的暴力,过了。。。(数据好水,我甚至cmp忘记写在价值相同时,需要返回更大的时间了)#include <iostream>#include <cmath>#include <algorithm>using namespace std;typedef pair<int,int> P;P a[10010]...

2020-03-06 21:26:49 206 1

原创 hdu 1024 Max Sum Plus Plus

hdu 1024 Max Sum Plus Plus我是传送门Problem DescriptionNow I think you have got an AC in Ignatius.L’s “Max Sum” problem. To be a brave ACMer, we always challenge ourselves to more difficult problems. No...

2020-02-04 21:25:37 173

原创 hdu1978 How many ways 暴力和记忆化

hdu1978 How many ways题目传送门Problem Description这是一个简单的生存游戏,你控制一个机器人从一个棋盘的起始点(1,1)走到棋盘的终点(n,m)。游戏的规则描述如下:1.机器人一开始在棋盘的起始点并有起始点所标有的能量。2.机器人只能向右或者向下走,并且每走一步消耗一单位能量。3.机器人不能在原地停留。4.当机器人选择了一条可行路径后,当他走到这...

2020-02-03 20:06:48 1559 1

原创 东北农业大学2020寒假培训day4 D题思路与思考

东北农业大学2020寒假培训day4 D题思路与思考先放题目和链接传送门有n种物品,第i个物品可以选择至少1个至多n个,但要求第i个物品的数量不大于第i+1个物品的数量,求方案种类。先看题目,然后先思考,n=1时,只有一种情况,1,n=2时,可以是11,12,22,一共3种情况,n=3时,就是111,112,113,122,123,133,222,223,233,333,一共10种情况,...

2020-01-12 01:05:00 1916 8

原创 东北农业大学2020寒假acm培训day3数据结构基础

东北农业大学2020寒假acm培训day3数据结构基础第一次写,也别指望我写好多,并且能力有限,很多题想复杂了,求大佬轻骂题目传送门 点我点我PROBLEM A 消消乐为了简化问题,现在只在一行上进行消消乐,而且只要相邻元素相同就可以消掉。现在给出一个行消消乐的序列,问可以消除多少次?思路:每2个相邻一样的便需要消除,可以从第一个开始一个一个判断邻位是否相等,但假如拿数组存的话,每次...

2020-01-11 00:33:58 4827 11

空空如也

空空如也

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

TA关注的人

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