2020第八届“图灵杯”NEUQ-ACM程序设计竞赛(个人赛)

只写了通过率最低的俩题,摸鱼壬

A.切蛋糕

//误差不大于1/1024,无脑切成2048块,每块1/2048
#include <bits/stdc++.h>
using namespace std;

int main()
{
    
    
	int k;
	cin >> k;
	cout << k + (1 << 11) - 1 << endl;
	//公式:2^0 + 2^1 + …… + 2^10 = 2^11 - 1
	
	for (int i = 0; i < 11; i ++)
	{
    
    
		for (int j = 1; j <= (1 << i); j ++)
		{
    
    
			printf("1 %d\n", i);
		}
	}
	
	int cnt = (1 << 11) / k;
	for (int i = 1; i <= k; i ++)
	{
    
    
		printf("2 %d ", cnt);
		for (int j = 1; j <= cnt; j ++)
		{
    
    
			printf("11 ");
		}
		putchar('\n');
	}
	
	return 0;
}

E.贪吃的派蒙

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

const int maxn = 1e5 + 5;
int a[maxn];
int sum[maxn];

signed main() 
{
    
    
	int t; 
	cin >> t;
	while (t --)
	{
    
    
		int n, k; 
		cin >> n >> k;
		int ax = 0, x = 0;
		
		a[0] = sum[0] = 0;
		for (int i = 1; i <= n; i ++)
		{
    
    
			scanf("%ld", &a[i]);
			sum[i] = sum[i - 1] + a[i];
			if (a[i] > ax)
			{
    
    
				ax = a[i];
				x = i;
			}
		}	
		
		int minl = x - 1, maxl = sum[x] - ax;
		int minlr = n - 1, maxlr = sum[n] - ax;
		
		if (k >= minl && k <= maxl) 
		{
    
    
			puts("YES");
		}
		else
		{
    
    
			if ((k - minl) % (ax + minlr) <= maxl - minl + (k - maxl + minl) / (ax + minlr) * (maxlr - minlr)) 
			{
    
    
				puts("YES");
			}
			else
			{
    
    
				puts("NO");
			}
		}
	}
	return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_50676276/article/details/113512302
今日推荐