- 博客(1900)
- 收藏
- 关注
转载 【Codeforces Round #589 (Div. 2) D】Complete Tripartite
【链接】 我是链接,点我呀:) 【题意】题意 【题解】其实这道题感觉有点狗。思路大概是这样先让所有的点都在1集合中。然后随便选一个点x,访问它的出度y显然tag[y]=2因为和他相连了嘛然后其他没有和x相连的点显然只能和x在同一个集合中所以其他1集合的点你会发现你想改也没法改,就算他们有可能连在一起也没用,因为你不可能再把其他的1改成2了,因为会和你之前...
2019-09-30 14:44:00
361
转载 【SPOJ DQUERY】区间数字统计
【链接】 我是链接,点我呀:) 【题意】题意 【题解】因为区间的端点移动一个单位的话,只会涉及到一个元素的增多或减少。因此可以用莫队算法来解决。只需要开一个数组(大小1百万),用下标来快速检索元素的个数即可。 【代码】#include <bits/stdc++.h>#define ll long longusing namespace std...
2019-09-27 15:19:00
466
转载 【数据结构1800题 (陈守孔) 第2章】线性表 算法设计题全解
【2.5】【题目大意】去掉链表中绝对值重复过的数字(只保留第一个)【解法】删除的时候用当前枚举到的节点的前一个节点,这样的话能够方便删除。用数组来判重。【代码】int flag[10000+10];void quchong(LNode *L){ LNode *p = L; while (p->next!=NULL){ i...
2019-09-23 11:33:00
399
转载 【数据结构复习】链表的倒置(头插法倒置)
#include <bits/stdc++.h>using namespace std;typedef int ElemType;struct LNode{ ElemType data; LNode *next;};LNode *head,*tail;void init(){ head = (LNode*)mall...
2019-09-22 18:42:00
221
转载 【数据结构复习】输入一个链表,然后输出它
输入数字,-1结束就好要记住在新申请节点的时候,这样写LNode *temp = (Lnode*)malloc(sizeof(LNode));即指向LNode的一个指针。因为malloc返回的就是一个指针。#include <bits/stdc++.h>using namespace std;typedef int ElemType;struct LNod...
2019-09-22 15:06:00
216
转载 汉诺塔问题详解
【问题背景】A柱子上有a个从上到下半径依次递减的圆盘。 A是初始柱子 B是空柱子 C也是空柱子 你要求把A上的a个圆盘都放到C柱子上去 并且C柱子上最后的圆盘的次序也同初始的A柱子一样 在移动盘子的过程中,不能将大盘子放在小盘子上面 一次只能移动一个圆盘【详解】这个问题可以分为三个步骤: 1.将A柱子上上面的a-1个圆盘全都移动到B柱子上....
2019-08-22 17:50:00
104
转载 【数据结构】树的前序、中序、后续遍历的非递归写法
理解的精髓在于用"栈"来取代递归,出栈的操作其实就相当于某层递归的出口【前序遍历】用栈来替代递归的过程(因为递归归根到底也是用栈来实现的)考虑递归的时候 每进入一个递归都会往左子树试探,因此一直往左子树走到头,遇到一个节点就访问它然后压入栈中 访问完左子树之后再回过头继续对每个节点的右子树进行"递归操作" 1 void PreOrder(){ 2 No...
2019-07-06 07:54:00
87
转载 【Codeforces 1185C2】Exam in BerSU (hard version)
【链接】 我是链接,点我呀:) 【题意】要让前i个数字的和小于等于M.问你最少要删掉前i-1个数字中的多少个数字,每个询问都是独立的。 【题解】ti的范围很小。所以N*MAX(TI)暴力枚举就行。如果超过了M的话显然是优先把大的数字删掉。 【代码】#include <iostream>using namespace std;const i...
2019-07-05 17:03:00
92
转载 【Codeforces 1148B】Born This Way
【链接】 我是链接,点我呀:) 【题意】有人要从A地飞向B地,然后从B地飞向C地。给出A,B地的n、m个航班的出发时间。已知从A到B的航班都是ta和tb时长到达B、C只有到达B的时候航班还没起飞才能乘坐(当然也可以等下一班)问你现在你可以去掉最多K个航班,这个人到达C地最晚的时间是啥时候(那个人会在你删掉之后选择最好的方案)(或者直接输出这个人不能到达C) 【题解...
2019-06-30 21:08:00
117
转载 【Codeforces 1107D】Compression
【链接】 我是链接,点我呀:) 【题意】题意 【题解】先把所给的压缩形式的字符串转成二进制然后对获得的01数组做一个前缀和(a[i][j]=以(i,j)为右下角,(1,1)为左上角的矩形内的数字的和)这样就能O(1)复杂度获得一个长度为x的正方形的区间和了。这样。我们直接暴力从1..n枚举n的因子x显然每个因子x要进行(n/x)^2次判断。有个性质∑(n/...
2019-04-15 22:58:00
136
转载 【Codeforces 449A】Jzzhu and Chocolate
【链接】 我是链接,点我呀:) 【题意】题意 【题解】设最后行分成了x行,列分成了y列。那么答案就是floor(n/x)floor(n/y)然后x+y-2=k//即平均分配x行、y列我们可以枚举floor(n/x)的值这个值其实就是n整除x我们现在证明n/x的结果最多只可能有2sqrt(n)个证明:当x小于\(\sqrt{n}\)时,n/x的值有\(\...
2019-04-15 17:54:00
107
转载 【Codeforces 25C】Roads in Berland
【链接】 我是链接,点我呀:) 【题意】题意 【题解】用floyd思想。求出来这条新加的边影响到的点对即可。然后尝试更新点对之间的最短路就好。更新之后把差值从答案里面减掉。 【代码】#include <bits/stdc++.h>#define ll long longusing namespace std;const int N = ...
2019-04-14 16:44:00
158
转载 【Codeforces 140A】New Year Table
【链接】 我是链接,点我呀:) 【题意】题意 【题解】算出来每个盘子要占用多少角度。然后乘n看看是不是小于等于2π就好(精度最好定在1e-7) 【代码】#include <bits/stdc++.h>#define ll long long#define double long doubleusing namespace std;con...
2019-04-14 15:24:00
64
转载 【Codeforces 1083A】The Fair Nut and the Best Path
【链接】 我是链接,点我呀:) 【题意】题意 【题解】我们最后要的是一条最长的路径。这条路径的权值和是所有点的权值和-所有边的权值和且这个值最大。显然如果我们在某一条边上的累计的权值和<0了,那么我们会发现,我们完全没有必要一直累加到这条边,直接从边的另外一个端点开始重新累加更好(这时累加和>=0)所以如果我们求的是最大的权值和-边权和的话,那么求出...
2019-04-13 21:43:00
94
转载 【Codeforces 1051D】Bicolorings
【链接】 我是链接,点我呀:) 【题意】题意 【题解】dp[i][j][k]表示前i列,有j个联通块下,最后一列的状态为k的方案数k如果为1的话,表示最后一列两个块不一样,k如果为0表示一样枚举最后一列的情况转移就好 【代码】#include <bits/stdc++.h>using namespace std;const int maxn=...
2019-04-13 20:58:00
91
转载 【Codeforces 827B】High Load
【链接】 我是链接,点我呀:) 【题意】题意 【题解】树的最长链是一定会经过两个叶子节点的。我们可以构造一棵树,让最后的最长链一定是由经过根节点的两条链组成。然后让这两条链的长度尽可能短就好。那么创建k个叶子节点,然后从左往右依次加上去就好,即让每一条叶子节点到根节点的路径都竟可尽可能短(平均分配剩余的n-k-1个节点)(直接除k输出应该也问题不大。) 【...
2019-04-12 17:51:00
95
转载 【Codeforces 1006D】Two Strings Swaps
【链接】 我是链接,点我呀:) 【题意】题意 【题解】注意只能改变a不能改变b然后只要让a[i],b[i],a[n-i-1],b[n-i-1]这4个字符能凑成两对、全都一样就可以了分类讨论下就好 【代码】#include <bits/stdc++.h>#define ll long longusing namespace std;cons...
2019-04-12 15:23:00
97
转载 【Codeforces 1108E1】Array and Segments (Easy version)
【链接】 我是链接,点我呀:) 【题意】题意 【题解】枚举最大值和最小值在什么地方。显然,只要包含最小值的区间,都让他减少。因为就算那个区间包含最大值,也无所谓,因为不会让答案变小。但是那些不包含最大值的区间却能让差值变大。所以没有问题。 【代码】#include <bits/stdc++.h>#define ll long longus...
2019-04-11 20:33:00
136
转载 【Codeforces 1141E】Superhero Battle
【链接】 我是链接,点我呀:) 【题意】题意 【题解】二分最后轮了几圈。二分之后直接o(N)枚举具体要多少时间即可。注意爆long long的情况。可以用对数函数,算出来有多少个0如果大于17直接缩小点就好。 【代码】#include <bits/stdc++.h>#define ll long longusing namespace s...
2019-04-11 20:05:00
97
转载 【Codeforces 1042D】Petya and Array
【链接】 我是链接,点我呀:) 【题意】题意 【题解】把a[i]处理成前缀和离散化.枚举i从1..n假设a[i]是区间和的a[r]显然我们需要找到a[r]-a[l]<t的l的个数即a[r]<t+a[l]那么我们处理完每个i之后,每次把a[i]+t加入到树状数组中去。每次以进入i的时候,找到比a[r]大的a[l]+t的个数就好(用树状数组求和即可...
2019-04-10 16:25:00
111
转载 【Codeforces 329B】Biridian Forest
【链接】 我是链接,点我呀:) 【题意】题意 【题解】找到出口到每个点的最短距离。设你到出口的最短距离为temp那么如果某个人到终点的距离<=temp,则他们肯定能遇到你因为他们可以在终点等你。。但是如果某个人到终点的距离>temp,那么他们肯定不可能在某个时刻和你遇到因为如果可以在某个时刻与你遇到的话,那他可以接下来跟着你走,那么他到终点的距离...
2019-04-10 15:53:00
141
转载 【Codeforces 1117C】Magic Ship
【链接】 我是链接,点我呀:) 【题意】题意 【题解】我们可以把这个行船的过程分解成两个过程1.船经过时间t被风吹到了某个地方2.船用这t时间尝试到达终点(x2,y2)会发现如果时间t能最终能到达(x2,y2)的话对于任意的时间t1>t,t1也能到达。因为对于t后面的时间,比如t+1,那么风最多把船往偏离终点x,y的方向吹了一下,这一下总是能让多出来的...
2019-04-10 10:26:00
148
转载 【Codeforces 1086B】Minimum Diameter Tree
【链接】 我是链接,点我呀:) 【题意】题意 【题解】统计叶子节点个数m把每条和叶子节点相邻的边权设置成s/cnt就可以了这样答案就是2*s/m(直径最后肯定是从一个叶子节点开始,到另外一个叶子节点结束)证明:设dis(i,j)表示节点i和节点j之间的权值和设a[1],a[2]..a[m]是m个叶子节点则\(max(dis(a[i],a[j])) >...
2019-04-09 19:47:00
85
转载 【Codeforces 444A】DZY Loves Physics
【链接】 我是链接,点我呀:) 【题意】题意 【题解】两个点的子图他们的"密度"是比所有联通生成子图都要大的"只要胆子大,遇到什么问题都不怕!" 【代码】#include <bits/stdc++.h>#define rep1(i,a,b) for (int i = a;i <= b;i++)#define rep2(i,a,b) for...
2019-04-08 23:02:00
157
转载 【Codeforces 1041D】Glider
【链接】 我是链接,点我呀:) 【题意】题意 【题解】二分。枚举每一个上升区的起始位置作为起点(这样做肯定是最优的),然后如果没有掉在地上的话就尽量往右二分(只有上升区之间的间隙会让他往下掉)用前缀和处理出来每个上升区的长度,这样就能根据前缀和处理出来从第i个上升区到第mid个上升区之间有多少个空隙(即会往下掉)了。也可以用一个队列模拟高度为h够掉多少个上升区,...
2019-04-08 23:01:00
94
转载 【Codeforces 492D】Vanya and Computer Game
【链接】 我是链接,点我呀:) 【题意】题意 【题解】第一个人攻击一次需要1/x秒第二个人攻击一次需要1/y秒这两个数字显然都是小数。我们可以二分最后用了多少时间来攻击。显然这个是有单调性的,攻击时间越多的话,攻击的次数也就越多。假设二分出来攻击的时间是mid那么攻击的次数就是mid/(1/x) + mid/(1/y)但是这样显然二分出来的也是一个小数...
2019-04-06 23:46:00
100
转载 【Codeforces 1031C】Cram Time
【链接】 我是链接,点我呀:) 【题意】题意 【题解】如果找到最大的n使得1+2+...+n<=a+b然后第一天输出1,2.3,4....t1这里1+2+..+t1<=a这还远远不够。因为可能1+2+3...+t1<a这就使得第一天还有剩余的时间没有用.那么接下来如果继续让第二题从t1+1..n的话可能第二题的累加和会大于b所以我们可...
2019-04-06 17:33:00
132
转载 【codeforces 1109B】Sasha and One More Name
【链接】 我是链接,点我呀:) 【题意】题意 【题解】如果这个回文串的左半部分,字母全是一样的。那么显然不可能再分出来了,因为不管怎么分怎么排列,最后肯定都只能和原串一样。所以无解其他情况下,都有解。可以保证答案是<=2的比如abxxxxxxxba我们可以把ba放在前面来,ab放在后面去baxxxxxxxab也是符合题意的。即把前i个字符组成...
2019-04-06 15:37:00
120
转载 【Codeforces 231C】To Add or Not to Add
【链接】 我是链接,点我呀:) 【题意】题意 【题解】把数组排个序,显然优先用大的且小于枚举的数字a[i]的数字变成a[i]那么肯定有一个范围j.然后a[j~i-1]都能在k花费以内变成a[i]然后考虑i++这个时候肯定最好的情况还是a[j~i]都能变成a[i](至少j不会变小,因为数字a[i]都变大了,再往左的话,花费肯定超过k了)所以根据上面的推理,...
2019-04-06 15:28:00
152
转载 【Codeforces 1009C】Annoying Present
【链接】 我是链接,点我呀:) 【题意】题意 【题解】其实就是让你最后这n个数字的和最大。加上的x没有关系。因为肯定都是加上n个x所以直接加上就可以了主要在于如何选取j显然我们要找到一个位置j.然后pre[j]+aft[j]的值最大(pre[j]=1+2+3+...+j-1,aft类似(这是在d大于0的时候,小于0的时候找pre[j]+aft[j]最小的就...
2019-04-06 15:23:00
99
转载 【Codeforces 1027D】Mouse Hunt
【链接】 我是链接,点我呀:) 【题意】题意 【题解】先求出来强连通分量。每个联通分量里面,显然在联通块的尽头(没有出度)放一个捕鼠夹就ok了 【代码】#include <bits/stdc++.h>using namespace std;#define lson l,m,rt<<1#define rson m+1,r,rt<...
2019-04-06 15:18:00
101
转载 【Codeforces 600C】Make Palindrome
【链接】 我是链接,点我呀:) 【题意】题意 【题解】计算出来每个字母出现的次数。把字典序大的奇数出现次数的字母换成字典序小的奇数出现次数的字母贪心即可。注意只有一个字母的情况然后贪心地把字典序小的字母放在前面就好 【代码】#include <bits/stdc++.h>#define rep1(i,a,b) for (int i = a;i...
2019-04-03 20:43:00
104
转载 【Codeforces 1009D】Relatively Prime Graph
【链接】 我是链接,点我呀:) 【题意】题意 【题解】1000以内就有非常多组互质的数了(超过1e5)所以,直接暴力就行...很快就找完了(另外一开始头n-1条边找1和2,3...n就好 【代码】#include <bits/stdc++.h>#define ll long longusing namespace std;int n,m;...
2019-04-03 15:50:00
65
转载 【Codeforces 1129A】Toy Train
【链接】 我是链接,点我呀:) 【题意】火车从1,2,3...n->1的方式绕圈走。(即每次从i走到i+1)有一些点有货物需要装载,但是每个点只能装上去一个货物。每个货物都有目标点卸货点(卸货的时候不限量)问你假设火车起点为s(s=1,2,3...n)时,完成所有点的装货卸货任务需要的最小时间。 【题解】会发现其实每个点出去的任务都是互相独立的。某个点在...
2019-04-02 17:33:00
130
转载 【codeforces 3C】Tic-tac-toe
【链接】 我是链接,点我呀:) 【题意】题意 【题解】写一个函数判断当前局面是否有人赢。然后枚举上一个人的棋子下在哪个地方。然后把他撤回看看撤回前是不是没人赢然后没撤回之前是不是有人赢了。如果是的话那么就是满足要求的啦吸吸吸 【代码】#include <bits/stdc++.h>#define ll long longusing na...
2019-04-02 15:41:00
139
转载 【Codeforces 1102E】Monotonic Renumeration
【链接】 我是链接,点我呀:) 【题意】题意 【题解】会发现如果a[i]=a[j]那么b[i]~b[j]都是相同的,等于b[i]而b[i]等于b[i-1]+1或者b[i]有两种可能所以对于两个相同的a[i]之间的区间。只要在区间开始的时候乘个2就行。如果不在任何一起相等的区间里面的话也乘个2就行,因为每个数字都有两种可能。这道题只要记录下=a[i]的最大...
2019-04-01 23:00:00
108
转载 【Codeforces 992B】Nastya Studies Informatics
【链接】 我是链接,点我呀:) 【题意】题意 【题解】因为gcd(a,b)=x所以设a = nx b = mx又有ab/gcd(a,b)=lcm(a,b)=y则nmx = y即n(m*x)=y所以枚举y的因子n算出对应的y/n是否为x的倍数如果是的话,则算出n,m的具体值然后对于a<b的,答案加两次如果a==b,答案加一次,a>b不加(避...
2019-04-01 22:55:00
102
转载 【Codeforces 644A】Parliament of Berland
【链接】 我是链接,点我呀:) 【题意】题意 【题解】https://blog.csdn.net/V5ZSQ/article/details/70873661看这个人的吧。 【代码】#include <bits/stdc++.h>#define ll long longusing namespace std;const int N = 100...
2019-03-31 23:17:00
80
转载 【Codeforces 501C】Misha and Forest
【链接】 我是链接,点我呀:) 【题意】给你一棵树但是每个节点只告诉你出度个数以及所有和它相连的点的异或和.让你还原这棵树 【题解】叶子节点的话,他所有节点的异或和就是它那唯一的一个爸爸因此,弄个拓扑排序,从最下层一直往上面进行拓扑排序,每次找到它的爸爸之后,就将这个儿子删掉.让爸爸的出边递减。同时更新爸爸的异或和,直到爸爸没有儿子为止(也变成叶子节点了)。...
2019-03-31 20:41:00
116
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人