首页 > 其他分享 >团队练习记录2024.10.23

团队练习记录2024.10.23

时间:2024-10-24 15:47:40浏览次数:6  
标签:2024.10 return 23 ll 练习 x% ans include mod

比赛链接:https://codeforces.com/gym/104976

D.Operator Precedence


队友解的,想办法让第二个式子中括号内数值为1,所以就2,-1交替,最后一个选1可逆推,第一个为2*n-3

#include<iostream>
#include<queue>
#include<map>
#include<set>
#include<vector>
#include<algorithm>
#include<deque>
#include<cctype>
#include<string.h>
#include<math.h>
#include<time.h>
#include<random>
#include<stack>
#include<string>
#define lowbit(x) (x & -x)
using namespace std;
mt19937 rnd(time(0));
//const ll p=rnd()%mod;
typedef long long ll;
const ll mod=1e9+7;
const ll N=2e5+5;
ll ksm(ll x,ll y)
{
	ll ans=1;
	while(y)
	{
		if(y&1)
		ans=(ans%mod*x%mod)%mod;
		x=x%mod*(x%mod)%mod;
		y>>=1;
	}
	return ans%mod%mod;
}
ll gcd(ll x,ll y)
{
	if(y==0)
	return x;
	else 
	return gcd(y,x%y);
}
void fio()
{
		ios::sync_with_stdio(0);
		cin.tie(0);
		cout.tie(0);
}
ll query(ll l,ll r)
{
	cout<<"?"<<" "<<l<<" "<<r<<endl;
	cout.flush();
	ll x;
	cin>>x;
	return x;
}
ll a[2500000];
int main()
{
	fio();
	ll t;
	cin>>t;
	while(t--)
	{
		ll n;
		cin>>n;
		cout<<2*n-3<<" ";
		for(ll i=2;i<=2*n-1;i++)
		{
			if(i%2==0)
			cout<<2<<" ";
			else 
			cout<<-1<<" ";
		}
		cout<<1<<endl;
	}
}

G.Snake Move


模2的64次方,其实意味着你得开unsigned long long统计最后答案,
对于bfs,如果你到了某个点无非就是这个时候的距离,或者等待蛇身离开

#include<iostream>
#include<queue>
#include<map>
#include<set>
#include<vector>
#include<algorithm>
#include<deque>
#include<cctype>
#include<string.h>
#include<math.h>
#include<time.h>
#include<random>
#include<stack>
#include<string>
#define lowbit(x) (x & -x)
using namespace std;
//mt19937 rnd(time(0));
typedef long long  ll;
const ll mod=1e9+7;
const ll N=2e5+5;
ll ksm(ll x,ll y)
{
	ll ans=1;
	while(y)
	{
		if(y&1)
		ans=(ans%mod*x%mod)%mod;
		x=x%mod*(x%mod)%mod;
		y>>=1;
	}
	return ans%mod%mod;
}
ll gcd(ll x,ll y)
{
	if(y==0)
	return x;
	else 
	return gcd(y,x%y);
}
void fio()
{
		ios::sync_with_stdio(0);
		cin.tie(0);
		cout.tie(0);
}
bool vis[4000][4000];
ll vi[4000][4000];
ll dis[4000][4000];
ll a[4]={0,1,0,-1};
ll b[4]={1,0,-1,0};
ll gs=0;
	ll n,m,k;
