2022牛客多校第一场补题

115 篇文章 3 订阅

还差J和H没补,会更

Lexicographical Maximum(签到,字符串字典序)

#include <bits/stdc++.h>
using namespace std;
const double pi = acos(-1);
const double eps=1e-5;
#define x first
#define y second
#define LL long long 
#define int LL
#define pb push_back
#define all(v) (v).begin(),(v).end()
#define PII pair<int,int>
#define ll_INF 0x7f7f7f7f7f7f7f7f
#define INF 0x3f3f3f3f
#define debug(x) cerr << #x << ": " << x << endl
#define io ios_base::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr)
int Mod(LL a,LL mod){return (a%mod+mod)%mod;}
int lowbit(LL x){return x&-x;}//最低位1及其后面的0构成的数值
//void read(__int128 &x){char c = getchar();while (c != '-' & (c < '0' | c > '9'))c = getchar();if (c == '-') {c = getchar();while (c >= '0' & c <= '9') {x = x * 10 + c - '0';c = getchar();}x = 0 - x;} else {while (c >= '0' & c <= '9') {x = x * 10 + c - '0';c = getchar();}}}
//void out(__int128 x) {string c = "";while (x) {c += x % 10 + '0';x /= 10;}reverse(c.begin(), c.end());cout << c << endl;}
int qmi(int a, int k, int p){int res = 1 % p;while (k){if (k & 1) res = Mod(res * a , p);a = Mod(a * a , p);k >>= 1;}return res;}
int _;
int n;
void solve()
{
	string s;
	cin>>s;
	if(s.size()<=1)cout<<s<<endl;
	else
	{
		bool f=false;
		for(int i=0;i<s.size()-1;i++)
		{
			if(s[i]!='9')f=true;
			cout<<'9';
		}
		if(!f)cout<<s[s.size()-1];
	}
}
signed main()
{
    io;
 	//cin>>_; 
 //	while(_--)
    solve();
    return 0;
}

Villages: Landlines(签到,离散化+差分前缀和)

#include <bits/stdc++.h>
using namespace std;
const double pi = acos(-1);
const double eps=1e-7;
#define x first
#define y second
#define LL long long 
#define int LL
#define pb push_back
#define endl '\n'
#define all(v) (v).begin(),(v).end()
#define PII pair<int,int>
#define rep(i,x,n) for(int i=x;i<=n;i++)
#define dwn(i,n,x) for(int i=n;i>=x;i--)
#define ll_INF 0x7f7f7f7f7f7f7f7f
#define INF 0x3f3f3f3f
#define debug(x) cerr << #x << ": " << x << endl
#define io ios_base::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr)
int Mod(LL a,LL mod){return (a%mod+mod)%mod;}
int lowbit(LL x){return x&-x;}//最低位1及其后面的0构成的数值
int qmi(int a, int k, int p){int res = 1 % p;while (k){if (k & 1) res = Mod(res * a , p);a = Mod(a * a , p);k >>= 1;}return res;}
int _;
int n; 
void solve()
{
	cin>>n;
	vector<PII>v;
	rep(i,1,n)
	{
		int a,b;
		cin>>a>>b;
		v.pb({a-b,1});
		v.pb({a+b+1,-1});
	}
	sort(all(v));
	int cnt=0;
	int res=0;
	rep(i,0,v.size()-1)
	{
		if(v[i].y==1)
		{
			if(i&&!cnt)res+=v[i].x-v[i-1].x+1;
			cnt++;
		}
		else cnt--;
	}
	cout<<res<<endl;
}
signed main()
{
    io;
    //cin>>_; 
    //while(_--)
    solve();
    return 0;
}

Mocha and Railgun(简单几何计算)

