2023河南萌新联赛第(三)场:郑州大学

2023河南萌新联赛第(三)场:郑州大学_第1张图片

这个我赛时都没想出来 。。。 简单贪心,排序之后 每次从后往前 如果已经到了一个轻击的地方

那么用后面的都不如用当前这个更优,所以直接用这个填满

// Problem: 泰拉瑞亚
// Contest: NowCoder
// URL: https://ac.nowcoder.com/acm/contest/62332/L
// Memory Limit: 524288 MB
// Time Limit: 2000 ms
// 
// Powered by CP Editor (https://cpeditor.org)

#include
#define int long long
#define ls u<<1
#define rs u<<1|1
#define inf LLONG_MIN
#define _inf LLONG_MAX
#define fs first
#define se second
#define pb push_back

using namespace std;
const int N = 1e6+10;
int T;
int n,h;
void solve()
{
	cin>>n>>h;
	vector>vec;
	
	for(int i=1;i<=n;i++){
		int a,b;
		cin>>a>>b;
		vec.pb({a,0});
		vec.pb({b,1});
	}
	
	sort(vec.begin(),vec.end(),greater());
	int ans = 0;
	for(int i=0;i<2*n;i++){
		
		if(vec[i].se==1){
			h-=vec[i].fs;
			ans++;
			if(h<=0)break;
		}else{
			ans+=(h+vec[i].fs-1)/vec[i].fs;
			break;
		}
		
		
		
	}
	
	cout<>T;
	T = 1;
	while(T--)solve();
	return 0;
}

2023河南萌新联赛第(三)场:郑州大学_第2张图片

发现排序之后 设ans = 1 每次加上前缀 如果当前的a[i]大于ans说明结束了,这里有点拓展的意思,比较玄学 还是我太笨了

// Problem: x(简单版本)
// Contest: NowCoder
// URL: https://ac.nowcoder.com/acm/contest/62332/H
// Memory Limit: 524288 MB
// Time Limit: 2000 ms
// 
// Powered by CP Editor (https://cpeditor.org)

#include
#define int long long
#define ls u<<1
#define rs u<<1|1
#define inf LLONG_MIN
#define _inf LLONG_MAX
#define fs first
#define se second
#define pb push_back

using namespace std;
const int N = 1e6+10;
int T;
int n;
int w[N];
void solve()
{
	cin>>n;
	int ans = 1;
	for(int i=1;i<=n;i++)cin>>w[i];
	sort(w+1,w+1+n);
	
	for(int i=1;i<=n;i++){
		if(w[i]>ans){
			cout<>T;
	T = 1;
	while(T--)solve();
	return 0;
}

2023河南萌新联赛第(三)场:郑州大学_第3张图片

 

s>=2*a  并且(s-2*a)&a==0 (这里考虑扣掉数字)

// Problem: AND and SUM
// Contest: NowCoder
// URL: https://ac.nowcoder.com/acm/contest/62332/D
// Memory Limit: 524288 MB
// Time Limit: 2000 ms
// 
// Powered by CP Editor (https://cpeditor.org)

#include
#define int long long
#define ls u<<1
#define rs u<<1|1
#define inf LLONG_MIN
#define _inf LLONG_MAX
#define fs first
#define se second
#define pb push_back

using namespace std;
const int N = 1e6+10;
int T;

void solve()
{
	int a,s;
	cin>>a>>s;
	s-=2*a;
	if(s>=0&&(s&a)==0)puts("Yes");
	else puts("No");
	
	
}



signed main()
{
	ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
	cin>>T;
	//T = 1;
	while(T--)solve();
	return 0;
}

这场就体现出自己真的是菜的离谱

你可能感兴趣的:(思维,算法,c++)