首页 > 其他分享 >【比赛】8.13

【比赛】8.13

时间:2023-08-13 14:44:58浏览次数:45  
标签:ch 比赛 int read while edge 8.13 dis

Ⅰ.波状数列

考试时想到的是用 \(f_{i,0/1}\) 表示用了 前 \(i\) 个数,其中第一个数是山峰还是山谷。比较麻烦。
之前看题解做的时候,用 \(f_{i,j}\) 表示用了前 \(i\) 个数,其中第一个数是 \(j\),滚动数组优化一下。

点击查看代码
#include<bits/stdc++.h>
#define int long long
const int N = 1e3 + 67;
using namespace std;
int read(){
	int x = 0, f = 1; char ch = getchar();
	while(ch < '0' || ch > '9'){f = -f; ch = getchar();}
	while(ch >= '0' && ch <= '9'){x = (x << 1) + (x << 3) + (ch ^ 48); ch = getchar();}
	return x * f;
}
int n, mod;
int f[N][2], C[N][N];
signed main(){
	//freopen("irrev.in", "r", stdin);
	//freopen("irrev.out", "w", stdout);
	n = read(), mod = read();
//	if(n == 1) return printf("%lld\n", 1 % mod), 0;
//	if(n == 2) return printf("%lld\n", 2 % mod), 0;
	f[1][0] = 1, f[1][1] = 1;
	f[2][0] = 1, f[2][1] = 1;
	C[0][0] = 1;
	for(int i = 1; i <= n; ++i){
		C[i][i] = 1, C[i][0] = 1;
		for(int j = 1; j < i; ++j) C[i][j] = C[i - 1][j] + C[i - 1][j - 1], C[i][j] %= mod;
	}
	for(int i = 3; i <= n; ++i){
		f[i][1] = f[i - 1][0];
		if((i - 1) & 1) f[i][0] = f[i - 1][0];
		else f[i][1] += f[i - 1][1];
		for(int j = 2; j < i; ++j){
			if((j - 1) & 1) f[i][0] += f[j - 1][0] * f[i - j][0] % mod * C[i - 1][j - 1] % mod, f[i][0] %= mod;
			else f[i][1] += f[j - 1][1] * f[i - j][0] % mod * C[i - 1][j - 1] % mod, f[i][1] %= mod;
		}
	}
	printf("%lld\n", (f[n][0] + f[n][1]) % mod);
	return 0;
} 

Ⅱ. Steady Cow Assignment


看到 B 的范围很小,显然可以枚举范围,再用网络流判断是否有解。见图的时候,如果每次都重建显然复杂度过高,所以我们可以从前往后依次加边来减小时间复杂度。
网络流边数一定要开大一点。

点击查看代码
#include<bits/stdc++.h>
#define ll long long
#define INF 0x3f3f3f3f
const int N = 2e4 + 67, M = 6e5 + 67;
using namespace std;
int read(){
	int x = 0, f = 1; char ch = getchar();
	while(ch < '0' || ch > '9'){f = -f; ch = getchar();}
	while(ch >= '0' && ch <= '9'){x = (x << 1) + (x << 3) + (ch ^ 48); ch = getchar();}
	return x * f;
}
int n, B, s, t, tot = 1, ans = 25;
int Head[N], to[M << 1], Next[M << 1], edge[M << 1];
void add(int u, int v, int w){
	to[++tot] = v, Next[tot] = Head[u], Head[u] = tot, edge[tot] = w;
	to[++tot] = u, Next[tot] = Head[v], Head[v] = tot, edge[tot] = 0;
}
int a[N][25], b[25];
int d[N], now[N];
bool bfs(){
	memset(d, 0, sizeof(d));
	queue<int> q;
	q.push(s); now[s] = Head[s]; d[s] = 1;
	while(!q.empty()){
		int x = q.front(); q.pop();
		for(int i = Head[x]; i; i = Next[i]){
			int y = to[i]; if(!edge[i] || d[y]) continue;
			now[y] = Head[y], d[y] = d[x] + 1; q.push(y);
			if(y == t) return true;
		}
	}
	return false;
}
int dinic(int x, int flow){
	if(x == t) return flow;
	int rest = flow;
	for(int i = now[x]; i && rest; i = Next[i]){
		int y = to[i]; now[x] = i;
		if(!edge[i] || d[y] != d[x] + 1) continue;
		int k = dinic(y, min(rest, edge[i]));
		if(!k) d[y] = 0;
		edge[i] -= k, edge[i ^ 1] += k, rest -= k;
	}
	return flow - rest;
}
signed main(){
//	freopen("stead.in", "r", stdin);
//	freopen("stead.out", "w", stdout);
	n = read(), B = read(), s = n + B + 1, t = n + B + 2;
	for(int i = 1; i <= n; ++i)
		for(int j = 1; j <= B; ++j)
			a[i][j] = read();
	for(int i = 1; i <= B; ++i) b[i] = read();
	for(int o = 1; o <= B; ++o){
		memset(Head, 0, sizeof(Head));
		for(int i = 1; i <= n; ++i) add(s, i, 1);
		for(int i = 1; i <= B; ++i) add(n + i, t, b[i]);
		int flow = 0, maxflow = 0;
		for(int j = o; j <= B; ++j){
			for(int i = 1; i <= n; ++i) add(i, a[i][j] + n, 1);
			while(bfs())
				while(flow = dinic(s, INF)) maxflow += flow;
			if(maxflow == n){
				ans = min(ans, j - o + 1);
				break;
			}
		}
	}
	printf("%d\n", ans);
	return 0;
} 