void bfs(ll x,ll y)
{
	priority_queue<pair<ll,pair<ll,ll>>,vector<pair<ll,pair<ll,ll>>>,greater<pair<ll,pair<ll,ll>>>>q;
	q.push({0,{x,y}});
	dis[x][y]=0;
	while(!q.empty())
	{
		ll x=q.top().second.first;
		ll y=q.top().second.second;
		ll Dis=q.top().first;
		q.pop();
		ll u;
		vis[x][y]=1;
		for(ll i=0;i<=3;i++)
		{
			ll nx=x+a[i];
			ll ny=y+b[i];
			if(nx<1||nx>n||ny<1||ny>m||vis[nx][ny])
			{
				continue;
			}
			else 
			{
				if(vi[nx][ny])
				{
					u=max(dis[x][y]+1,vi[nx][ny]+1);
				}
				else u=dis[x][y]+1;
				dis[nx][ny]=u;
			q.push({dis[nx][ny],{nx,ny}});
			vis[nx][ny]=1;
			}
		}	
	}
}
int main()//附着花费
{
	fio();
	cin>>n>>m>>k;
	ll s1=0,s2=0;
	for(ll i=1;i<=k;i++)
	{
		ll x,y;
		cin>>x>>y;
		if(s1==0)
		{
			s1=x,s2=y;
		}
		if(i>=2)
		{
			vi[x][y]=k-i;
		}
	}
	for(ll i=1;i<=n;i++)
	{
		for(ll j=1;j<=m;j++)dis[i][j]=99999999999;
	}
	for(ll i=1;i<=n;i++)
	{
		for(ll j=1;j<=m;j++)
		{
			char g;
			cin>>g;
			if(g=='#')vis[i][j]=1;
		}
	}
	//cout<<s1<<" "<<s2<<endl;
	bfs(s1,s2);
	unsigned long long  ans=0;
	for(ll i=1;i<=n;i++)
	{
		for(ll j=1;j<=m;j++)
		{
			if(dis[i][j]==99999999999){
				continue;
			}
			//cout<<i<<" "<<j<<" "<<dis[i][j]<<endl;
			ans+=dis[i][j]*dis[i][j];
		}
	}
	cout<<ans<<endl;
}

H. Sugar Sweet II


队友推得概率和深度有关,然后就是先把非环特判,然后有环都认为糖果为基础糖果即可

#include<iostream>
#include<queue>
#include<map>
#include<set>
#include<vector>
#include<algorithm>
#include<deque>
#include<cctype>
#include<string.h>
#include<math.h>
#include<time.h>
#include<random>
#include<stack>
#include<string>
#define lowbit(x) (x & -x)
using namespace std;
mt19937 rnd(time(0));
typedef long long ll;
const ll mod=1e9+7;
const ll N=2e5+5;
ll ksm(ll x,ll y)
{
	ll ans=1;
	while(y)
	{
		if(y&1)
		ans=(ans%mod*x%mod)%mod;
		x=x%mod*(x%mod)%mod;
		y>>=1;
	}
	return ans%mod%mod;
}
ll p1=ksm(2,mod-2);
ll gcd(ll x,ll y)
{
	if(y==0)
	return x;
	else 
	return gcd(y,x%y);
}
void fio()
{
		ios::sync_with_stdio(0);
		cin.tie(0);
		cout.tie(0);
}
ll query(ll l,ll r)
{
	cout<<"?"<<" "<<l<<" "<<r<<endl;
	cout.flush();
	ll x;
	cin>>x;
	return x;
}
struct s
{
	ll x,y,w;
}p[550000];
struct f
{
	ll x,y,w;
};
vector<ll>g[555000];
bool vi[550000];
ll ans[552000];
ll in[550000];
ll op[555000];
ll cs=0;
ll ou[550000];
void bfs(ll x,ll sd,ll cd)
{
	queue<f>q;
	q.push({x,sd,cd});
	//cout<<x<<endl;
	while(!q.empty())
	{
		ll x=q.front().x;
		ll sd=q.front().y;
		ll cd=q.front().w;
		for(auto j:g[x])
		{
			in[j]--;
			if(in[j]==0)
			{
				q.push({j,sd+1,(cd%mod*ksm(sd+1,mod-2)%mod)%mod});
				ll cg=(cd%mod*ksm(sd+1,mod-2)%mod)%mod;
				ans[j]=cg*((p[j].x+p[j].w)%mod)%mod;
				ans[j]+=((1-cg%mod+1000*mod)%mod*(p[j].x)%mod)%mod;
				ans[j]%=mod;
			}
		}
		q.pop();
	}
}
int main()
{
	fio();
	ll t;
	cin>>t;
	while(t--)
	{
		ll n;
		cin>>n;
		for(ll i=1;i<=n;i++)cin>>p[i].x,g[i].clear();
		for(ll i=1;i<=n;i++)cin>>p[i].y,vi[i]=0,in[i]=0,ou[i]=0;
		for(ll i=1;i<=n;i++)cin>>p[i].w,op[i]=0;
		set<ll>q;
		for(ll i=1;i<=n;i++)
		{
			if(p[i].y==i)
			{
				op[i]=0;
				ans[i]=p[i].x;
			}
			else if(p[p[i].y].x>p[i].x)
			{
				op[i]=1;
				ans[i]=p[i].x+p[i].w;
				ans[i]%=mod;
				q.insert(i);
				//cout<<i<<endl;
			}
			else if(p[p[i].y].x+p[p[i].y].w<=p[i].x)
			{
				op[i]=0;
				ans[i]=p[i].x;
				ans[i]%=mod;
				q.insert(i);
			}
			else g[p[i].y].push_back(i),in[i]++;
		}
		//cout<<ans[2]<<" "<<ans[4]<<endl;
		for(auto j:q)
		{
			bfs(j,1,op[j]);
			vi[j]=1;
		}
		for(ll i=1;i<=n;i++)
		{
			if(in[i]>0)
			cout<<p[i].x%mod<<" ";
			else 
			cout<<ans[i]%mod<<" ";
		}
		cout<<endl;
	}
}