#include <bits/stdc++.h>
using namespace std;
const double pi = acos(-1);
const double eps=1e-7;
#define x first
#define y second
#define int long long
#define lb long double
#define pb push_back
#define endl '\n'
#define all(v) (v).begin(),(v).end()
#define PII pair<int,int>
#define rep(i,x,n) for(int i=x;i<=n;i++)
#define dwn(i,n,x) for(int i=n;i>=x;i--)
#define ll_INF 0x7f7f7f7f7f7f7f7f
#define INF 0x3f3f3f3f
#define debug(x) cerr << #x << ": " << x << endl
#define io ios_base::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr)
int Mod(int a,int mod){return (a%mod+mod)%mod;}
int lowbit(int x){return x&-x;}//最低位1及其后面的0构成的数值
int qmi(int a, int k, int p){int res = 1 % p;while (k){if (k & 1) res = Mod(res * a , p);a = Mod(a * a , p);k >>= 1;}return res;}
int _;
lb dis(lb x1,lb y1,lb x2, lb y2)
{
	return sqrtl((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
} 
void solve()
{
	lb r;
	lb x,y,d;
	scanf("%Lf%Lf%Lf%Lf",&r,&x,&y,&d);
	lb L=dis(x,y,0,0);
	lb res=acos((L-d)/r)-acos((L+d)/r);
	res*=r;
	printf("%.12Lf\n",res); 
}
signed main()
{
    //io;
    cin>>_; 
    while(_--)
    solve();
    return 0;
}

Chiitoitsu(概率dp求期望值)

#include <bits/stdc++.h>
using namespace std;
const double pi = acos(-1);
const double eps=1e-7;
#define x first
#define y second
#define int long long
#define lb long double
#define pb push_back
#define endl '\n'
#define all(v) (v).begin(),(v).end()
#define PII pair<int,int>
#define rep(i,x,n) for(int i=x;i<=n;i++)
#define dwn(i,n,x) for(int i=n;i>=x;i--)
#define ll_INF 0x7f7f7f7f7f7f7f7f
#define INF 0x3f3f3f3f
#define debug(x) cerr << #x << ": " << x << endl
#define io ios_base::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr)
int Mod(int a,int mod){return (a%mod+mod)%mod;}
int lowbit(int x){return x&-x;}//最低位1及其后面的0构成的数值
int qmi(int a, int k, int p){int res = 1 % p;while (k){if (k & 1) res = Mod(res * a , p);a = Mod(a * a , p);k >>= 1;}return res;}
int inv(int a,int mod){return qmi(a,mod-2,mod);}
int _;
const int mod=1e9+7;
int f[210][21];
int dp(int i,int j)
{
	if(f[i][j]!=-1)return f[i][j];
	if(j==-1)return 0;
	int p1=j*3*inv(i,mod)%mod;
	int p2=(i-j*3)*inv(i,mod)%mod;
	f[i][j]=1+(p1*dp(i-1,j-2)%mod+p2*dp(i-1,j)%mod)%mod;
	return f[i][j];
}
void solve(int idx)
{
	string s;
	cin>>s;
	map<string,int>cnt;
	for(int i=0;i+1<s.size();i+=2)
	{
		string t=s.substr(i,2);
		cnt[t]++;
	}
	int s0=0;
	for(auto [str,c]:cnt)
		if(c==1)
			s0++;
	cout<<"Case #"<<idx<<": "<<dp(123,s0)<<endl;
}
signed main()
{
    io;
    memset(f,-1,sizeof f);
    cin>>_; 
    for(int i=1;i<=_;i++)
    solve(i);
    return 0;
}

Grab the Seat!(几何计算+枚举)

#include <bits/stdc++.h>
using namespace std;
const double pi = acos(-1);
const double eps=1e-7;
#define x first
#define y second
#define int long long
#define lb long double
#define pb push_back
#define endl '\n'
#define all(v) (v).begin(),(v).end()
#define PII pair<int,int>
#define rep(i,x,n) for(int i=x;i<=n;i++)
#define dwn(i,n,x) for(int i=n;i>=x;i--)
#define ll_INF 0x7f7f7f7f7f7f7f7f
#define INF 0x3f3f3f3f
#define debug(x) cerr << #x << ": " << x << endl
#define io ios_base::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr)
int Mod(int a,int mod){return (a%mod+mod)%mod;}
int lowbit(int x){return x&-x;}//最低位1及其后面的0构成的数值
int qmi(int a, int k, int p){int res = 1 % p;while (k){if (k & 1) res = Mod(res * a , p);a = Mod(a * a , p);k >>= 1;}return res;}
int inv(int a,int mod){return qmi(a,mod-2,mod);}
int n,m,k,q;
const int N=2e5+10;
int x[N],y[N],minY[N],con[N][2];
void solve()
{
	cin>>n>>m>>k>>q;
	rep(i,1,k)cin>>x[i]>>y[i];
	while(q--)
	{
		int num;
		cin>>num;
		cin>>x[num]>>y[num];
		rep(i,1,m)minY[i]=n+1;
		rep(i,1,k)minY[y[i]]=min(minY[y[i]],x[i]);
		int now=1;
		con[1][0]=minY[1]-1;
		rep(i,2,m)
		{
			if((now-1)*minY[i]<(i-1)*minY[now])now=i;//逐行处理保存斜率最大的直线。 
			con[i][0]=((i-1)*minY[now]-1)/(now-1);
		}
		now=m;con[m][1]=minY[m]-1;
		dwn(i,m-1,1)
		{
			if((m-now)*minY[i]<(m-i)*minY[now])now=i;
			con[i][1]=((m-i)*minY[now]-1)/(m-now);
		}
		int res=0;
		rep(i,1,m)res+=min(con[i][0],con[i][1]);
		cout<<res<<endl;
	}
}
signed main()
{
    io;
    int _;_=1;
   // cin>>_;
    while(_--)solve();
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

leimingzeOuO

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值