InTheBloodHorse

InTheBloodHorse

Hey~

数据结构与算法(8) 并查集
什么是并查集?并查集我应该在今年上半年的时候,就写到过,那时候对并查集没有概念,只知道,并查集的问题可以用DFS解决,所以在接下来的日子里,几乎把并查集晾在一边了,只知道有个算法叫,并查集,就这样。(其实就是我看了博客,资料,模版,我看不懂,所以就选择逃避了)今天无意间看到一篇写并查集的,虽然没有牵涉到ACM,但是豁然开朗,我似乎懂这个叫并查集的算法了。 下面是对并查集的官方解释并查集是一种树型的数据结构,用于处理一些不相交集合(Disjoint Sets)的合并及查询问题。常常在使用中以森林来表示。并查集其中一个典型应用就是在无向图中判断任意两个顶点是否连通。或者说 集合中的’并...
SpringBoot项目配置
log日志在resources目录下创建 logback-spring.xml文件,内容为1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859<?xml version="1.0" encoding="UTF-8" ?><configuration> <appender name="consoleLog" class="ch.qos.logback.core.ConsoleAppende...
每日一题(41) codeforces 1054C
题目地址 题意输入n个学生,吗,学生挨个坐在一起,已知每个学生左边比他苹果多的人数,以及右边比他苹果多的人数,输出每个学生的苹果数,假如不能得出,则输出NO 思路大致可以发现,l+r的个数相同的话,他们的苹果个数也相同。然后先构造出数组,然后检查一下就好了。AC代码:12345678910111213141516171819202122232425262728293031323334353637#include<bits/stdc++.h>using namespace std;int l[1005],r[1005];int num[1005];int main(){...
每日一题(40) codeforces1054B
题目地址 题意这个Mex一年前才杭电oj写过,我记得我是没写起来,这个Mex是个什么概念?就是在一个序列中找到一个从最小的没有的数字,比如序列[0,1,2,4] Mex下就是3,因为0没有。这道题是意思是给n个数字,接下来是n个数字,问能否在当前的序列找到任意子集,可以得到输入的Mex数字,假如都能找到,就输出-1,找不到就输出一个找不到的index坐标。比如 Examples140 1 2 1第一个数字是0,那么我们取空集,Mex一下得到0,当前的序列就是[0]然后要找数字1,直接去当前序列[0]然后我们就可以得到1,组成的序列为[0,1]。同理也可以得到 [0,1,2]第四个也可以得...
每日一题(39) codeforces1054A
题目地址从10.20号写PHP项目,写到现在,也算是终于结束了,希望这辈子再也没有PHP,今天开始恢复训练。 题意水题,但是题目很难读,读题需要点时间。大致就是输入 x,y,z,t1,t2,t3 从x楼到y楼,有两种方案1:爬楼梯,每层需要的时间为t12:电梯,电梯一开始在z层,电梯一开始的门是关着的,电梯开门关门需要的时间为t3,电梯每层花费t2。问改怎么选,选电梯(电梯优先)就输出YES,楼梯就NO。 思路没啥思路AC代码12345678910111213#include<bits/stdc++.h>using namespace std;int main(){...
每日一题(38) codeforces1065A
题目地址 题意s,a,b,c代表有s卢布,每买a个,就送b个,单价为c。输出最多可以买到多少个商品。 题意一个公式就好了。AC代码123456789101112#include<bits/stdc++.h>using namespace std;int main(){ int t; long long a,b,c,r; cin >> t; for(int i=0;i<t;i++){ cin >> r >> a >> b >> c; cout << r/c + (r...
每日一题(37) codeforces1064C
题目地址 题意给你一个字符串,元素不变,构造成新的字符串,使得字符串的子串中是回文串的数量最多。 思路排序一下就行了。1234567891011#include<bits/stdc++.h>using namespace std;char s[100005];int main(){ int n; cin >> n; scanf("%s",&s); sort(s,s+n); printf("%s",s);}
每日一题(36) codeforces1064B
题目地址 题意输出 2的 (数字n的二进制里面的1的个数的) 次方 思路发现了一个超级厉害的函数。_builtin_popcount()计算二进制中多少个1。AC代码:123456789101112#include<bits/stdc++.h>using namespace std;int main(){ int n; int t; cin >> n ; for(int i=0;i<n;i++){ cin >> t; cout << (1<< __builtin_popcount(t)) <&...
每日一题(35) codeforce1064A
题目地址 题意给出三条边,问你能否组成三角形,如果可以就输出0,不能就输出边还要加上多少才可以组成三条边 思路这是水题AC代码:12345678910#include<bits/stdc++.h>using namespace std;int a[5];int main(){ for(int i=0;i<3;i++) cin >> a[i]; sort(a,a+3); if(a[0]+a[1] > a[2] )cout << 0 << endl; else cout << a[2]-(a[0]+a[1])+...
每日一题(34) codeforces1059C
题目地址 题意给一个数字n,每次从这n中删除一个数字,删除前计算数字里面的gcd,问如何删除,可以使得gcd最大。 思路因为相邻的两个数字是互质的,所以我们要删除奇数,因为当所有的奇数删完之后,每次计算的gcd肯定是大于等于2的。奇数删完后,把奇数位置的数字当奇数,再筛选,输出,直到没有。AC代码123456789101112131415161718#include<bits/stdc++.h>using namespace std;int main(){ int n; cin >> n; int ans=1; while(n>3){ ...
avatar
InTheBloodHorse
你得抛开过去的事
FRIENDS
阿汤哥