Daiwa Securities Co. Ltd. Programming Contest 2023(AtCoder Beginner Contest 331)

Daiwa Securities Co. Ltd. Programming Contest 2023(AtCoder Beginner Contest 331) - AtCoder

#include<bits/stdc++.h>
using namespace std;
#define int long long

signed main(){
	int M,D,y,m,d;
  	cin>>M>>D>>y>>m>>d;
 	 d++;
  	if(d>D)
  	{
  		m++;
  		d=1;
  	}
  	if(m>M)
  	{
  		m=1;
  		y++;
	}
	cout<<y<<" "<<m<<" "<<d;
}

#include<bits/stdc++.h>
using namespace std;
#define int long long

signed main(){
	int N,S,M,L;
	cin>>N>>S>>M>>L;
	int ans=1e9;
	for(int i=0;i<=N;i++)
	{
		for(int j=0;j<=N;j++)
		{
			for(int k=0;k<=N;k++)
			{
				if(i*6+j*8+k*12>=N) ans=min(ans,i*S+j*M+k*L);
			}
		}
	}
	cout<<ans;
}

#include<bits/stdc++.h>
using namespace std;
#define int long long
#define pb push_back

signed main(){
	int n;
	cin>>n;
	vector<int> number;
	vector<int> A(n);
	vector<int> sum(n+1);
	for(int &x:A)
	{
		cin>>x;
		number.pb(x);
	}
	sort(number.begin(),number.end());
	for(int i=n-1;i>=0;i--) sum[i]=number[i]+sum[i+1];
	for(int i=0;i<n;i++)
	{
		auto pos=upper_bound(number.begin(),number.end(),A[i])-number.begin();
		cout<<sum[pos]<<(i+1<n?' ':'\n');
	}
}

#include<bits/stdc++.h>
using namespace std;
#define int long long
#define pb push_back
int n;
const int N=1024;
int dp[N][N];

int f(int x,int y)
{
	int res=(x/n)*(y/n)*dp[n][n];
	res+=dp[x%n][y%n];
	res+=dp[x%n][n]*(y/n);
	res+=dp[n][y%n]*(x/n);
	return res;
}

signed main(){
	int q;
	cin>>n>>q;
	char P[N][N];
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=n;j++)
		{
			cin>>P[i][j];
			dp[i][j]=(P[i][j]=='B')+dp[i-1][j]+dp[i][j-1]-dp[i-1][j-1];
		}
	}
	while(q--)
	{
		int a,b,c,d;
		cin>>a>>b>>c>>d;
		c++;
		d++;
		cout<<f(c,d)-f(a,d)-f(c,b)+f(a,b)<<endl;
	}
}

#include<bits/stdc++.h>
using namespace std;
#define int long long
#define pb push_back

signed main() {
  	int N, M, L;
  	cin >> N >> M >> L;
  	vector<int> a(N), b(M);
  	for (auto& x : a) cin >> x;
  	for (auto& x : b) cin >> x;
  	set<pair<int, int>> bad;
  	for (int i = 0; i < L; i++) {
    	int c, d;
    	cin >> c >> d;
    	bad.emplace(c - 1, d - 1);
  	}
  	vector<int> ord_b(M);
  	for (int i = 0; i < M; i++) ord_b[i] = i;
  	sort(begin(ord_b), end(ord_b), [&](int i, int j) { return b[i] > b[j]; });
  	vector<int> cur(N);
  	priority_queue<pair<int, int>> Q;
  	for (int i = 0; i < N; i++) Q.emplace(a[i] + b[ord_b[cur[i]]], i);
  	while (true) {
    	auto [cost, i] = Q.top();
    	int j = cur[i];
    	Q.pop();
    	if (bad.count({i, ord_b[j]}) == 0) {
      	cout << cost << "\n";
      	break;
    }
    cur[i]++;
    if (cur[i] != M) Q.emplace(a[i] + b[ord_b[cur[i]]], i);
  	}
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值