J. Mysterious Tree


注意题目给的是树,然后二二配对问就好了

#include<iostream>
#include<queue>
#include<map>
#include<set>
#include<vector>
#include<algorithm>
#include<deque>
#include<cctype>
#include<string.h>
#include<math.h>
#include<time.h>
#include<random>
#include<stack>
#include<string>
#define lowbit(x) (x & -x)
using namespace std;
mt19937 rnd(time(0));
//const ll p=rnd()%mod;
typedef long long ll;
const ll mod=1e9+7;
const ll N=2e5+5;
ll ksm(ll x,ll y)
{
	ll ans=1;
	while(y)
	{
		if(y&1)
		ans=(ans%mod*x%mod)%mod;
		x=x%mod*(x%mod)%mod;
		y>>=1;
	}
	return ans%mod%mod;
}
ll gcd(ll x,ll y)
{
	if(y==0)
	return x;
	else 
	return gcd(y,x%y);
}
void fio()
{
		ios::sync_with_stdio(0);
		cin.tie(0);
		cout.tie(0);
}
ll query(ll l,ll r)
{
	cout<<"?"<<" "<<l<<" "<<r<<endl;
	cout.flush();
	ll x;
	cin>>x;
	return x;
}
ll a[2500000];
int main()
{
	fio();
		ll t;
		cin>>t;
		while(t--)
		{
			ll n;
			cin>>n;
			for(ll i=1;i<=n;i++)a[i]=0;
			if(n%2==0)
			{
				for(ll i=1;i<=n/2;i++)
				{
					a[i]=query(i,i+n/2);
				}
				ll ans=0;
				ll wz;
				for(ll i=1;i<=n/2;i++)
				{
					ans+=a[i];
					if(a[i]==1)
					wz=i;
				}
				if(ans==0||ans>=2)//必须为1,如果为星
				{
					cout<<"!"<<" "<<1<<endl;
				}
				else 
				{
					ll pd;
					if(wz==1)
					pd=2;
					else pd=1;
					ll cnt=query(wz,pd);
					if(cnt==1)
					{
						if(query(wz,pd+n/2)==1)
						{
							cout<<"!"<<" "<<2<<endl;
						}
						else cout<<"!"<<" "<<1<<endl;
					}
					else 
					{
						if(query(wz+n/2,pd)==1&&query(wz+n/2,pd+n/2)==1)
						{
							cout<<"!"<<" "<<2<<endl;
						}
						else  cout<<"!"<<" "<<1<<endl;
					}
				}
			}
			else
			{
				ll sum=0;
				ll wz;
				for(ll i=1;i<=n/2;i++)
				{
					a[i]=query(i,i+n/2);//1 3 2 4
					sum+=a[i];
					if(a[i]==1)
					wz=i;
				}
				if(sum>=2)
				{
					cout<<"!"<<" "<<1<<endl;
				}
				else if(sum==1)
				{
					ll pd;
					if(wz==1)
					pd=2;
					else pd=1;
					if(query(wz,n)==1)
					{
						if(query(wz,pd)==1)
						{
							cout<<"!"<<" "<<2<<endl;
						}
						else 
						{
							cout<<"!"<<" "<<1<<endl;
						}
					}
					else
					{
						if(query(wz+n/2,n)==0)
						{
							cout<<"!"<<" "<<1<<endl;
						}
						else 
						{
							if(query(wz+n/2,pd)==1)
							{
								cout<<"!"<<" "<<2<<endl;
							}
							else 
							{
								cout<<"!"<<" "<<1<<endl;
							}
						}
					}
				}
				else 
				{
					if(query(1,n)==1&&query(2,n)==1&&query(3,n)==1)
					{
						cout<<"!"<<" "<<2<<endl;
					}
					else 
						cout<<"!"<<" "<<1<<endl;
				}
			}
		}
}

