![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
题解
Code--Dream
acm
展开
-
题解 Problem-1345
### 题目意思数三角形的数量### 思路这道题一眼看去有一个非常显然的想法,那就是先用组合数算出任选三点出来的方案数,最后再减去三点共线的情况即可。那么关键就在于如何求三点共线的数目。我们要用到一个公式:设两个整点分别为$$(x1,y1)$$,$$(x2,y2)$$,那么两点之间连线上的整点数目为 $$gcd(|x1-x2|,|y1-y2|)$$接下来我们对直线在x轴 ,y 轴的射影长度进行枚举...原创 2018-05-25 14:32:25 · 272 阅读 · 0 评论 -
字典树-水题
Hat’s Words题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1247 字典树题目: 建字典树,然后将一个单词分两个部分在字典树中查找!!用结构体封装一下,感觉还行~~>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>水水更健康#include#include#include#include原创 2016-11-12 18:02:35 · 416 阅读 · 0 评论 -
树链剖分-入门题目
Query on a tree题目链接: http://vjudge.net/problem/SPOJ-QTREE题目大致意思就是: 给你一棵树,有连个操作: ● 第一个是查询任意两个不同节点上的最短路径上的最大权边! ● 第二个操作修改某一条边的权值;对于一棵树,数的深度如果很大,那么每次查询两个叶子节点,时间复杂度还是很高的。所以我们就把树分成一原创 2016-11-12 16:37:59 · 1348 阅读 · 1 评论 -
nyoj 86 --位标记
nyoj 86 --位标记点击打开题目链接 : 找球号(一) 这道题目很多解法,其他解法请参考 http://www.cnblogs.com/playboy307/p/5273737.html我参考最优代码写了一下,思路就是标记,一个数除以32会得到 商(a) 和 余数(b) ,那么已知a,b就可以确定一个数。那么我们可以用一个数组的原创 2016-10-16 16:53:21 · 544 阅读 · 0 评论 -
线段树-题解
模板原创 2016-11-05 13:51:06 · 414 阅读 · 0 评论 -
ACM2016级新生第三周训练赛
弱校题解!高手莫笑话.原创 2016-10-23 11:51:30 · 3091 阅读 · 1 评论 -
有多少个不同的子串?-- 后缀数组
点击打开题目链接 题目大意: 给你一个字符串问你有多少个不相同的子串?InputT- number of test cases. ToutputFor each test case output one number saying the number of distinct substrings.ExampleInput:2CCCCCAB原创 2016-09-28 14:08:02 · 688 阅读 · 0 评论 -
Count primes
题目链接:点击打开链接题目意思就是求1到n之间的素数个数 n思路就是: 不会啊, 先存两份模板.顺便存存高手代码。暂时没看懂,不过好短,感觉很厉害。#include #define MAXN 100#define MAXM 10001#define MAXP 40000#define MAX 400000#define clr(ar) memset(ar原创 2016-09-21 14:01:42 · 356 阅读 · 0 评论 -
codeforces-724
题目链接: http://codeforces.com/contest/724/problem/B思路: 先把一步能够到达有序的情况枚举存在一个二维数组a里面。然后输入每一行 对每一行进行两两交换,交换后把对应的 a数组的状态加一。最后看是否存在到达n的状态。#include#include#include#include#include#include#include原创 2016-10-09 13:56:57 · 582 阅读 · 0 评论 -
Vijos P1794 文化之旅
标签: 搜索图结构 最短路 NOIP普及组2012 题目链接 : 点这里 。 这是一道最短路题目,一开始当做暴搜题目来做TLE很多次,想要优化却改成WrongAnswer。原创 2016-07-22 09:48:41 · 1022 阅读 · 1 评论 -
最大网络流 EK 算法
网络流是什么类型的问题,看一道题目你就知道了 点击打开链接 。默认具备图论的基本知识,原创 2016-05-27 15:36:01 · 719 阅读 · 0 评论 -
1336 : Matrix Sum (hihocoder)
题目链接: 点击打开链接二维树状数组,百度一大堆,我只是存代码的#include#include#include#include#includeusing namespace std;typedef long long int LL;const int INF=2e9+1e8;const int MM=1010;const LL MOD=1e9+7;LL n,m原创 2016-07-18 18:51:44 · 892 阅读 · 0 评论 -
nyoj 1030 hihocoder 1338
题目链接:点这里打开。 思路:dp,dp[i][j] 表示某个人在区间 i,j上的得分。 sum数组表示前 n 项和, num 数组用来存输入的数字。因为取数字是正着来的,所以我们考虑这个问题可以倒着来,先列举出只剩下一个时,知道枚举到长度为n。得到状态转移方程:原创 2016-07-18 17:24:22 · 592 阅读 · 0 评论 -
hpuoj 1193: Interval
Interval [STL、双指针、二分]题目链接 http://acm.hpu.edu.cn/problem.php?id=1193 或者题目链接 http://acm.nyist.net/JudgeOnline/problem.php?pid=1316 看了题解有点迷,标程很厉害,很巧妙。先求出前缀和 presum[MAXN],原创 2016-11-29 14:40:30 · 585 阅读 · 0 评论 -
poj-3666
http://vjudge.net/problem/POJ-3666 题目是dp 题目; 简单dp 离散一下就好. 我们先来讲一讲不离散的,简单的懂了,其他的也很容易. dp[i] 代表这个数列以i 结尾的最小花费; 假设现在要求 前n个数组成的数列,那么dp[i]= 前 n-1 的 min(dp[i]~dp[0])+ (当前这个数-i);#include原创 2016-11-17 00:03:59 · 501 阅读 · 0 评论 -
hdu 6035(Colorful Tree)
参考题解做的!思路+题意 在代码中藏着呢。 1 #include 2 #include 3 #include 4 #include string.h> 5 #include 6 #include string> 7 8 9 using namespace std; 10 typedef long long int LL; 11 const原创 2017-09-27 17:57:15 · 390 阅读 · 0 评论 -
Splay模板(序列终结者)
我只是一个存模板的,详细的请看这里 http://blog.csdn.net/whai362/article/details/47298133 题目链接:http://www.codevs.cn/problem/4655/ 1 #include 2 #include 3 #include 4 #include 5 #include set> 6 #incl原创 2017-09-27 17:55:37 · 399 阅读 · 0 评论 -
bzoj1556 (DP)
bzoj 1556 点这里打开题目题目是求 a^2 求和;原问题可以转化为:两个人在玩这个东西,问这两个人弄出来的序列相同的有多少种情况,操作方式不同即为一种不同的情况。就这个问题,参考大佬的DP思想。DP[t][i][j] 分别表示 两人同时第t次取小球,第一人在上面管道取了i个,第二个人在上面管道取了j个所出现相同情况的个数:我们假设:某一个状态为 DP[t][i][原创 2017-07-06 10:32:11 · 625 阅读 · 0 评论 -
值域线段树 (玲珑OJ 1117)
点击打开题目链接题目意思很简单:1、插入x2、把小于x的数变成x3、把大于x的数变成x4、求集合中第x小数5、求集合中小于x的数个数思路: 线段树,节点是值的分数,你可以离散,也可以不离散,直接标记;我的写法是: 看代码注释>>>据说数组改为指针会快点;代码比较挫.存一个;#include #include #include #i原创 2017-05-19 17:12:14 · 1178 阅读 · 0 评论 -
线段树-矩形面积求并
题目链接 题目描述: 给定很多个矩形,给定方式是对角线坐标点.求面积的并。大致思路: 扫描线+线段树;#include <stdio.h>#include <iostream>#include <algorithm>#include <string.h>#include <string>#include <stdlib.h>#include <math.h>#inc原创 2017-05-16 18:26:30 · 517 阅读 · 0 评论 -
值域线段树 bzoj 4627
0.0原创 2017-05-16 14:10:55 · 718 阅读 · 0 评论 -
简单数位DP
https://cn.vjudge.net/problem/HDU-4722懒得写看,代码注释吧;主要存板子#include #include #include #include #include #include #include #include #include #include #include #include #include #include原创 2017-03-17 14:48:50 · 574 阅读 · 0 评论 -
背包问题
1. 01背包为题描述:s件物品, 背包容量为 m ,给出每件物品的cost,与 value 求在背包容量内最大的价值是多少? #include#define max(a,b) a>b?a:bint main(){ int n,s,m,v,w,i,j,k; scanf("%d",&n); while(n--) { int DP[25]={0}; scanf("原创 2016-04-12 13:44:31 · 348 阅读 · 0 评论 -
数学题--On Sum of Fractions
题目链接题目意思:定义v(n)是不超过n的最大素数, u(n)是大于n的最小素数。以分数形式"p/q"输出 sigma(i = 2 to n) (1 / (v(i)*u(i))), pq为互质整数且q > 0。通常会想到这个裂项。公式一写发现约掉了许多。最终是:所以:AC 注意乘的过程会爆int。#include #include #include原创 2017-02-22 14:50:36 · 486 阅读 · 0 评论 -
Sports
题目链接 : http://acm.hpu.edu.cn/problem.php?id=1184 或者 http://acm.nyist.net/JudgeOnline/problem.php?pid=1319 题目意思 : 给定三个整数N,M,K,在1=a=N和1=b=M的约束下,存在多少个不同的整数对(a,b)使得a∗b可以被K整除?原创 2016-12-04 15:42:46 · 487 阅读 · 0 评论 -
hdu(1007) 最近点对 分治法
最近点对一般想到枚举 ,一一枚举时间复杂度为n^2;枚举时候一些炒作是多余的,有了分值算法的思想 ,把一些问题分个击破,再回到整体。题目链接 以这道题为例,我们可以把他按照x轴的升序分成多个子区域先在子区域中求最近点距离,然后将相邻两个子区域合并,看看两个子区域中有没有更小的。大致思想就是这样的。设计算法:递归将问题分成一小个问题。在找区域里面的最近点先将他按照原创 2016-04-04 19:14:14 · 832 阅读 · 0 评论 -
2016-浙江理工新生赛-部分题解
巴比伦花园 link :http://oj.acm.zstu.edu.cn/JudgeOnline/problem.php?id=4239 对于新生还是比较难;我是用 RMQ + 二分 写的; 因为 fi[i] 数组代表从i开始最长到哪里,因为要求最长,所以第一个一定是1, i 是单调的,fi 数组也是单调的,所以可以二分;二分找刚刚在区间的,完全在区间用原创 2016-11-22 23:30:17 · 1047 阅读 · 0 评论 -
最小点覆盖 hdu--1054
点击打开题目链接最小点覆盖=最大二分匹配的 (单向图) ;最小点覆盖=最大二分匹配的一半 (双向图) ;证明 所以我们只需求最大匹配,用 匈牙利算法 求出最大匹配,除以二得到答案 具体算法都已经给出相关链接;下面给出自己AC 代码#include#include#include#include#include#includeusing na原创 2016-07-10 21:38:06 · 419 阅读 · 0 评论 -
hdu2063 二分图(基础题)
这个题目适合刚刚接触二分图的同学做哦: 给一个题目链接 点击打开链接。题目大意,有K个男女匹配方式, 输入数据的第一行是三个整数K , M , N,分别表示可能的组合数目,女生的人数,男生的人数。01输出最大的男女匹配对数,匹配方式为,一个男生匹配一个女生; 题目思路: 先让1与能匹配到的男生进行匹配,用一个数组记录与该原创 2016-05-13 12:15:18 · 449 阅读 · 0 评论 -
nyoj 999
nyoj 999: 点击打开题目链接题目思路,处理一下地图,把 D E 能看到的地方标记一下。然后就是暴力广搜一下。标记状态,因为同样在同一个点,但是你刚出发到达那点和找到D之后到达相同的点和找到E之后到达相同的点,这3中状态是不同的。用vis[x][y][3]来标记状态,标记状态知道这题就AC了。还有另外的思路就是把它们一个一个搜,S-->D-->E S-->D-原创 2016-05-24 14:01:51 · 543 阅读 · 0 评论 -
魔板拼图
点击打开题目链接题目大意:给你一个2X4的魔板,问你最少多少步骤能拼成 0 1 2 3 4 5 6 7 0 代表空的地方 如图:这是最终 状态。Sample Input0 1 2 3 4原创 2016-04-16 13:03:27 · 1033 阅读 · 0 评论 -
hdu1226
hdu1226 :点击打开题目链接本题目由于题目意思,容易得知是一道广搜的题目。首先。 我们需要知道 ,大数取模,比如 如何判断1234567 对15 取模的数为多少?答案是7,但是如果他是大数怎么办, 假设num数组存一个大数;左边为高位,右边为低位int temp=0;for(int i=最高位;itemp=(temp * 某进制+num[i])%N;原创 2016-05-24 11:06:55 · 415 阅读 · 0 评论 -
题目1
点击打开题目链接 题目大意:N 个人来自不同学校,相同学校的人需要站在一排,每排人数为K 人。 问那个学校的人不满足。详见题目。 大致思路: 统计每个学校的人数,输出不能被K整除的那个,简单说 统计数字出现次数,输出不能被K整除的数字。借鉴他人思路,用二进制统计一下。将每个数转化为二进制,用一个数组统计一出现的次数,按位统计1的个数。我们可以假设,原创 2016-04-28 16:07:09 · 495 阅读 · 0 评论 -
GDUT 积木积水 2*n 时间复杂度
题意Description现有一堆边长为1的已经放置好的积木,小明(对的,你没看错,的确是陪伴我们成长的那个小明)想知道当下雨天来时会有多少积水。小明又是如此地喜欢二次元,于是他把这个三维的现实问题简化成二维的问题。设雨量无穷、积木不透水、积木间无缝连接,问在这个二次元的世界里,已放置好的积木会有多少单位的积水量? Input第一行包含一个整数T(T≤100),原创 2016-04-10 20:50:37 · 930 阅读 · 3 评论 -
SPFA 最短路 带负权边的---- 粗了解
SPFA(Shortest Path Faster Algorithm)是Bellman-Ford算法的一种队列实现,减少了不必要的冗余计算。算法大致流程是用一个队列来进行维护。 初始时将源加入队列。 每次从队列中取出一个元素,并对所有与他相邻的点进行松弛,若某个相邻的点松弛成功,则将其入队。 直到队列为空时算法结束。这个算法,简单的说就是队列优化的bellman-ford,利用了原创 2016-04-26 21:28:19 · 3593 阅读 · 6 评论 -
nyoj 998
nyoj 998 点击这里打开题目链接 给你一个数N,使得在1~N之间能够找到x使得x满足gcd( x , N ) >= M,求解gcd(x,N)的和思路:一开始想到暴力法做,超时 ,后来借鉴学长经验AC:大致思路: 用欧拉函数求 ,euler(n) 表示 1到n与n互质的数的个数, 如果n能够被 i 整除 , 则euler(n/i)等价原创 2016-04-12 21:26:49 · 589 阅读 · 0 评论 -
并查集 水题
题目链接#include #include#include#include#include#include#include#include#includeusing namespace std;const int INF =2100000000;int pre[1010];void Init(int n){ for(int i原创 2016-04-07 19:26:27 · 385 阅读 · 0 评论 -
hdu 1754 I Hate It 线段树
I Hate ItTime Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 58191 Accepted Submission(s): 22680Problem Description很多学校流行一种比较的习惯。老师们很原创 2016-03-25 21:27:30 · 308 阅读 · 0 评论 -
最长公共子序列
#include#include#include#include#include#include#include#include#includeusing namespace std;int main(){ char s1[1010],s2[1010]; while(scanf("%s",s1)!=EOF)原创 2016-04-02 15:52:52 · 276 阅读 · 0 评论 -
搜索算法 pots
题目链接 点击打开链接PotsTime Limit: 1000MS Memory Limit: 65536KB 64bit IO Format: %I64d & %I64uSubmit StatusDescriptionYou are given two pots, having the volu原创 2016-03-05 19:17:23 · 548 阅读 · 0 评论