暑训
扎刺
太菜 要多学!!
展开
-
建图的三种方式---邻接矩阵,邻接表,链式前向星
邻接矩阵# include<iostream>using namespace std;const int maxn = 1e3;int graph[maxn][maxn];void init(int n,int m) { //邻接矩阵 for (int i = 1;i <= n;i++) {//图中的点从1开始 for (int j = 1;j <= n;j++) { graph[i][j] = 0; } }}void build(int n, in原创 2021-08-11 08:29:26 · 249 阅读 · 0 评论 -
强连通图<一>
//大致思路:利用vector存图,同时把反图存好,接着利用深搜把后序的序列得到//接着是按照后序的顺序深搜反图,并且在该点被走过的前提下将土中可以一次性可以走的点放入数组//存放 也就是用数组f[x] = y x是每次遍历到的点,具体的值是第一个点的值,这样该图的所有强连通图都得到了题目连接# include <iostream># include <queue># include <string.h># include <vector>#原创 2021-08-05 20:04:34 · 377 阅读 · 0 评论 -
图的建立,
题目一:邻接表图的基本存储的基本方式一Description解决图论问题,首先就要思考用什么样的方式存储图。但是小鑫却怎么也弄不明白如何存图才能有利于解决问题。你能帮他解决这个问题么?Input多组输入,到文件结尾。每一组第一行有两个数n、m表示n个点,m条有向边。接下来有m行,每行两个数u、v代表u到v有一条有向边。第m+2行有一个数q代表询问次数,接下来q行每行有一个询问,输入两个数为a,b。注意:点的编号为0~n-1,2<=n<=5000 ,n*(n-1)/2<=m&原创 2021-08-02 17:32:26 · 129 阅读 · 0 评论 -
树状数组 模板
以下所有数据整理来自于此单点修改,查询前缀和void add(int x,int k){ for(;x<=n;x+=x&-x)t[x]+=k;}int ask(int k){ int ans = 0; for(:x:x-=x&-x)ans+=t[x]; return ans;}单点修改,单点查询void add(int x,int k){ for(;x<=n;x+=x&-x)t[x]+=k;}int ask(int k){ int an原创 2021-07-28 10:29:11 · 86 阅读 · 0 评论 -
训二--总结
一个汉字占两个char大小,且相比于其他字符(不包括其他国家语言的字符),它的字符在电脑中读到的是小于0的。ceil()用于向上取整(数值小于原数据)floor()用于向上取整(数值大于原数据)round()用于四舍五入取整(4.56取整为5 4.45 取整为4)记得加头文件:<math.h>输入字符串的时候小心,记着cin是不可以输入空格的,用getline(cin,st)头文件加快cin输入,在main第一行第二行写入:ios_base::sync_with_stdio(0);.原创 2021-07-21 23:51:21 · 98 阅读 · 0 评论 -
hoj2186 - 悼念512汶川大地震遇难同胞——一定要记住我爱你
题目链接:hoj2186这题不是难题,一开始处理数据,得到三个数是没什么问题的,出问题的是后面,每一个小队十个人派一个向导,不足十个人则也派一位。关于这一段的处理,很明显,原来的思路是比较乱的,安静坐下来,这个其实很好处理。//首先将这个计算出来的数划分范围,//如果是小于等于10的数据只需直接加一 (小于10的取余是自身,且必小于十则可默认为1)(而10的话取余为0,除10结果为1).// 如果不是,则说明该数整除10大于0,那么需要接着判断该数是否存在余数,若存在接着加一//三个数据判断根据原创 2021-07-21 22:28:23 · 85 阅读 · 0 评论 -
训一 总结
题目要求输入多组数据时while(cin>>x){}麻烦读题谨慎些。关于大数相加:思路总结首先需要确定的是数值过大无法进行正常的加法运算,因此需要使用特殊的方法,将数据以字符串的方式读入,之后可以选择将其分别放入整型数组中(倒序),因为是从个位开始计算,选长度长的那一个为基准(存放加法运算之后的结果),需要做的处理就是当数值大于等于10的时候在该数组位的后一位放入该数值的除10的结果,而自身则放模10的结果。处理完之后,需要将数组有效位数更新,也就是数值为0则记录数组大小的值不断.原创 2021-07-19 17:47:11 · 98 阅读 · 0 评论