M. V-Diagram


最大值就是V+单边或者双边

#include<iostream>
#include<queue>
#include<map>
#include<set>
#include<vector>
#include<algorithm>
#include<deque>
#include<cctype>
#include<string.h>
#include<math.h>
#include<time.h>
#include<random>
#include<stack>
#include<string>
#define lowbit(x) (x & -x)
using namespace std;
mt19937 rnd(time(0));
//const ll p=rnd()%mod;
typedef long long ll;
const ll mod=1e9+7;
const ll N=2e5+5;
ll ksm(ll x,ll y)
{
	ll ans=1;
	while(y)
	{
		if(y&1)
		ans=(ans%mod*x%mod)%mod;
		x=x%mod*(x%mod)%mod;
		y>>=1;
	}
	return ans%mod%mod;
}
ll gcd(ll x,ll y)
{
	if(y==0)
	return x;
	else 
	return gcd(y,x%y);
}
void fio()
{
		ios::sync_with_stdio(0);
		cin.tie(0);
		cout.tie(0);
}
ll a[450000];
int main()
{
//fio();
ll t;
cin>>t;
while(t--)
{
ll n;
scanf("%lld",&n);
for(ll i=1;i<=n;i++)
{
	scanf("%lld",&a[i]);
}
ll wz=0;
for(ll i=2;i<=n-1;i++)
{
	if(a[i-1]>a[i]&&a[i]<a[i+1])
	{
		wz=i;
		break;
	}
}
double ans=0;
ll cnt=0;
for(ll i=1;i<=wz;i++)
{
	cnt+=a[i];
}
for(ll i=wz+1;i<=n;i++)
{
	//double k=
	cnt+=a[i];
	ans=max(ans,(double)cnt/i);
}
cnt=0;
for(ll i=wz;i<=n;i++)
{
	cnt+=a[i];
}
//cout<<wz<<endl;
for(ll i=wz-1;i>=1;i--)
{
	cnt+=a[i];
	ans=max(ans,(double)cnt/(n-wz+1+(wz-i)));
}
printf("%.20lf\n",ans);
}
}

标签:2024.10,return,23,ll,练习,x%,ans,include,mod
From: https://www.cnblogs.com/cjcf/p/18499736

