12 2017 档案

摘要:题意: 给定n个点, m条路, 求1到 2 ~n的最短路之和加上2~n到1的最短路之和 分析: 裸最短路, 求其他点到源点的距离只需要把边方向再从源点求一次即可 spfa代码 dijkstra代码: 阅读全文
posted @ 2017-12-27 16:36 Neord 阅读(262) 评论(0) 推荐(0)
摘要:1 inline int read(int &x) 2 { 3 int k=0; 4 char f=1; 5 char c=getchar(); 6 while(c>'9'||c='0') 13 { 14 k=k*10+c-'0'; 15 c=getchar(); 16 } 17 x = k*f;... 阅读全文
posted @ 2017-12-27 16:25 Neord 阅读(162) 评论(0) 推荐(0)
摘要:题意: 求斐波那契的前10000项目 分析: 模拟竖式加法, 用string作为数字的储存形式 阅读全文
posted @ 2017-12-24 12:56 Neord 阅读(349) 评论(0) 推荐(0)
摘要:题意: 给定n个酒吧, 然后有k个学生投票今晚去哪个酒吧, 然后会有a个(a<=k)学生先投票了, 先投的票会影响后面的人投票的概率, 求每个酒吧今晚去的概率。 分析: 我们可以从最初的状态开始广搜, 由于搜索中会有很多重复的状态, 我们用一个map去储存这些状态, 如果map中没有这个状态再将他入 阅读全文
posted @ 2017-12-24 12:53 Neord 阅读(180) 评论(0) 推荐(0)
摘要:题意: 给定一个整数w, 然后给定n个数, 问有没有两个数之和恰好为w 分析: 现将n个数数组a[]排序, 然后用两个变量i,j指向开头和末尾, 如果a[i] + a[j] > w, i++, 如果a[i] + a[j] < w, j--。 直到相等或者i == j(找不到结果) 阅读全文
posted @ 2017-12-24 12:41 Neord 阅读(150) 评论(0) 推荐(0)
摘要:题意: 给定n个数,从中挑出c个, 让他们相邻两数的最小距离最大。 分析: 先将n个数排序, 然后我们知道两个数的距离的范围d ∈[1,n/c + 1], 我们去二分这个范围, 然后去判断mid是否可行。 判断方法是从第一个点开始放, 找到一个不少于d的点再试, 最后如果能放满证明可行,d的下限为m 阅读全文
posted @ 2017-12-24 11:23 Neord 阅读(155) 评论(0) 推荐(0)
摘要:L2-017. 人以群分 题意: 给定n个正整数, 然后分成规模相差尽可能接近的两类, 这两类之和相差要尽可能大 分析: 直接排序, 然后分成两部分即可 1 #include <bits/stdc++.h> 2 using namespace std; 3 int a[123456]; 4 int 阅读全文
posted @ 2017-12-23 20:54 Neord 阅读(517) 评论(0) 推荐(0)
摘要:long long quickmod(long long a,long long b,long long m) { long long ans = 1; while(b)//用一个循环从右到左便利b的所有二进制位 { if(b&1)//判断此时b[i]的二进制位是否为1 { ans = (ans*a)%m;//乘到结... 阅读全文
posted @ 2017-12-18 11:29 Neord 阅读(143) 评论(0) 推荐(0)
摘要:介绍: 区间修改查询问题一般会想到用线段树或者树状数组来做,但是题目是离线查询,即完成修改后再查询的话,可以用到差分数组。 差分数组: 对于数组a[i],我们令d[i]=a[i]-a[i-1] (特殊的,第一个为d[1]=a[1]),则d[i]为一个差分数组。 我们发现统计d数组的前缀和sum数组, 阅读全文
posted @ 2017-12-17 23:56 Neord 阅读(1691) 评论(0) 推荐(0)
摘要:链接: https://www.nowcoder.com/acm/contest/52/M 题意: 给定n个队伍的到场时间, 有3个报道位, 每个队伍报道需要b时间, 求所有报道完成的时间。 分析: 一开始写了一个模拟时间轴的, 虽然过了,但是在时间很大的时候行不通。 1 #include<bits 阅读全文
posted @ 2017-12-17 01:01 Neord 阅读(498) 评论(0) 推荐(0)
摘要:链接: https://www.nowcoder.com/acm/contest/52/K 题意: 给定n个点,每个点有自己的权值, 然后让你添加n-1条边,使其边权和最大, 边权的定义是两点的点权和除2。 分析: 一开始我想到的是裸的最小生成树, 用优先队列优化的prim算法200ms过了,复杂度 阅读全文
posted @ 2017-12-17 00:52 Neord 阅读(282) 评论(0) 推荐(0)
摘要:康拓展开: 求出当前排列是全排列中的第几个 X=a[n]*(n-1)!+a[n-1]*(n-2)!+...+a[i]*(i-1)!+...+a[1]*0! 其中a[i]是当前位置后面有多少个比当前位置大的数, 可以看成是求当前位置的逆序。 康拓展开逆运算: 康拓函数是一个双射函数, 可以作为hash 阅读全文
posted @ 2017-12-04 09:11 Neord 阅读(235) 评论(0) 推荐(0)