首页 > 其他分享 >gjoi 2024.9.12

gjoi 2024.9.12

时间:2024-09-13 11:47:01浏览次数:11  
标签:12 cin int 2024.9 up times Ans gjoi define

T1 星天花雨

首先考虑分解 \(k=l\times r\),然后考虑 \(a/b\) 的前缀和中差分为 \(l/r\) 的对数是多少累加进去就行了,这个是好求的。

#include<bits/stdc++.h>
#define up(i,l,r) for(int i=l; i<=r; ++i)
#define dn(i,r,l) for(int i=r; i>=l; --i)
#define pb push_back

using namespace std;

const int N=100005, P=998244353;

int n, m, k, a[N], b[N], L[N], R[N], Ans, flag=1;

void solve(int l,int r) {
	if(l>a[n]||r>b[m]) return;
	if(flag) {
		(Ans+=1ll*(n-l+1)*(m-r+1)%P)%=P;
		return;
	}
	int cnt1=0, cnt2=0;
	up(i,0,a[n]-l) (cnt1+=1ll*L[i]*L[i+l]%P)%=P;
	up(i,0,b[m]-r) (cnt2+=1ll*R[i]*R[i+r]%P)%=P;
	(Ans+=1ll*cnt1*cnt2%P)%=P;
}

signed main() {
	freopen("rain.in","r",stdin);
	freopen("rain.out","w",stdout);
	ios::sync_with_stdio(0);
	cin.tie(0);
	cin >> n >> m >> k, L[0]=R[0]=1;
	up(i,1,n) cin >> a[i], a[i]+=a[i-1], ++L[a[i]];
	up(i,1,m) cin >> b[i], b[i]+=b[i-1], ++R[b[i]];
	up(i,1,n) if(a[i]!=a[i-1]+1) flag=0;
	up(i,1,m) if(b[i]!=b[i-1]+1) flag=0;
	for(int i=1; i*i<=k; ++i) if(k%i==0) {
		solve(i,k/i);
		if(i*i!=k) solve(k/i,i);
	}
	cout << Ans;
	return 0;
}

T2 野火

Bronya 可爱,多测全塞二元环不可爱(二元环二分上界要给到 \(3\times 10^9\)) /fn

就是先考虑二分,树的情况是简单的,二分之后不够的补上得了。

首先基环树中那一部分无用,只考虑环,我们先补满,然后时刻里面环上可以断一条边,我们考虑怎么断最优,首先会想去拿那个 \(d_i\) 最小的断掉,拿回那 \(mid-d_i\) 的部分,然后发现前面 \(d_i\) 时刻还可以断别的,那就考虑给 \(d_i\) 次小的吃这个贡献,所有可能的贡献这个次小一定能吃满,然后就做完了。

#include<bits/stdc++.h>
#define int long long
#define up(i,l,r) for(int i=l; i<=r; ++i)
#define dn(i,r,l) for(int i=r; i>=l; --i)
#define pii pair<int,int>
#define mp make_pair
#define pb push_back

using namespace std;

const int N=200005, inf=1ll<<60;

int n, m, sp, in[N], u[N], v[N], d[N], vis[N];
vector<int> to[N]; queue<int> q; 

void solve1() {
	int l=1, r=3e9, Ans;
	while(l<=r) {
		int mid=(l+r)>>1, ret=0;
		up(i,1,m) if(d[i]<mid) ret+=mid-d[i];
		if(ret<=sp) Ans=mid, l=mid+1;
		else r=mid-1;
	}
	cout << Ans << '\n';
}

void solve2() {
	up(i,1,n) vis[i]=0;
	up(i,1,n) if(in[i]==1) q.push(i);
	while(q.size()) {
		int x=q.front();
		vis[x]=1, q.pop();
		for(int y:to[x]) if(--in[y]==1) q.push(y);
	}
	int l=1, r=3e9, Ans;
	while(l<=r) {
		int mid=(l+r)>>1, ret=0, fir=inf, sec=inf;
		up(i,1,m) if((vis[u[i]]||vis[v[i]])&&d[i]<mid) ret+=mid-d[i];
		up(i,1,m) if(!vis[u[i]]&&!vis[v[i]]&&d[i]<mid) {
			ret+=mid-d[i];
			if(d[i]<fir) sec=fir, fir=d[i];
			else if(d[i]<sec) sec=d[i];
		}
		if(fir<inf) ret-=mid-fir;
		if(sec<inf) ret-=max(mid-sec,0ll)-max(mid-fir-sec,0ll);
		if(ret<=sp) Ans=mid, l=mid+1;
		else r=mid-1;
	}
	cout << Ans << '\n';
}

void mian() {
	cin >> n >> m >> sp;
	up(i,1,n) in[i]=0, to[i].clear();
	up(i,1,m) {
		cin >> u[i] >> v[i] >> d[i];
		++in[u[i]], ++in[v[i]];
		to[u[i]].pb(v[i]), to[v[i]].pb(u[i]);
	} 
	if(m==n-1) solve1(); else solve2();
	
}

signed main() {
	freopen("wildfire.in","r",stdin);
	freopen("wildfire.out","w",stdout);
	ios::sync_with_stdio(0);
	cin.tie(0);
	int id, T;
	cin >> id >> T;
	while(T--) mian();
	return 0;
}

T3 赤玉琉金

image