相关文章

  • 2003-2023年 投资者情绪指数ISI以及CICSI数据
    ISI是一种量化工具,它通过一系列指标来衡量市场参与者的情绪。这些指标包括但不限于市场交易量、IPO首日收益率、新增投资者开户数等。ISI的设计旨在捕捉投资者的过度乐观或悲观情绪,从而揭示市场估值的潜在偏差。2003-2023年投资者情绪指数ISI以及CICSI数据().zip资源-CSDN文库ht......
  • 20222305 2024-2025-1 《网络与系统攻防技术》实验三实验报告
    网络攻防实验报告姓名:田青学号:20222305实验日期:2024/10/18—2024/10/31实验名称:后门原理与实践指导教师:王志强1.实验内容本周学习内容总结:1.用户态(ring3)和内核态(ring0),切换时机:系统调用、中断、异常。2.自启动技术。3.进程隐藏技术实现:1>改名2>基于系统服务的伪装3>......
  • 大话C++:第23篇 输入输出
    1输入输出概述C++输入输出(I/O)是C++编程语言中非常重要的一部分,它涉及到从外部设备(如键盘、文件等)读取数据以及将数据写入到这些设备中。C++提供了一套丰富的I/O库,程序员可以使用这些库来执行各种输入输出操作。C++的I/O操作主要依赖于<iostream>头文件,它定义了用于输入输出......
  • 20222327 2024-2025-1 《网络与系统攻防技术》实验三实验报告
    一、实验内容1.正确使用msf编码器,veil-evasion,自己利用shellcode编程等免杀工具或技巧2.通过组合应用各种技术实现恶意代码免杀3.用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本4.问题回答(1)杀软是如何检测出恶意代码的?基于特征码检测:杀毒软件中......
  • 20222317 2024-2025-1 《网络与系统攻防技术》实验三实验报告
    一、实验内容本次实验目的为通过多次加密、文件格式欺骗、填充、加壳等技术手段实现恶意代码免杀,产生恶意程序,并尝试通过杀毒软件,不被杀毒软件检测出来。具体实验内容如下:1.正确使用msf编码器,使用msfvenom生成如jar之类的其他文件;2.能够使用veil,加壳工具;3.能够使用C+shellcode......
  • 2024.10.24 1234版
    起于《海奥华预言》的思考◆地球管理结构和参考持续更新中...... 英文地址:https://github.com/zhuyongzhe/Earth/tags中文地址:https://www.cnblogs.com/zhuyongzhe85作者:朱永哲 ---------------------------------------------------------------------------------......
  • 2024.10.23
      今天有些小忙。  中午和陈处去吃了一直久闻大名的铁锅炖,遗憾地发现其实也不过如此。吃饭时路上偶然谈到冬旭,算起来他已经走了1年半有余,而离我收到讣告几乎刚好一年。中间相差的半年,陈处一直不告诉我,这一点我至今不太能理解。可能那时候他真的,一想起此事就控制不住自......
  • 【2024-10-23】生活主干道
    20:00梧叶新黄柿叶红,更兼乌桕与丹枫。只言山色秋萧索,绣出西湖三四峰。                                                 ——《秋山秋雨蚤作有叹》 宋·杨万里昨天下......
  • STM32H723 ADC+DMA 误差解决
    很多论坛提到STM32H723ADC不准的问题,在安富莱的论坛上很多。实测STM32CubeFW_H7V1.9.1这个库生成的ADC的驱动代码可以实现ADC的精确测量。需要注意的是在ADC的初始化后,要对ADC进行校准,如果不进行校准ADC1ADC2会有50个ADC左右的误差,ADC3有接近130个ADC值得误差。`voidMX_AD......
  • 2024/10/23 模拟赛总结
    赛时情况以下是赛时写的。14:10好像当\(n\lem\)时的答案是\(2^n\)。14:20当\(m=2\)时,答案的差值是一个等差数列。答案为\(\dfrac{n(n+1)}{2}+1\)。小样例:\(n=4,m=3\)答案为\(15\)。14:50T1不会啊,润。发现如果你会惹老师生气,干脆直接不写。所以变成了选若干科......