题目链接:Find 4-cycle 给定一个二分图,一边有 \(3\times 10^5\) 个点,另一边只有 \(3\times 10^3\) 个点,让你找一个长度为 \(4\) 的环。 首先,在二分图上的四元环肯定是左边两个点右边两个点,两两之间有边。 容易发现 \(3\times 10^3\) 这个数很小,可以从这个角度想一些比较暴力的做法
#include <iostream> #include <random> #include <ctime> #include <chrono> namespace ShellRandom { static std::uniform_int_distribution<int> diProbability_; static std::default_random_engine dre_; template<clas
1042. 字符统计 请编写程序,找出⼀段给定⽂字中出现最频繁的那个英⽂字⺟。 输⼊格式: 输⼊在⼀⾏中给出⼀个⻓度不超过1000的字符串。字符串由ASCII码表中任意可⻅字符及空格组成,⾄ 少包含1个英⽂字⺟,以回⻋结束(回⻋不算在内)。 输出格式: 在⼀⾏中输出出现频率最⾼的那个英⽂字
题目传送门 思路: 这是一道贪心算法的策略问题。 贪心策略为: 设最大时间为 maxt,时间总和为 sumt,结果为 anst,则: 如果 maxt≥sumt-maxt,则 anst=2×maxt。 如果 maxt≤sumt-maxt,则 anst=sumt。 code: #include <iostream> #include <cstdio> #include <algorithm> using namespace
COCI2011/2012 #1 skakac 状态压缩加速DP 题目链接:在里面找一下 写在前面:原题的空间为 64MB。但本题在校内 OJ 上空间开了 128MB。而本题解介绍的写法在 64MB 的限制下无法通过。若要在 64MB 的空间内实现,需要根号分治。 这题有一个比较显然的暴力,开一个三维数组 \(dp_{k,
poj1581 题目思路较为简单,需要注意的是对于时间总和的判断计算。 可是为什么vjudge它编不来呢。。。 如果我的代码有问题欢迎评论指导。 #include <iostream> #include <string> using namespace std; using std :: string; struct s{ string teamname; int a[4] =
题目描述 某国为了防御敌国的导弹袭击,开发出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭,并观测到导弹依次飞来的高度,请计算这套系统最多能拦截多少导弹。拦
因为背包忘了不少,所以最近在找usaco上的一些难度不大的背包题练习 题目链接:https://www.luogu.com.cn/problem/P2979 题意:有n种奶酪,每种有高度h和价值v,高度>=k称为大奶酪。大的压在上面,下面所有奶酪的高度会变为原来的4/5(只考虑最上面的一个大奶酪的效果,意思是下面的不会重复被压
树上距离为k的点对是否存在. ///洛谷P3806 给定一颗n个结点的无根树,有m次询问,每次询问树上距离为k的点对是否存在. 思想:用桶记录路径,判断是否存在距离为k的点对 /** 使用方法: 调用DFZ.sovle()函数后答案存入ans[]数组 模块说明: 1.求树的重心函数 Root.g
题目链接:https://vjudge.net/problem/HDU-3065 题意:给定n个不相同的模式串,模式串总长<=5e4。给定文本串,长度<=2e6。求各个模式串在文本串中出现次数。 思路: AC自动机简单题。因为要输出次数,所以用到了拓扑排序优化版本的AC自动机。用key[u]表示以u结点结束的模式串编号,res
题目链接:https://vjudge.net/problem/UVA-1025 紫书P268 书上是按照T从大到小 题意:第一行输入n,为n个车站,第2行为T,第三行表示从i到i+1车站所需时间,下面两行表示从1号车站向右走到n号车站有多少班车以及出发时间,最后两行表示从n号到1号的车出发时间,求在时间T到达n号车站在车
题目原文: 题目大意: 一条龙开始有X个头,你把它头砍完就胜利了。 你有n种方式去砍头。每一种方式有两个量d与h,表示你先砍掉龙d个头,龙再长出来h个头。 n种方法使用没有顺序,且每种方法可以使用无数次(笑,既然最厉害的大招无CD,那就拼命放大就好了) 思路: 记下来这n
1 #include<iostream> 2 #include<algorithm> 3 using namespace std; 4 5 int main() 6 { 7 int maxt = 0; 8 int mint = 0; 9 int n;10 int len;11 cin >> len >> n;12 for (int i = 0; i < n; i++)13 {14
剪花布条 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 37980 Accepted Submission(s): 23204http://acm.hdu.edu.cn/showproblem.php?pid=2087 Problem Description 一块花布条,里面有些图案,另有一块直
Description 有\(n\)个人按编号从\(1\)到\(n\)排成一列,每个人有三个属性值\(l_i\)、\(t_i\)和\(w_i\),现在要将这些人分成连续的若干段,记第\(i\)段(编号\(l\)到编号\(r\))中最大的\(t\)值为\(maxt\),那么这段的代价就是\(maxt\sum\limits_{j=r+1}^nw_j\),并且有限制,如果一段中最大
浅谈\(DP\):https://www.cnblogs.com/AKMer/p/10437525.html 题目传送门:https://www.luogu.org/problemnew/show/P1048 像这种给你\(n\)个物品,每个物品有占用体积和价值,求\(m\)体积的背包能装下的最大的价值的问题就是\(01\)背包问题。 我们可以设\(f[i][j]\)表示从前\(i\)个物品中
传送门:洛谷 P4392 Sound 静音问题 题目描述: 求数组区间最大(小) 算法分析:模板即可(然而调了半个小时——取最小值的时候忘记取最大值了QWQ) #include<iostream> #include<cstdio> #include<cstring> #define maxN 1000010 #define ls k<<1 #define rs k<<1 | 1 #define mid ((l+r)>>
HDU1176 免费馅饼 这好像是我写的第一道kuangbin专题里的题,当时能力不够,只简单理解了一下”塔数“的概念 今天看了别人的题解,才系统地理解了一下 以后有一个小要求,代码一定要标准,代码风格要好一点,最近看别人的题解,发现有的人代码写得不是很好理解,可能他们有自己的思路吧 不知道是不