Ⅲ.导航软件



分层图模板

点击查看代码
#include<bits/stdc++.h>
#define ll long long
const int N = 5e5 + 67, M = 5e6 + 67;
using namespace std;
int read(){
	int x = 0, f = 1; char ch = getchar();
	while(ch < '0' || ch > '9'){f = -f; ch = getchar();}
	while(ch >= '0' && ch <= '9'){x = (x << 1) + (x << 3) + (ch ^ 48); ch = getchar();}
	return x * f;
}
int n, m, k, tot;
int Head[N], Next[M << 1], edge[M << 1], to[M << 1];
ll dis[N];
bool vis[N];
void add(int u, int v, int w){
	to[++tot] = v, Next[tot] = Head[u], Head[u] = tot, edge[tot] = w;
}
priority_queue<pair<int, int> > pq;
void dijkstra(int s){
	pq.push(make_pair(0, s));
	dis[s] = 0;
	while(!pq.empty()){
		int x = pq.top().second; pq.pop();
		if(vis[x]) continue; vis[x] = 1; 
		for(int i = Head[x]; i; i = Next[i]){
			int y = to[i]; 
			if(dis[y] > dis[x] + edge[i]){
				dis[y] = dis[x] + edge[i];
				pq.push(make_pair(-dis[y], y));
			}
		}
	}
}
signed main(){
//	freopen("navigation.in", "r", stdin);
//	freopen("navigation.out", "w", stdout);
	memset(dis, 0x3f, sizeof(dis));
	n = read(), m = read(), k = read();
	for(int i = 1; i <= m; ++i){
		int u = read(), v = read(), w = read();
		add(u, v, w), add(v, u, w);
		for(int j = 1; j <= k + 1; ++j){
			int u1 = u + (j - 1) * n, v1 = v + (j - 1) * n;
			int u2 = u + j * n, v2 = v + j * n;
			add(u1, v1, w), add(v1, u1, w);
			add(u1, v2, 0), add(v1, u2, 0);
		}
	}
	dijkstra(1);
	ll ans = dis[n];
	for(int i = 1; i <= k; ++i) ans = min(ans, dis[n + n * i]);
	printf("%lld\n", ans);
	return 0;
} 

Ⅳ.LYK loves music



点击查看代码
#include<bits/stdc++.h>
using namespace std;
const int N=2e5+11;
int n,m,Q,cnt,lstans,rt[N];
struct Pos{int id,v;}a[N];
struct Seg{int l,r,t,v;}tr[N*50];
inline bool cmp(Pos x,Pos y){return x.v<y.v;}
#define ls tr[q].l
#define rs tr[q].r
#define Ls tr[p].l
#define Rs tr[p].r
void give(int q,int p){ls=Ls;rs=Rs;tr[q].t=tr[p].t;tr[q].v=tr[p].v;}
void update(int q){tr[q].v=tr[q].t+min(tr[ls].v,tr[rs].v);}
void ins(int &q,int p,int l,int r,int L,int R,int v){
    if(r<L||l>R) return ;
    q=++cnt;give(q,p);
    int mid=l+r>>1;
    if(l>=L&&r<=R) tr[q].t+=v;
    else ins(ls,Ls,l,mid,L,R,v),ins(rs,Rs,mid+1,r,L,R,v);
    update(q);
}
int query(int q,int l,int r,int L,int R){
    if(l>=L&&r<=R) return tr[q].v;
    int mid=l+r>>1,re=N;
    if(mid>=L) re=min(re,query(ls,l,mid,L,R));
    if(mid<R) re=min(re,query(rs,mid+1,r,L,R));
    return tr[q].t+re;
}
int lower(int v){
    int l=1,r=n,re=0;
    while(l<=r){
        int mid=l+r>>1;
        if(a[mid].v<v) re=mid,l=mid+1;
        else r=mid-1;
    }return re;
}
int read(){
    int x=0,f=1;char ch=getchar();
    while(!isdigit(ch)){if(ch=='-')f=-f;ch=getchar();}
    while(isdigit(ch)){x=x*10+ch-48;ch=getchar();}
    return x*f;
}
signed main(){
    n=read(),m=read();
    for(int i=1;i<=n;i++) a[a[i].id=i].v=read();
    sort(a+1,a+n+1,cmp);
    for(int i=1;i<=n;i++)
        ins(rt[i],rt[i-1],1,n,max(a[i].id-m+1,1),a[i].id,1);
    int Q=read();
    for(int i=1;i<=Q;i++){
        int l=read(),r=read(),v=read();
        v=v^lstans;int p=lower(v);
        lstans=query(rt[p],1,n,l,r);
        printf("%d\n",lstans);
    }
    return 0;
}

