自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 收藏
  • 关注

原创 Interesing Computer Game(环,map)

题目 思路 1.由于数字大,所以先离散化才可以。 2.把两个数当成一条边,则转化为对于每条边连接两个顶点中的一个,最多多少点。 3.n个点的连通图最少有n-1条边,能选n-1个点。若大于n-1条边,则n个点都可以选上。 4.换句话讲,就是如果成了环,则可以都选上,若未成环,则有一个端点选不上。 离散化模板 int getid(int x){ return lower_bound(ve.begin(),ve.end(),x)-ve.begin()+1; //下标从1开始 }

2020-08-06 00:57:13 92

原创 Easy Construction

题目 大意:给定n,k,构造一个1-n的排列P,使得对于1-n中的每个i,P都存在一个长为i的子序列,而每个子序列的和模n都余k。有解则输出任意P,无解输出-1。 思路 1.长度为n的子序列只有本身 2.所有子序列和模n余k,则所有数总和模n余k才会有解决方案。 3.列表发现,n为奇数,则k=0;n为偶数,则k=n/2 4.找规律,有通用排列存在 n为奇数时:P={n,1,n-1,2,n-2,…} n为偶数时:P={n,n/2,1,n-1,2,n-2,…} 代码 #include<iostream&

2020-08-01 01:12:33 162

原创 Bobo sort(环,大数模板)

题目 也就是给一个置换,问有多少个排列可以通过该置换变成有序的排列,结果对1en取模 输入n,置换序列;输出结果。 思路 1.建一张n个节点的图,从i向pi连一条有向边。设环的大小为环中所包含的节点数,则该图中所有环大小的lcm就是答案。每次置换都可以看成环中的元素向环的正向移动一位,那么当所有元素都回到原位时就是一个循环了。 2.置换是固定的,所以只需要求出一个有序的序列(1 2 3 …n)可以通过多少次置换再次回到原来的样子即可 3.每个数经过的位置是一个循环,每个处于循环中的数都可以经过相同的次

2020-07-28 23:47:29 103

原创 Clam and Fish

题目 n个池子,编号1n,分四种,编号03 第0种:0f0c 1:0f1c 2:1f0c 3:1f1c 每个池子动一步: 1.有1c,则用它做一包鱼饵,储存在后面钓鱼 2.有1f,则空手抓鱼 3.有鱼饵,则可以在没鱼的池子里搞一条,花一个鱼饵 4.啥也没干 输入:t(样例数)每个样例两行,第一行n,第二行是一个字符串 (n的总和小于2e6) 输出:最大的鱼数 代码 #include<bits/stdc++.h> using namespace std; int t,n,x,i,j,tot

2020-07-24 01:20:00 91

原创 二分图最大匹配(还在更新中)

二分图定义 简而言之,就是顶点集V可分割为两个互不相交的子集,并且图中每条边依附的两个顶点都分属于这两个互不相交的子集,两个子集内的顶点不相邻。 辨析关键在于点集能否分为两个独立点集(循环圈不为奇数) 最大匹配问题含义 给定一个二分图G,在G的一个子图M中,M的边集中的任意两条边都不依附于同一个顶点,则称M是一个匹配. 选择这样的边数最大的子集称为图的最大匹配问题(maximal matching problem) 如果一个匹配中,图中的每个顶点都和图中某条边相关联,则称此匹配为完全匹配,也称作完备匹配。

2020-07-18 00:36:23 127

原创 J Easy Integration

题目 思路 1.分步求导 2. 3.要打阶乘表,同时取模 4.逆元可得到: 代码 #include<iostream> #include<cstdio> using namespace std; typedef long long ll; const ll mod = 998244353; ll F[2000020],F_1[2000020]; ll n,up,down; ll pow(ll a,ll b){ ll ans = 1; for(;b;b >>= 1

2020-07-16 23:45:11 126

原创 B Boundary(几何,浮点数判断相同要用不同方法)

题目 一个平面n(2e3)个点,找一个过原点的圆,使其经过的点最多 输入n,下面n行是x,y坐标 ,输出过的点数 思路 1.这个圆起码过2点和原点。所以根据两个点和原点来找圆心。连接后作中垂线,交点就是圆心 struct point{ double x; double y; }p[2002]; point yuanxin(point a,point b,point c) { point yx; double a1,b1,c1,a2,b2,c2,d; a1=b.x-a.x; b1=b.y-a.

2020-07-16 00:17:22 117

原创 F. Fake Maxpooling(二维单调队列)

题目 nm的格子,A[i][j]=lcm(i,j),确定kk子矩阵中最大的和 代码 #include<iostream> using namespace std; typedef long long ll; int gcd(int x,int y){ return y?gcd(y,x%y):x; } int lcm(int x,int y){ return x/gcd(x,y)*y; } int a[6000][6000],q[6000],a2[6000][6000];//a2存进了第一

2020-07-15 01:07:37 154

原创 2019.12.16--2019.12.22 第五周 关于C++的零零散散(只是自留)

cin&cout 输入到文件末尾,语句: while(cin>>a) cin输入可以自动刷新缓冲区 cout 的专用回车:endl 输入字符串带空格即止,如果要输入带空格的字符串,用gets(),若输入的是string类型字符串str,则getline(cin,str),输入空格用getchar() 速度慢,高效输入输出还是要用 scanf 和 printf ,循环中也尽量少...

2019-12-19 21:45:33 111

原创 2019.12.9--2019.12.15 第四周 前向距离之和的解法及单调栈基础

题目: 给定一个序列a_1,a_2,…,a_n。其中a_1是最大的数,没有其他数与它相等 对于从第二个数开始的每个数a_i,请找到位置在a_i之前且比a_i大的。位置上距离a_i最近的的数a_j.i-j为a_i的前向距离 对于给定的序列,输出所有数的前向距离之和。 输入格式: 第一行包括一个整数n,表示序列长度 第二行包括n个正整数,为给定的序列 输出格式: 输出一个整数,表示序列中所有数的前向距...

2019-12-11 22:04:46 151

原创 2019.12.9--2019.12.15 第四周 01背包问题

题目内容: 物品集合U={u1,u2…un},体积分别为s1,s2…..sn,价值分别为v1,v2….vn;容量C的背包。设计算法实现放入背包的物品价值最大。 输入描述 第一行输入物品数n,第二行输入每个物品体积,第三行输入每个物品的价值,第四行输入背包的容量c 输出描述 输出最大价值数。 输入样例 3 3 4 5 4 5 6 10 输出样例 11 解题思路: 过题代码 #include<...

2019-12-10 16:31:07 162

原创 2019.12.2--2019.12.8 第三周 快速排序

基本介绍 快速排序(Quicksort)是对冒泡排序的一种改进。 快速排序由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。 时间复杂度: 基本函数模板 void quicksort(i...

2019-12-07 12:45:29 97

原创 2019.12.2--2019.12.8第三周 归并排序

基本原理 归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。 时间复杂度:O(nlog(2)n) 基本思想:分治 (我知道上面这一串说不清楚,所以还是上图吧) 图片来...

2019-12-05 21:16:42 88

原创 2019.11.25--2019.12.1第二周 宏定义

基本法则 完全代换,不进行语法检查(傻瓜代换) 将一个标识符定义为一个字符串,该标识符被称为宏名,被定义的字符串称为替换文本。 在该程序被编译前,先将宏名用被定义的字符串替换,这称为宏替换,替换后才进行编译 分类 简单的宏定义:#define 宏名 字符串 例如:#define PI 3.14 注:不可以加任何运算符。否则 运算符将被最为字符串的内容代换进程序中。如上述例子不可以写成 #de...

2019-12-04 19:29:36 94

原创 2019.11.18--11.24第一周 快速幂

基本函数模板 #include <stdio.h> typedef long long ll; const ll mod = 1e9+7; ll qpow(ll x, ll pows){ //x为底数,pows为指数 ll sum = 1; //最终结果由sum存储 while(pows){ //指数为零时停止循环 if(pows & 1) //&1判断奇...

2019-12-02 21:03:07 132

原创 2019.11.18--11.24第一周 求gcd,lcm

函数模板 #include <stdio.h> typedef long long ll; ll getgcd(ll a, ll b){ if(b == 0) return a; else return getgcd(b, a%b); } 递归求解,辗转相除,时间复杂度最低。 以及,最小公倍数lcm=a * b / gcd(a, b) ...

2019-11-27 21:41:48 78

原创 2019.11.18--11.24第一周 位运算

1 原码反码补码之间的转换规则 位运算中以二进制补码形式进行运算。将十进制转换为二进制后,在最前面加上单位,占一字节,正数单位位是0,负数单位位为1。 正数的补码即为原码,负数的补码为原码取反加一。取反时注意单位位不变。 计算得到的结果为补码,正数补码即为其原码,负数原码为补码减一取反。 2 取反:~ 将二进制中所有位数全部取反, 包括符号位,优先级为位运算中最高。 法则:~ 0=1,~1=0 3...

2019-11-27 16:48:52 144

原创 2019.11.18--11.24第一周题解及考察点

1. #include <stdio.h> int main(){ int x = 5; int y = 5; int z = 5; printf("%d\n", x%=y+z); return 0; } 运行结果__5__。 *考察点:C运算符的优先级(从高到低) 初等运算符 ( ) , [ ], -> 单目运算符 ! ~ ++ – -(负号) *(...

2019-11-27 16:25:47 358 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除