![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
acm
OJ题目专栏
北堂戏子
这个作者很懒,什么都没留下…
展开
-
2020-2021 ACM-ICPC Brazil Subregional Programming Contest
B题意:给你一个格式表示船的位置,求船的位置是否和法思路:水题#include <bits/stdc++.h>#define int long longusing namespace std;map<pair<int,int>,int>mm;void solve(){ mm.clear(); int n; int flag=1; cin>>n; for(int i=1;i<=n;i++) {原创 2020-11-19 18:03:49 · 301 阅读 · 0 评论 -
acm周赛1
C题意:求A*B+C=NA,B,C种类个数#include <bits/stdc++.h>#define int long long//#pragma GCC optimize(2)//#pragma comment(linker, "/STACK:102400000,102400000")using namespace std;void solve(){ int sum=0; int N; cin>>N; for(int i=1;i原创 2020-11-24 11:07:09 · 76 阅读 · 0 评论 -
coderforces #683 div2
A题意:1,2,,,,n对于第j次操作,每一个加j除了选中的一个不加之外让他们变成相同的#include <bits/stdc++.h>#define int long longusing namespace std; void solve(){ int n; cin>>n; cout<<n<<endl; for(int i=1;i<=n;i++) cout<<i<&l原创 2020-11-25 19:50:27 · 61 阅读 · 0 评论 -
coderforces #678 div2
Ausing namespace std;#include <bits/stdc++.h>#define int long long void solve(){ int n,m; cin>>n>>m; int sum=0; for(int i=1;i<=n;i++) { int xx; cin>>xx; sum+=xx; } if(sum原创 2020-12-02 15:48:49 · 134 阅读 · 0 评论 -
Codeforces #679 (Div. 2)
#include <bits/stdc++.h>#define int long longusing namespace std;const int inf=1e10+5;const int maxn=1e5+5;vector<int>a,vv,uu[maxn*6];int b[maxn];map<int,int >ma,car;void solve() { car.clear(); ma.clear(); for(int i=0原创 2020-12-07 21:30:27 · 68 阅读 · 0 评论 -
KMP合集
题意:给你两个串,问你第二个串是从第一个串的什么位置开始完全匹配的? kmp裸题,复杂度O(n+m)。当一个字符串以0为起始下标时,next[i]可以描述为"不为自身的最大首尾重复子串长度"。当发生失配的情况下,j的新值next[j]取决于模式串中T[0 ~ j-1]中前缀和后缀相等部分的长度, 并且next[j]恰好等于这个最大长度。防止超时,注意一些细节。。另外:尽量少用strlen,变量记录下来使用比较好,用字符数组而不用string#include <bits/stdc++.h>原创 2022-01-05 21:15:06 · 118 阅读 · 0 评论 -
2020CCPC绵阳
J线段树赋值更新维护最大值常数级优化同等T下X不同取最大X#include<bits/stdc++.h>using namespace std;const int N=2e5+5;struct Node{ int t,x;}a[N],b[N];bool cmp(Node a,Node b){ if(a.t==b.t) return a.x>b.x; return a.t>b.t;}const int maxn=1e5+5;int tree原创 2022-01-05 21:16:13 · 124 阅读 · 0 评论 -
2020CCPC秦皇岛
E求学生那个通过率定答案求答案然后差分维护#include <bits/stdc++.h>#define int long longusing namespace std;const int maxn=5e5+5;int a[maxn];int case_=0;vector<int>vv;struct node{ int l,r;};node no[maxn];void solve(){ vv.clear(); int n,p;原创 2022-01-05 21:15:22 · 75 阅读 · 0 评论 -
最短路
#include <bits/stdc++.h>//#pragma GCC optimize(2)//#pragma GCC optimize(3,"Ofast","inline")//#pragma comment(linker, "/STACK:102400000,102400000")using namespace std;typedef long long ll;typedef unsigned long long ull;const int MAXN=1000000;c原创 2022-01-05 21:13:13 · 57 阅读 · 0 评论 -
Codeforces #684 (Div. 2)
E题意:比赛结束后因为自己没有调出来而感觉到不甘心,改出来之后忽然发现其实比赛的时候没有AC这题很正常的……还有写哈希习惯性开那个接近2∗107的数字,发现空间挂了开了接近106的数字,却没有想过开107的数字,我在干嘛……首先尝试找点集。类似拓扑排序,每次将度数小于k的点删掉,一直做。如果最后还有点剩余,就说明找到了点集。如果找不到点集,就要尝试找团。再做一遍上面的操作,将限制改成k−1。现在得到了一个新图,每个点的度数至少为k−1。接着判断度数为k−1的点是否在一个团内,判断的时候可以O(k2原创 2022-01-05 21:20:13 · 65 阅读 · 0 评论 -
周赛2020
D#include <bits/stdc++.h>#define int long longusing namespace std;const int maxn=1e6+5;int a[26]={0};int b[maxn];int c[maxn];void init(){ a[0]=1; a['o'-'a']=1; a['e'-'a']=1; a['u'-'a']=1; a['i'-'a']=1;}void solve(){原创 2022-01-05 21:19:52 · 50 阅读 · 0 评论 -
poj1364
poj1364题意 给你序列={a1,a2…an}给你 i 长度 len a [i-----i+len] 的 和(gt) > c (i)t< c问能不能存在这样的序列s[i] 前i 的和s[i+len]-s[i-1] </>c问能不能存在即有负圈spfa这题可能不连通要把所有点当做起点//#include <bits/stdc++.h>#include<iostream>#include<cstdio>#原创 2020-09-13 22:10:47 · 71 阅读 · 0 评论 -
poj3159
分糖果题意:飞鼠分糖果 有点学生 A 不能比B少C即 B-A<=C飞鼠喜欢和是莱蒂比 n 和 1 一共n 个人s[i]表示第i学生分到的糖果s[n]-s[1]最大 最短路径即从1出发 到 n的最短路径m对约束很显然差分约束这题没有说不存在即没有负圈 而且肯定有答案肯定连通 (很水)直接spfa 但是用队列会超dijkstra 直接写//#include <bits/stdc++.h>#include<iostream>#原创 2020-09-13 22:11:04 · 113 阅读 · 0 评论 -
poj1275
poj 1275题意 :一个超市每一个时间段至少需要一定的员工,n个员工来应聘,每一个员工一天工作8小时开始时间在t[i]先给r[ 1-24 ] r[i]表示 i-i+1 时间段需要的员工 r[24] 表示 24-1需要的员工第i个员工 t[i] 时间上班求超市能不能达到需求能的话最少的需求是多少分析:provide[i]表示 i 时间有多少员工应聘在 i-i+8 上工作 暴力可以求出能不能达到需求s[i]表示前i时间实际选的员工 sum 表示一共选择最小的员工p原创 2020-09-13 22:11:20 · 116 阅读 · 0 评论 -
hdu2732
hdu2732#include<cstdio>#include<cstring>#include<algorithm>#include<queue>#include<vector>#include<string>#include<iostream>using namespace std;typedef long long ll;const ll INF=1e18;const int maxn=101原创 2020-09-13 22:10:18 · 120 阅读 · 0 评论 -
hdu2883
hdu2883N个客户 在si 开始 ei 结束(区间)一个机器要烤(n*t)单位时间现在有M个烤肉架问能不能烤完分析源点到每个客户n*t 限制客户烤的时间 客户到单位时间段 INF(M)为 限制 该客户可以在这个时间最多烤多少,单位时间段到汇点为M限制单位时间烤的数量。优化由于时间段数据很大,直接化成单位时间段会T,化为不重复时间段,该时间段到汇点为 len*M#include <bits/stdc++.h>//#include<cstdio>//#inc原创 2020-09-13 22:33:06 · 77 阅读 · 0 评论 -
poj1273
poj 1273最大流给定 有向图 边权 求1-M 的最大流dinic多路增广//#include <bits/stdc++.h>#include<iostream>#include<queue>using namespace std;typedef long long ll;const ll INF=1e18;const int maxn=1e5+5;int N,M;struct point{ int x,y;};point原创 2020-09-13 22:10:33 · 110 阅读 · 0 评论 -
hdu3277
hdu3277题意:女选男,结婚游戏,可以选自己喜欢的,也可以选朋友喜欢的,每次换男的结婚,还可以容忍没有选的男生k次 ,问最多能玩几次(sum)分析二分匹配的改编二分匹配是源点到女孩是1,女孩到男孩是1,男孩到汇点是1之前是源点到女孩是sum,女孩到男孩是1,男孩到汇点是sum(满流,每一个女孩都可以换至少sum次)这是是源点到女孩是sum,女孩到男孩是1,女孩可以选k个不喜欢的男孩玩,新建一个源点,每个女孩到自己源点是k,自己源点到自己不喜欢男孩是1,男孩到汇点是sum(满流,每一个女孩都原创 2020-09-13 22:08:39 · 92 阅读 · 0 评论 -
hdu3338
hdu3338数独题目每个点对两个地方有贡献,已经知道那个值就直接分配就好了随机分配限制1-9 最后一共满足等于那个值 满足最大流条件把一个流(黑框 值)分成几个(白框)流(满流) 白框对(黑框另一个值有贡献) 即汇到一个流(满流)#include <bits/stdc++.h>#include<iostream>#include<queue>using namespace std;typedef long long ll;const ll原创 2020-09-13 22:09:49 · 103 阅读 · 0 评论 -
hdu3572
hdu3572题意有n 个任务 m个 机器 每个任务有一个约束 就是在si 开始 ti结束可以取到边界 要做pi天每一个机器一天只能去做一个任务,问能不能完成所有任务有几个约束1 每个任务从si 到ti 里任意选 pi 天2 每天只能最多m个机器工作 也就是去完成m个不同的任务要用到的类任务 天分析每一个任务 匹配 si 到ti 的天数 让其匹配的关系 流为1那么每一个任务流入的流为pi每一个天流出的流也就为mdinic//#include <bit原创 2020-09-13 22:10:05 · 124 阅读 · 0 评论 -
hdu3081
hdu3081题意:女选男,结婚游戏,可以选自己喜欢的,也可以选朋友喜欢的,每次换男的结婚,问最多能玩几次(sum)分析二分匹配的改编二分匹配是源点到女孩是1,女孩到男孩是1,男孩到汇点是1这个是源点到女孩是sum,女孩到男孩是1,男孩到汇点是sum(满流,每一个女孩都可以换至少sum次)#include <bits/stdc++.h>using namespace std;typedef long long ll;const ll INF=1e18;const int m原创 2020-09-13 22:09:25 · 78 阅读 · 0 评论 -
小白27
题目#include <bits/stdc++.h>//#pragma GCC optimize(2)//#pragma comment(linker, "/STACK:102400000,102400000")using namespace std;typedef long long ll;void init(){}void solve(){ ll a,b,c; cin>>a>>b>>c; if(b*c%a=原创 2020-10-20 22:28:58 · 62 阅读 · 0 评论 -
天梯周赛10-21
#include <bits/stdc++.h>//#pragma GCC optimize(2)//#pragma comment(linker, "/STACK:102400000,102400000")using namespace std;typedef long long ll;void init(){}void solve(){ int n; cin>>n; getchar(); string s; for原创 2020-10-21 16:58:00 · 83 阅读 · 0 评论 -
天梯周赛09-27
题目#include <bits/stdc++.h>using namespace std;void solve(){ int n; string s; cin>>n; getchar(); getline(cin,s); int m=s.size(); int r=m/n+(m%n!=0); for(int i=0;i<n;i++) { for(int j=r-1;j>=0原创 2020-09-28 22:02:45 · 138 阅读 · 0 评论 -
博弈的集合
题目一个树上删边的博弈 和对于每一个结点 u其子结点把他结点化 也就是从叶子结点开始把他的异或和求出来逐个增加也就是说对于那些1 来说就是正常操作对于那些不是1的来说 直接 sg^(w%2)也就是偶数不变 奇数 就相当于 旁边多了一个1 结点#include <bits/stdc++.h>using namespace std;typedef long long ll;const int maxn=1e3+5;struct edge{ int v,w原创 2020-10-09 09:44:36 · 96 阅读 · 0 评论 -
博弈SG函数总结
所有得sg 博弈 或者说是博弈和 无非就是说 谁没得选谁输/谁选了最后一个谁输 (反过来的话是不成立的 )就不是博弈和的问题了 因为 0 你先手败了 但是下一轮是后手先 后手又败了 你先手赢了 0^0=0 但是是先手赢了 这种反 nim 要特别考虑对于 已经知道的 没得选的 (状态D) SG[D]=0 然后其他的 状态 都有他的n个后继 DiSG[D]=mex(SG[D0],SG[D1]…SG[Di]…SG[Dn]);对于每一个状态(如果他是多个状态的和的话)原创 2020-10-09 17:55:32 · 120 阅读 · 0 评论 -
2020hdu多校1
题目hdu6754规律题#include <iostream>#include <cstdio>using namespace std;const int mod=998244353;/*int fastpow(int a,int n){ int res=1; int temp=a; while(n) { if(n&1) { res=(1ll*res*temp)%mod;原创 2020-09-15 23:21:45 · 148 阅读 · 1 评论 -
2020hdu多校2
hdu6772题目暴力优化题#include <bits/stdc++.h>using namespace std;int n,k;typedef struct node{ int a,b,c,d; int next;}node;node no[55];int head[55]={0};int index[55]={0};int T;int cnt;int ans;int bns;int cns;int dns;int res;long l原创 2020-09-15 23:29:13 · 82 阅读 · 0 评论 -
2020hdu多校3
hdu6794题目#include <iostream>using namespace std;int dp[100005];int a[100005];int main(){ ios::sync_with_stdio(0); cin.tie(0),cout.tie(0); int t; dp[0]=0; int res=0; cin>>t; while(t--) { int n,p;原创 2020-09-15 23:36:40 · 119 阅读 · 0 评论 -
2020hdu多校4
hdu6803题目时间是越小越好简单水题#include <iostream>using namespace std;int a[1005];int main(){ ios::sync_with_stdio(0); cin.tie(0),cout.tie(0); int T; cin>>T; while(T--) { int min_=1e9+5; int n; cin&原创 2020-09-22 11:53:45 · 80 阅读 · 0 评论 -
2020hdu多校5
hdu6814题目数学题 海伦公式的推导技巧化简#include <bits/stdc++.h>using namespace std;typedef long long ll;const int INF=1e9+5;const int mod=998244353;const int kk=6e6+5;ll inv[kk];ll sum[kk];void getInv(ll mod){ inv[1]=1; for(int i=2;i<kk;i+原创 2020-09-22 15:23:20 · 93 阅读 · 0 评论 -
2020hdu多校6
hdu6828题目简单模拟#include <iostream>using namespace std;typedef long long ll;string s;ll x,y,z;char c;int flag=-1;int vv;int main(){ while(cin>>s) { vv=0; flag=-1; for(int b=2;b<=16;b++) {原创 2020-09-22 23:16:52 · 376 阅读 · 0 评论 -
2020hdu多校7
hdu6852题目#include <iostream>using namespace std;int main(){ ios::sync_with_stdio(0); cin.tie(0),cout.tie(0); int T; cin>>T; int flag; while(T--) { flag=0; int n,x,y; cin>>n>>原创 2020-09-23 21:31:31 · 82 阅读 · 0 评论 -
2020hdu多校8
hdu6857题目#include <bits/stdc++.h>using namespace std;typedef long long ll;void init(){}void solve(){ ll a,b,c,d,e,f; cin>>a>>b>>c>>d>>e>>f; if((c-a)*(f-b)-(d-b)*(e-a)>0) { cou原创 2020-09-23 23:52:00 · 438 阅读 · 0 评论 -
2020hdu多校9
hdu6867题目#include <bits/stdc++.h>using namespace std;typedef long long ll;const int INF=1e9+5;const int maxn=5e5+5;struct edge{ int v,next;};edge no[maxn];int head[maxn];int sz[maxn];ll mm[maxn];int cnt;void init(int n){ for(原创 2020-09-24 10:58:11 · 106 阅读 · 0 评论 -
2020hdu多校10
hdu6879题目分8和3互质可以表示任意 大于 A*B-A-B(13)的数构造#include <bits/stdc++.h>using namespace std;typedef long long ll;void init(){}void solve(){ int S; int r,c; cin>>S; if(S<=24) { r=S+1; c=1; co原创 2020-09-29 11:19:53 · 117 阅读 · 0 评论 -
ccpc网络选拔赛
hdu6890题目出去先去k,对于每一个快递他都要去取再回头除了最后一个快递他不用回头直接回到1那么特殊处理就行#include <bits/stdc++.h>using namespace std;typedef long long ll;const int maxn=1e6+5;const int inf=1e9+5;int a[maxn];void solve(){ ll sum=0; int n,m,k; int min_=inf;原创 2020-09-29 19:46:15 · 392 阅读 · 0 评论