luogu
2020.2.2创立,旨在记录洛谷做题的点点滴滴
菱形继承
懒癌患者,IT民工,前进路上经常磕磕碰碰
展开
-
洛谷 P1896 [SCOI2005]互不侵犯(状压dp)
P1896 [SCOI2005]互不侵犯题目描述在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案。国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共8个格子。注:数据有加强(2018/4/25)输入格式只有一行,包含两个数N,K ( 1 <=N <=9, 0 <= K <= N * N)输出格式所得的方案数输入输出样例...原创 2020-04-24 20:13:29 · 570 阅读 · 13 评论 -
洛谷 P1886 滑动窗口 /【模板】单调队列 (单调队列、线段树、RMQ(ST表))
题目描述有一个长为nn的序列aa,以及一个大小为kk的窗口。现在这个从左边开始向右滑动,每次滑动一个单位,求出每次滑动后窗口中的最大值和最小值。例如:The array is[1,3,-1,-3,5,3,6,7][1,3,−1,−3,5,3,6,7], andk = 3k=3。输入格式输入一共有两行,第一行有两个正整数n,kn,k。 第二行nn个整数,表...原创 2020-04-06 19:51:13 · 374 阅读 · 0 评论 -
洛谷 P1077 摆花(记忆化搜索 or DP)
题目链接题目描述小明的花店新开张,为了吸引顾客,他想在花店的门口摆上一排花,共mm盆。通过调查顾客的喜好,小明列出了顾客最喜欢的nn种花,从11到nn标号。为了在门口展出更多种花,规定第ii种花不能超过a_iai盆,摆花时同一种花放在一起,且不同种类的花需按标号的从小到大的顺序依次摆列。试编程计算,一共有多少种不同的摆花方案。输入格式第一行包含两个正整数nn和mm,中间用一个...原创 2020-03-30 16:07:32 · 226 阅读 · 0 评论 -
乘法逆元 线性递推阶乘求逆元、费马小定理、普适线性求逆元 欧拉定理结论
Definition对于一个数x和一个模数p,若存在一个数字y,满足则称yy是xx在模pp意义下的逆元,记做。一个数字逆元在模意义下的运算中可以完全取代该数字的倒数。例如,其中代表y的逆元。单个数求逆元有扩展欧几里得、费马小定理 复杂度logn对于竞赛中,一般常用的是费马小定理,因为模数一般是质数具体如下:根据欧拉定理其中为欧...原创 2020-03-15 21:32:19 · 278 阅读 · 0 评论 -
号码锁 Combination Lock
P2693 [USACO1.3]号码锁 Combination Lock分析:类似约瑟夫环问题,大模拟即可,数据规模小可用o(n^3)100*100*100水过代码有点硬核,,,,#include<bits/stdc++.h>using namespace std;int n,a,b,c,d,e,f;int flag[10],cnt;int main(){ ...原创 2019-03-15 19:58:18 · 3789 阅读 · 0 评论 -
修理牛棚 Barn Repair
P1209 [USACO1.3]修理牛棚 Barn Repair分析:贪心,取对间隔进行排序,按照贪心思想取间隔最大着为空隙,当前所需木板数+1,要注意的是一旦选出空隙总长要加一,因为你分裂了线段少算了末端,木板数用完了就得到答案了..上一个 个人认为很短的代码,看的很容易理解的.#include<bits/stdc++.h>using namespace std;...原创 2019-03-12 15:57:45 · 3693 阅读 · 0 评论 -
方块转换 Transformations
P1205 [USACO1.2]方块转换 Transformations分析:大模拟,不好写且麻烦,不过有些细节可以优化一下 不难看出顺时针转90,180=90*2,270=90*3的关系,所以只要写一个转90度的函数即可,只要镜像就很好写,结合镜像和翻转就可以模拟出来所有情况了,注意有多种可行方案时,输出序号最小的那个即可#include<bits/stdc++.h>us...原创 2019-03-11 18:56:45 · 3958 阅读 · 0 评论 -
双重回文数 Dual Palindromes
P1207 [USACO1.2]双重回文数 Dual Palindromes分析:和上一道水题一样,稍微改改就可以用了哈哈题目太水就不解释啦#include<bits/stdc++.h>using namespace std;int j,k,cnt;string s;void change(int x,int n){ while(x) { ...原创 2019-03-11 21:18:15 · 4182 阅读 · 0 评论 -
回文平方数 Palindromic Squares
P1206 [USACO1.2]回文平方数 Palindromic Squares分析:1.i=1到300开始逐一枚举将i与i*i转为b进制数2.判断回文,是则输出,否则不输出思路简单但调试半天系列....#include<bits/stdc++.h>using namespace std;int n;string s;void change(int x)...原创 2019-03-11 20:54:19 · 1088 阅读 · 0 评论 -
挤牛奶Milking Cows
P1204 [USACO1.2]挤牛奶Milking Cows分析:初始化变量头和尾为第一个农民的开始时间和结束时间,max1,max2为最大重叠长度和最大不重叠长度每处理一个农民,相当于处理一条线段,首先先对每一条线段的初始端排序,接着从第二条开始处理,如果下一条线段起点小于当前尾部,说明可能有覆盖取max1=max(当前的尾,这条线段的末端),反之则开始计算最大不重叠长度max2=max(...原创 2019-03-11 18:51:59 · 415 阅读 · 0 评论 -
命名那个数字
P3864 [USACO1.2]命名那个数字 Name That Number分析:此题本来有个极复杂的代码,后来看了某位大佬的stl解法,感觉极为简便自己写了一个,采用*lower_bound指针操作学到了(其功能是查询区间中匹配字符串)还有substr(n)b表示截取第n个字符后的字符串,(substr的一种用法)#include<iostream>#inclu...原创 2019-03-10 11:34:01 · 223 阅读 · 0 评论 -
麦森数
算法训练 麦森数描述 形如2P-1的素数称为麦森数,这时P一定也是个素数。但反过来不一定,即如果P是个素数,2P-1不一定也是素数。到1998年底,人们已找到了37个麦森数。最大的一个是P=3021377,它有909526位。麦森数有许多重要应用,它与完全数密切相关。 任务:从文件中输入P(1000&lt;P&lt;3100000),计算2P-1的位数和最后500位数字(用十进制高精度数表...原创 2019-02-24 21:07:20 · 509 阅读 · 0 评论 -
过河卒
P1002 过河卒题目描述棋盘上AAA点有一个过河卒,需要走到目标BBB点。卒行走的规则:可以向下、或者向右。同时在棋盘上CCC点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点。因此称之为“马拦过河卒”。棋盘用坐标表示,AAA点(0,0)(0, 0)(0,0)、BBB点(n,m)(n, m)(n,m)(nnn, mmm为不超过202020的整数),同样马的位置坐标是需要...原创 2019-02-25 08:56:53 · 1307 阅读 · 0 评论 -
圆点
题目背景中考了,Pg看着数学卷子的压轴题,陷入了沉思……题目描述众所周知,平面中的每一个整点都有且仅有一个圆心在原点的圆穿过,我们定义这个整点的权值为穿过它的圆的半径的平方。现在有一个圆心在原点的圆,半径为sqrt{R}你要求出这个圆所包含的所有整点的权值和。由于答案可能过大,对109+7取模。输入输出格式输入格式:一个数字输出格式:一行,仅有一个数字。输入输出样例输入...原创 2019-02-27 20:30:35 · 3706 阅读 · 0 评论 -
项链
算法提高 项链描述由 n(1≤n≤100) 个珠子组成的一个项链,珠子有红、蓝、白三种颜色,各种颜色的珠子的安排顺序由键盘输入的字符串任意给定。蓝色用小写字母b表示,红色用小写字母r表示, 白色用小写字母w表示.假定从项链的某处将其剪断,把它摆成一条直线。先从左端向右收集同色珠子,遇到第一个异色珠子时停止. 收集过程中, 白色是一种特殊颜色, 既可以看成红色也可以看成蓝色。然后再从剩余...原创 2019-02-28 12:52:15 · 466 阅读 · 0 评论 -
优先队列
#include<bits/stdc++.h>using namespace std;priority_queue<int ,vector<int>,greater<int> >q;int main(){int n,sum=0;cin>>n;for(int i=1;i<=n;i++){ int a; ...原创 2019-03-02 23:39:51 · 508 阅读 · 0 评论 -
队列安排
分析:考虑双向链表:链表插入删除操作注意寻找头元素并更新#include <bits/stdc++.h>using namespace std;struct node{ int data; node*left,*right; node (int x) { data=x; left=right=NULL; ...原创 2019-03-01 11:19:54 · 286 阅读 · 0 评论 -
回忆京都
题目:传送门分析:组合数打表+二维前缀和+边处理边%(注意加上一个大数后取%#include<bits/stdc++.h>using namespace std;#define MOD 19260817int c[1010][1010],ans[1010][1010];int main(){ c[1][0]=c[1][1]=1;for(int i=2;i&...原创 2019-03-04 12:29:18 · 219 阅读 · 0 评论 -
跳石头
题目:传送门分析:二分答案:对于此类最小中取最大值问题,具有单调性有界(收敛哈哈)可用枚举答案的方法,取中间值judge函数判断,可行,中——右继续枚举答案,否则左——中枚举#include<bits/stdc++.h>using namespace std;#define ll long long#define maxn 100000000ll l,m,n,a...原创 2019-03-06 23:39:18 · 2997 阅读 · 0 评论 -
国王游戏
题源:国王游戏分析:贪心思想:对于每个大臣有a,b表示左右手数,可证明a*b大的放后面可得最优解有关证明:(本来想来张手写图的,传不上去 证明具体算法:数据规模n达到10000,由于是连乘,可能会溢出采用高精度乘法,除法重载运算符结构体排序#include<iostream>#include<algorithm>#include<queue...原创 2019-03-08 22:22:38 · 693 阅读 · 0 评论 -
马的遍历
题目链接分析:裸广搜,采用队列对进队元素逐一分析然后出队,不断更新注意格式c语言输出为:%-5d,c++输出为cout<<setiosflags(ios::left)<<setw(5)<<#include<iostream>#include<algorithm>#include<queue>#include...原创 2019-03-10 00:33:55 · 1317 阅读 · 0 评论 -
洛谷 P1019 单词接龙
题目链接题目描述单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头的字母,要求出以这个字母开头的最长的“龙”(每个单词都最多在“龙”中出现两次),在两个单词相连时,其重合部分合为一部分,例如 beast和astonish,如果接成一条龙则变为beastonish,另外相邻的两部分不能存在包含关系,例如at和 atide间不能相连。这道题需要注意三点:...原创 2020-02-02 13:13:47 · 564 阅读 · 0 评论