点对能产生贡献当且仅当一个点集 \(S\) 没有被删除(如上图绿色部分),考虑 \(|S|=x\) 的点对的贡献,不难写出 \(Ans_x=\sum_{t=0}^n\binom{n-x}{t}\times t!\times (n-t)!=\frac{(n-x)!}{(n-x-t)!}\times (n-t)!\),常数 \((n-x)!\) 提出来得到 \(Ans_x=(n-x)!\times \sum_{t=0}^n\frac{(n-t)!}{(n-x-t)!}\),后面那部分还是不好求,但是补成组合数可以组合意义,\(Ans_x=(n-x)!x!\times \sum_{t=0}^n\binom{n-t}{x}=(n-x)!x!\times \sum_{t=0}^n\binom{t}{x}\)。

标签:12,cin,int,2024.9,up,times,Ans,gjoi,define
From: https://www.cnblogs.com/chelsyqwq/p/18411931

相关文章

  • 高等数学--基础复习9到12章P121
    【九-1】多元函数的基本概念--平面点集内点;外点;边界点;连通集;等概念,考的不多【九-2】n维空间【九-3】多元函数的极限类比一元函数的极限【九-4】偏导数定义;怎么求;几何意义;偏导数存在与连续的联系【九-6】全微分【九-7】多元复合函数求导(理论讲解)【九-8】多元复合函数求导......
  • 12V24V30V36V48V52V60V降压恒压芯片IC -H6246 电流简单,外围少,性价比高 仪表盘供电方案
    H6246降压恒压芯片:高效、可靠、多功能的电源管理解决方案在现代电子设备中,电源管理芯片扮演着至关重要的角色。今天,我们要为大家介绍一款性能出色、功能丰富的降压恒压芯片——H6246。这款芯片以其高效、可靠和多功能的特点,成为众多应用场景中的不错选择。高效性能:H6246支持宽电压......
  • 2024/9/12
    数据库连接学习记录今天,我继续学习了关于数据库连接的知识,这对于后续的项目开发至关重要。数据库连接的基本过程包括加载数据库驱动、建立连接、执行SQL操作和关闭连接。通过这四个步骤,应用程序才能与数据库进行有效的交互。我首先了解了不同数据库的连接方式。例如,使用Python的......
  • 【2024潇湘夜雨】WIN10_LTSC2021_21H2.19044.4894软件选装纯净特别版9.12
    【系统简介】=============================================================1.本次更新母盘来自WIN10_LTSC2021_21H2.19044.4894.2.全程离线精简、无人值守调用优化处理制作。部分优化适配系统可能要重启几次,即使显示适配失败也不要在意,可能部分优化不适用。3.OS版本号为19044.48......
  • 代码随想录算法训练营,9月12日 | 513.找树左下角的值,112. 路径总和,106.从中序与后序遍
    513.找树左下角的值题目链接:513.找树左下角的值文档讲解︰代码随想录(programmercarl.com)视频讲解︰找树左下角的值日期:2024-09-12想法:1.迭代:用层序遍历,遍历每层时记录下第一个节点的值,到最后一层就是要求的值;2.递归:根据最大的深度来找目标值。Java代码如下://迭代classSolut......
  • 9.12日常记录
    1.extern关键字1)诞生动机:在一个C语言项目中,需要再多个文件中使用同一全局变量或是函数,那么就需要在这些文件中再声明一遍2)用于声明在其他地方定义的一个变量或是函数,在当前位置只是声明,告诉编译器在链接阶段去其他地方找。  2.strcpy的缺陷1.没有长度检查。2.不返......
  • 2024.9.12 CF1783 VP
    A:先将\(a\)降序排序,此时只有位置\(2\)有可能不满足条件。找到最小的\(i\ge2\)使得\(a_1\neqa_i\)(不存在则无解),然后交换\(a_2,a_i\),即为一个解。点击查看代码#include<bits/stdc++.h>#defineintlonglong#definepsbkpush_back#definefstfirst#definescdse......
  • [20240912]记录使用tnsping遇到的问题.txt
    [20240912]记录使用tnsping遇到的问题.txt--//tnsping用来检测数据库是否连接存在许多局限性,记录自己在使用tnsping遇到的问题.1.环境:--//关闭数据库开启监听.SYS@book>shutdownimmediate;Databaseclosed.Databasedismounted.ORACLEinstanceshutdown.--//服务端监听配置......
  • 今日打卡:洛谷:P1248 加工生产调度/P1251 餐巾计划问题
    昨天虽然打了卡,但是因为时间问题,所以没做题,今天补回来。今天的运势也真服了,我今天没出过门,也不会装逼啊!还有,我不开电脑怎么做题啊?请教问题也找不到人啊!P1248加工生产调度:#include<bits/stdc++.h>usingnamespacestd;structnumber{ intnum,ind; boolsign; boolo......
  • AMD EPYC(霄龙)系列100-000000506、100-000001287、100-000001289、100-000001285 AI处
    AMDEPYC(霄龙)7003系列处理器为主流数据中心服务器树立性能和能效新标杆。相对于前两代产品,新的AMDEPYC7003系列处理器通过改进的工艺实现了基础及Boost频率的提升,并通过架构革新实现了19%的IPC提升。同时,AMD也在IODie中集成了新的安全处理器(SecureProcessor);能够在不影响性能......