标签:ch,比赛,int,read,while,edge,8.13,dis
From: https://www.cnblogs.com/jiangchen4122/p/17626548.html

相关文章

  • 8.7-8.13学习总结博客五:Hive进阶与复杂查询
    博客题目:学习总结五:Hive进阶与复杂查询实践内容概要:学习Hive进阶的使用方法,包括复杂查询、数据转换和性能优化等方面的知识。学习资源:推荐的Hive进阶教程、实践案例和性能优化技巧。实践内容:通过编写复杂的Hive查询语句,探索Hive的高级功能和性能优化方法,并分享实践中的挑战和解决......
  • 20230810比赛
    T1队列变换DescriptionFJ打算带他的N(1<=N<=30,000)头奶牛去参加一年一度的“全美农场主大奖赛”。在这场比赛中,每个参赛者都必须让他的奶牛排成一列,然后领她们从裁判席前依次走过。今年,竞赛委员会在接受队伍报名时,采用了一种新的登记规则:他们把所有队伍中奶牛名字的首字......
  • 人工智能/数据科学比赛汇总 2019.9
    Github:iphysresearch/DataSciComp本项目由ApacheCN强力支持。微博|知乎|简书|全球数据智能大赛(2019)——“数字人体”赛场一:肺部CT多病种智能诊断https://tianchi.aliyun.com/competition/entrance/231724/6月24-9月09,2019//Hostby天池//Prize:$900,000Note:......
  • 射击比赛
    1.题目给定一个射击比赛成绩单包含多个选手若干次射击的成绩分数请对每个选手按其最高三个分数之和进行降序排名输出降序排名后的选手ID序列条件如下:一个选手可以有多个射击成绩的分数且次序不固定如果一个选手成绩小于三个则认为选手的所有成绩无效排名忽略该选手......
  • 【比赛·总结】2023.8 学而思Z6模拟赛
    2023.8学而思Z6模拟赛考试界面:(隐藏)题解反思在本次考试中,作者惨遭爆零。警钟长鸣\(3\)分钟。作者认为,爆零的主要原因在于作者并没有遵从“遇到难题则跳过”的原则,疯狂卡在第一题上,从第\(0\)分钟一直到最后\(1\)秒,除了其中写了一个第二题的暴力,还因为读错题没得分以外,其......
  • 篮球比赛现场信息管理实时展示系统-开发随笔1
    关键字:篮球比赛排球比赛足球比赛 比赛管理训练管理训练数据采集实时展示比赛报分比分展示LED大屏场馆大屏[当前现状]体育场馆内的LED显示屏作为广告、比赛信息显示和比赛实况播放最重要的载体之一,已成为现代化体育场馆的必备设施。各类体育赛事通过显示屏传达给更多......
  • 「闲话」NOI 2023 比赛总结
    Day1打开题面,看到两道计数题,有点小惊讶——根据以往的题目类型看,NOI在一天中出现两道计数类型的题目确实比较罕见。不过冷静了一下,也许这也不是坏事。毕竟数数题是我很擅长的题目。但在NOI以后我意识到并不是这样。读题的时候就觉得这个T1应该非常easy,那就先开T1,越想......
  • CTF比赛复现(我愿称之为狱后改造)
    CTF比赛复现(我愿称之为狱后改造)DASCTF2023&0X401七月暑期挑战赛ez_cms后台文件包含漏洞,弱口令密码登入后台admin123456pearcmd文件包含漏洞W4师傅的关于利用pearcmd进行文件包含的一些总结p神pecl是PHP中用于管理扩展而使用的命令行工具,而pear是pecl依赖的类库。在7.......
  • CTF比赛中Web的php伪协议类型题小结
    php协议类型file://—访问本地文件系统http://—访问HTTP(s)网址ftp://—访问FTP(s)URLsphp://—访问各个输入/输出流(I/Ostreams)zlib://—压缩流data://—数据(RFC2397)glob://—查找匹配的文件路径模式phar://—PHP归档1.php伪协议:需要开启allo......
  • 第二次比赛部分题解
    P7060[NWRRC2014]AlarmClock  #include<bits/stdc++.h>usingnamespacestd;intmain(){intn;cin>>n;intarr[10]={6,2,5,5,4,5,6,3,7,6};boolcheck=false;//对于时间ab:cdfor(inta=0;a<=2;a++){//a最多可以到2(因为最大为23......