ACM&算法
文章平均质量分 64
书伯
这个作者很懒,什么都没留下…
展开
-
NEFU 10.5(ABC)
cf746 div2@[TOC] cf746 div2A. Gamer Hemose第一次直接循环超时了,要直接计算答案#include<bits/stdc++.h>#define fo(a,b,c) for(int a=b;a<c;a++)using namespace std;typedef long long ll;const int N=1e6+10;int main(){ ios::sync_with_stdio(0); cin.tie(0);原创 2021-10-04 19:10:53 · 143 阅读 · 0 评论 -
Codeforces Round 114 Div. 2(BCD)
Educational Codeforces Round 114 Div. 2[B. Combinatorics Homework](https://codeforces.com/contest/1574/problem/B)[C. Slay the Dragon](https://codeforces.com/contest/1574/problem/C)[D. The Strongest Build BFS+暴力*](https://codeforces.com/contest/1574/proble原创 2021-09-27 19:23:06 · 135 阅读 · 0 评论 -
2021NEFU 9.23(ABC)
2021NEFU 9.23A ValidBFS? 2D思维B Connected Component on a Chessboard 3E纯模拟C White Lines 2D预处理,前缀和2021NEFU 9.23A ValidBFS? 2D思维D. ValidBFS?思维所述BFS算法定义如下。1.一个无向图,顶点编号为 1 到 n. 初始化q作为仅包含顶点1的新队列, 标记顶点 1。2.从队列的头部 q提取顶点 v3.打印顶点索引 v4.把无向图中是 v 邻居并且尚未标记的顶点插入原创 2021-09-27 16:47:35 · 134 阅读 · 0 评论 -
2021“MINIEYE杯”(c,h,j)
比赛链接C - Dota2 Pro Circuit用贪心的思想,求最好的名次时尽可能让排在后面的人最多,求最差的名次时尽可能让排在前面的人最多#include<bits/stdc++.h>#define fo(a,b,c) for(int a=b;a<c;a++)using namespace std;typedef long long ll;struct A{ int point,i;};bool cmp(A a,A b){return a.point<原创 2021-09-20 18:11:09 · 104 阅读 · 0 评论 -
NEFU2021-09-17CF(c、d)
CFC. Tile Painting一个长条被分为n块,如果j-i>1&&n%(j-i)=0,那么第i块和第j块为同色,n块最多有多少颜色?n=pk(p为素数,k>1),有p种颜色其余都只有一种颜色ps.double x=log(a)/log(prime[i]);if(x==int(x)) cout<<prime[i];会wa,可能是精度?#include<bits/stdc++.h>#define fo(a,b,c) for(i原创 2021-09-20 12:51:44 · 74 阅读 · 0 评论 -
Black and white(并查集的特殊使用
链接:https://ac.nowcoder.com/acm/contest/11254/B来源:牛客网题目描述Goodeat has a white chessboard with n rows and m columns.Each grid (i, j) has a weight c(i, j). At any time, the grid (i, j) can be dyed black at the cost of c(i, j).Goodeat has a special talent.原创 2021-07-30 09:09:13 · 282 阅读 · 0 评论 -
KMP
#include <bits/stdc++.h>#define fo(a,b,c) for(int a=b;a<c;a++)using namespace std;void Getnext(int next[],string t){ int j=0,k=-1; next[0]=-1; while(j<t.size()-1){ if(k == -1 || t[j] == t[k]){ j++;k++; if(t[原创 2020-11-06 18:17:02 · 96 阅读 · 0 评论 -
支持区间修改和区间查询的树状数组
题目洛谷P3372 【模板】线段树 1已知一个数列,你需要进行下面两种操作:将某区间每一个数加上 k求出某区间每一个数的和树状数组解法设tree[i]=a[i]-a[i-1](差分)易得 tree[1]+tree[2]+……+tree[i]=a[i]则sum(1,r,a)= a[1]+a[2]+……+a[r-1]+a[r]= tree[1]+(tree[1]+tree[2])+……+(tree[1]+……+tree[r])= (tree[1]*(r))+(tree[2]*(r-.原创 2020-07-28 01:50:22 · 199 阅读 · 1 评论 -
ACM 树状数组(逆序対和三种离散化详解)
树状数组可以用来高效计算区间和,以及改变数组中某数 add[i,k] 后再次计算区间和sum[r]-sum[l](P2068 统计和)(神奇的字符串,见文末)配合差分食用可以在多次对区间同时加减同一数后快速计算第i位的值,即sum[i](P3368 【模板】树状数组 2)还可以配合离散化求逆序対,或求数列中某数前(后)比它大/小的数的数目关于树状数组、逆序対、离散化,逆序対的另外一种解法是归并排序下面两种不同的离散化方法会得到不同的数组!!P1908 逆序对(有重复数字时的离散化详解).原创 2020-07-27 00:31:34 · 258 阅读 · 0 评论 -
通往奥格瑞玛的道路(在可以到达XX的情况下,经过的所有城市中最多的一次收取的费用的最小值是多少(dfs,dij,二分))
P1462 通往奥格瑞玛的道路从某个城市到另一个城市,会遭到联盟的攻击,进而损失一定的血量。这里血量相当于两点之间边的长度每次经过一个城市,都会被收取一定的过路费(包括起点和终点)过路费相当于点的权值在可以到达奥格瑞玛的情况下,他所经过的所有城市中 最多的一次收取的费用 的最小值是多少这道题其实是,只要能苟到奥格瑞玛就行,哪怕血量只剩1都行。然后费用也不是看总和,而是看单次交费的最大值。比如 路径A:1-3-4-5 的收费分别是1,3,3,1, B:1-2-5 的收费分别是1,4,1,这原创 2020-07-24 06:20:55 · 299 阅读 · 1 评论 -
回文质数 Prime Palindromes
P1217 (USACO1.5)回文质数 Prime Palindromes偶数位数回文数(除11)不是质数所以只要运行到 1e7-1 (1e9不是回文数,只用到最大的7位数)偶数肯定不是质数解释一下1,偶数位数回文数都可以写成有偶数个0的 100...001 * n 相加,而 100...001 = 9...991 * 11,故一定不是偶数不过这道题我最终还是打表了 羞愧捂脸,因为我就是想用python加线性素数筛写,但是不是超时就是爆内存,我还是太弱了嘤嘤嘤~附上糟糕的TLE代码,原创 2020-06-25 19:10:56 · 186 阅读 · 0 评论 -
洛谷P1433 吃奶酪和memset
奶酪#include <bits/stdc++.h> using namespace std; double x[16],y[16],dis[16][16],f[1<<16][16]; int main(){ ios::sync_with_stdio(false); int n,i,j,k; cin>>n; for(i=...原创 2020-04-27 13:29:26 · 252 阅读 · 0 评论 -
洛谷p1323删数问题(贪心)(stringstream 流的输入输出)
洛谷p1323重点是删数的循环`#include <bits/stdc++.h>using namespace std;typedef long long ll;priority_queue<ll,vector,greater >gz;string h;int main(){int k,m;cin>>k>>m;gz.push(...原创 2020-04-19 10:43:56 · 295 阅读 · 0 评论 -
UVA 11624 Fire!(BFS广搜)
传送门||os[jx][jy]==-1))没有火或者火无法蔓延到的地方#include <bits/stdc++.h>using namespace std;char los[1009][1009];int os[1009][1009],n,m;int yy[4][2]={{1,0},{-1,0},{0,-1},{0,1}};struct ot{int x,y,z;};...原创 2020-04-08 21:33:07 · 362 阅读 · 0 评论 -
ACM最短路(优化Bellman-ford,前向星+Dijkstra)
P1629 邮递员送信(优化Bellman-ford)题目描述:有一个邮递员要送东西,邮局在节点 1。他总共要送 n-1 样东西,其目的地分别是节点 2 到节点 n。所有的道路都是单行的,共有 m 条道路。邮递员每次只能带一样东西,运送每件物品过后必须返回邮局。求送完这 n−1 样东西并最终回到邮局最少需要的时间。1<=n <=10^31<=m<=10^5这道题数据不大, 用 优化后的 Bellman-ford 和 快读 76msAC加粗的字表明需要分别计算:原创 2020-07-22 01:31:11 · 229 阅读 · 0 评论 -
ACM并查集(两种最最基本的模板,C++)(附最小生成树的Kuskal解法)
有关并查集的详细介绍第一种写法可以看作: 连通分支数-1第二种写法可以看作: n-1-边的数量(n-1是n个点构成连通图的最小边数)比较详细也比较初级的写法一:#include <bits/stdc++.h>using namespace std;int pre[1030];bool t[1030];int root(int x){ int r=x,i=x; while(pre[r]!=r)//找到老大 r=pre[r]; whi原创 2020-07-14 18:19:28 · 197 阅读 · 0 评论