积分赛5
最友好的一次积分赛2333应该也是最后一个个人积分赛了,不知道最后一次会不会是团队赛,再说吧,已经八月十五了,自从集训以来每天都有训练,虽然晚上一般都是有些时间去记录一些题解的,但是懒癌晚期的我真的不想去写,终于今天下定决心,趁着这两天我要补一下题解,把最近有意义的题目记录一下,也算是一个复习吧🎉
D 何不好的晨练描述
何不好是一名晨练爱好者,每天他都要一大早出门进行晨跑锻炼,何不好生活的城市很大,
同时也比较繁荣,路边高楼耸立,道路上车辆往来,川流不息。
晨练的同时还可以欣赏路边的风景,于是,何不好打算每天选择 M 条路段,其中包括 N
个路口。
但何不好想要从起点开始不重复的跑完所有路段,并且跑回起点,苦于是学渣的他不知道
能不能完成这个条件,于是他向你寻求帮助。
输入数据
第一行给定两个整数 N , M 。
接下来 M 行,每行有两个整数 U,V 代表路段相连的两个路口。
1 ≤ N ≤ 100,000. 0 ≤ M ≤ 100,000. 毎对儿 U, V 互不相同,且 U, V 不同。
输出数据
若能完成这个条件则输出Yes,否则输出No。
样例输入
4 4
1 2
2 ...
积分赛4
题目面板 提取码:k2fu
A. 胡图图的数学难题这道题很有意思让你求斐波那契数列的平方和,一篇易懂的题解 得到公式以后直接一个矩阵快速幂就解决了
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051#include <bits/stdc++.h>#define ios ios::sync_with_stdio(0); cin.tie(0); cout.tie(0)using namespace std;typedef long long ll;const ll MOD=1e9+7;struct node{ ll mat[2][2]; void set(){ memset(mat,0,sizeof mat); for(int i=0;i<2;i++) mat[i][i]=1; } node operator * (const node &o){ node ans; for(int ...
dfs记忆化搜索
dfs标记的位置太重要了,放在不同位置产生的效果都有巨大的差别,记录今天的一些dfs记忆化搜索题目
A- Function Run Fun题目链接
12345678910111213141516171819202122232425#include<stdio.h>#include<string>#include<string.h>#include<algorithm>#include<iostream>typedef long long ll;using namespace std;ll used[50][50][50];ll w(int x,int y,int z){ if(x<=0||y<=0||z<=0) return 1; if(x>20||y>20||z>20) return w(20,20,20); if(used[x][y][z]) return used[x][y][z]; if(x<y&&y<z) return used[x][y] ...
积分赛3
学习了最短路后,感觉自己理解真的很一般,只会一些模板题目,稍微变一下就死了,而且发现我的思维很死,只会写套路题,做那些稍微灵活一点的题目感觉就很吃力,希望以后能有好转
B 张仙女的愧疚
张仙女最近痴迷于游戏,可是他每周都得为学弟们准备一场积分赛。但,不是谁都能成为
时间管理大师。在游戏的诱惑下,他不小心出了几道难题,导致学弟们的心态可能爆炸,终于
他感到了深深的愧疚。决定这次一定友好一点。
他想到了一个有趣且简单的问题,准备交给学弟们解决。
给你一个数组N,数组的下标从1开始,数组中的每个数的值为A**i,你需要在这个数组中
找到两个数,使他们的数值和与他们的下标的差的绝对值相等,两个数为一组,张仙女想考考
你,在这个数组中你最多能找到可以满足题意的几组数。
输入
单组输入
第一行为数组的大小N(2 ⩽ N ⩽ 200000)
接下来一行N个以空格区分开的数表示数组中的值A**i1 ≤ A**i ≤ 109
(1 ≤ i ≤ N)
输出数据
一个数字,表示答案
样例输入
6
2 3 3 1 3 1
样例输出
3
分析题意很简单求数组里面有多少对数满足数值和等于下标差,列出等式a[ ...
积分赛2
前两天打了第二场积分赛,难度明显比上次高,感觉更考验思维了,收集了一些我认为有价值的题目,因为太懒了,不想自己写思路题解了,搬来了别人的代码和题解,以后争取养成保存代码的习惯🐷
A 徐半仙的数学难题
描述
徐半仙经常修炼。但是每次修炼所能提升的功力确是不确定的(可能是功力还不够深厚
吧)。
每次修炼结束之后,徐半仙的脑海中就会浮现出两个数字,n和m,他的师父跟他说他每
次修炼增加的功力就是由这两个数决定的。每次增加的功力为(n!!!)%m,即n的阶乘的阶乘的
阶乘对m取模之后的值。
徐半仙想让你帮他写一个程序,通过n和m得到他每次修炼之后提升了多少功力。如果这
次修炼后提升的功力为0,输出baigei
输入数据
多组输入,第一行一个正整数t(1 ≤ t ≤ 105)表示数据组数
每组数据包含两个整数n, m(0 ≤ n ≤ 109, 1 ≤ m ≤ 109)
输出数据
对于每组数据,如果答案为0,输出baigei,否则输出答案(每次修炼后提升的功力)
样例输入
1234522 65532 2
样例输出
1232baigei
提示
在样例中,(2!!!) = ...
BFS练习
A - Red and Black
There is a rectangular room, covered with square tiles. Each tile is colored either red or black. A man is standing on a black tile. From a tile, he can move to one of four adjacent tiles. But he can’t move on red tiles, he can move only on black tiles.
Write a program to count the number of black tiles which he can reach by repeating the moves described above.
Input
The input consists of multiple data sets. A data set starts with a line containing two positive integers W and H ...
浅谈矩阵快速幂
集训开始了对矩阵快速幂的讲解,但是讲解的非常不好,基本没讲,这导致我这个之前就不知道矩阵快速幂的蒟蒻不得不自己乖乖的去网上查资料学习,找到了两个比较不错的视频讲解,具体可以看清单里面的转载,我来记录一下矩阵快速幂的基本用法🐷
矩阵乘法学习过线性代数或者离散数学的应该都知道矩阵之间的乘法怎么做,知道的可以跳过,矩阵相乘有一个前提条件,就是前一个矩阵的列数必须等于后一个矩阵的行数两个矩阵才能做乘法运算,这是因为矩阵是不满足交换律的,他们相乘得到的矩阵的元素等于这个元素所在的行对应第一个矩阵的行元素依次乘以这个得到的矩阵元素列数对应第二个矩阵的列元素,很绕口,举个例子,假如两个矩阵相乘后得到了新的矩阵,这个矩阵的第一个元素是在第一行第一列对吧,那么这个元素就是第一个矩阵的第一行和第二个矩阵的第二列元素依次相乘再累加的结果,这样你就知道为什么第一个矩阵的列数必须和第二个矩阵行数相同了吧。
那在纸上你肯定会算了,怎么把它转化成代码呢?
CODE123456789101112131415161718192021222324252627282930struct mat{ ll m[2 ...
贪心与二分
被虐惨了,各种调试与超时或者看不懂题🐷
Strange fuction
Now, here is a fuction:F(x) = 6 x^7+8x^6+7x^3+5x^2-y*x (0 <= x <=100)Can you find the minimum value when x is between 0 and 100.
Input
The first line of the input contains an integer T(1<=T<=100) which means the number of test cases. Then T lines follow, each line has only one real numbers Y.(0 < Y <1e10)
Output
Just the minimum value (accurate up to 4 decimal places),when x is between 0 and 100.
Sample Input
123>2>100>200
Sample ...
集训前缀和与差分
程序设计:蒜头君的数轴题目来源 :点击我
今天蒜头君拿到了一个数轴,上边有 n 个点,但是蒜头君嫌这根数轴不够优美,想要通过加一些点让它变优美,所谓优美是指考虑相邻两个点的距离,最多只有一对点的距离与其它的不同。
蒜头君想知道,他最少需要加多少个点使这个数轴变优美。
输入格式
输入第一行为一个整数 n(1 <=n ,q<= 10^5)(1≤n≤105),表示数轴上的点数。
第二行为 n个不重复的整数
x1,x2,…, xn (−109≤xi≤109),表示这些点的坐标,点坐标乱序排列。
输出格式
输出一行,为一个整数,表示蒜头君最少需要加多少个点使这个数轴变优美。
样例输入
41 3 7 15
样例输出
1
分析题目很简单,意思就是在一个数轴给你n个点,让在数轴上添加最少的点使得任意两点之间距离都相等(允许一组点间距和其他不等)。
这道题目用到了gcd,如果不考虑允许一组间距和其他的不相等的情况的话,那么就应该把所有区间都变成长度为gcd(所有点间距)(下面用gcd代替),现在允许一组不等,那么可以枚举这n-1个区间,删除一个区间看看此时需要添加的最小点数量是多少,取其 ...
STL集训典型题目
自己找题,做课件,还得学习新的东西,不得不说确实挺费时间的,光找找题目就花了2个小时左右,还是因为自己的题量少的原因,只能去搜一些题目自己再做做,不过粘贴题目AC的感觉真的美妙🐷
Running MediansFor this problem, you will write a program that reads in a sequence of 32-bit signed integers. After each odd-indexed value is read, output the median (middle value) of the elements received so far.
Input
The first line of input contains a single integer P, (1 ≤ P ≤ 1000), which is the number of data sets that follow. The first line of each data set contains the data set number, followed ...



