首页 > 其他分享 >AGC002 题解

AGC002 题解

时间:2024-08-19 21:55:00浏览次数:7  
标签:AGC002 putchar 10 int 题解 ll Read num

目录

A - Range Product

分情况讨论:

  • \(a \le 0 \le b\) 时,乘积一定为 \(0\);
  • 否则:
    • \(0 < a \le b\) 时,乘积一定为正;
    • 否则,负数的个数有 \(b - a + 1\) 个,判断这个数是否为奇数,若是,乘积为负,否则为正。
#include <bits/stdc++.h>
#define ll long long
using namespace std;
ll Read() {
	int sig = 1;
	ll num = 0;
	char c = getchar();
	while(!isdigit(c)) {
		if(c == '-') {
			sig = -1;
		}
		c = getchar();
	}
	while(isdigit(c)) {
		num = (num << 3) + (num << 1) + (c ^ 48);
		c = getchar();
	}
	return num * sig;
}
void Write(ll x) {
	if(x < 0) {
		putchar('-');
		x = -x;
	}
	if(x >= 10) {
		Write(x / 10);
	}
	putchar((x % 10) ^ 48);
}

int main() {
	int a = Read(), b = Read();
	if(a <= 0 && b >= 0) {
		printf("Zero\n");
	}
	else {
		bool p = false;
		if(a > 0 && b > 0) {
			p = true;
		}
		else {
			p = (b - a) & 1;
		}
		if(p) {
			printf("Positive\n");
		}
		else {
			printf("Negative\n");
		}
	}
	return 0;
}

B - Box and Ball

考虑对于每个操作,动态记录里面是否有红球。
如果将盒子 \(x\) 中的一个球放到盒子 \(y\) 中:

  • 若盒子 \(x\) 中可能有红球,那么盒子 \(y\) 中也可能有红球;
  • 假设盒子 \(x\) 中已经没有球了,那么盒子 \(x\) 也不可能有红球。
#include <bits/stdc++.h>
#define ll long long
using namespace std;
ll Read() {
	int sig = 1;
	ll num = 0;
	char c = getchar();
	while(!isdigit(c)) {
		if(c == '-') {
			sig = -1;
		}
		c = getchar();
	}
	while(isdigit(c)) {
		num = (num << 3) + (num << 1) + (c ^ 48);
		c = getchar();
	}
	return num * sig;
}
void Write(ll x) {
	if(x < 0) {
		putchar('-');
		x = -x;
	}
	if(x >= 10) {
		Write(x / 10);
	}
	putchar((x % 10) ^ 48);
}

const int N = 100005;
int n, cnt[N];
bool a[N];
int main() {
	int i, m;
	n = Read(), m = Read();
	for(i = 1; i <= n; i++) {
		cnt[i] = 1;
	}
	a[1] = true;
	while(m--) {
		int u = Read(), v = Read();
		cnt[v]++, cnt[u]--, a[v] |= a[u];
		if(!cnt[u]) {
			a[u] = false;
		}
	}
	int ans = 0;
	for(i = 1; i <= n; i++) {
		ans += a[i];
	}
	Write(ans);
	return 0;
}

C - Knot Puzzle

对于一段完整的绳子,剪去最左边或最右边的小绳子比不这么做是不优的。证明可以考虑,存在至少一种剪法,使得前者留下的较长的绳子比后者留下的较短的且需要被再次剪开的绳子长。
倒着考虑,假设最后一步的绳长不小于 \(L\),则前面所有步的绳长均不小于 \(L\),留下总长最长的两段连续的小绳子最后剪即可。

#include <bits/stdc++.h>
#define ll long long
using namespace std;
ll Read() {
	int sig = 1;
	ll num = 0;
	char c = getchar();
	while(!isdigit(c)) {
		if(c == '-') {
			sig = -1;
		}
		c = getchar();
	}
	while(isdigit(c)) {
		num = (num << 3) + (num << 1) + (c ^ 48);
		c = getchar();
	}
	return num * sig;
}
void Write(ll x) {
	if(x < 0) {
		putchar('-');
		x = -x;
	}
	if(x >= 10) {
		Write(x / 10);
	}
	putchar((x % 10) ^ 48);
}
const int N = 100005;
int n;
ll a[N], k;

int main() {
	int i, j = 0;
	n = Read(), k = Read();
	for(i = 1; i <= n; i++) {
		a[i] = Read();
		if(a[i] + a[i - 1] > a[j] + a[j - 1]) {
			j = i;
		}
	}
	if(a[j] + a[j - 1] < k) {
		printf("Impossible\n");
		return 0;
	}
	printf("Possible\n");
	for(i = 1; i < j - 1; i++) {
		Write(i), putchar('\n');
	}
	for(i = n - 1; i >= j; i--) {
		Write(i), putchar('\n');
	}
	Write(j - 1), putchar('\n');
	return 0;
}

标签:AGC002,putchar,10,int,题解,ll,Read,num
From: https://www.cnblogs.com/IncludeZFR/p/18368193

相关文章

  • P10423题解
    P10423[蓝桥杯2024省B]填空问题先贴上答案#include<iostream>usingnamespacestd;intmain(){stringans[]={"1204","1100325199.77",};charT;cin>>T;cout<<ans[T-'A']......
  • P10155题解
    1题意给定一个排列ppp,每次可以选择一个数pi......
  • AT_abc027_b题解
    说明需要掌握贪心算法。这么简单为什么是黄题啊?题意给定一个长度为的非负整数序列,你可以进行若干次操作,每次操作都可以选择一个长度为的子串,花费的代价,将其中的每个数都变成该子串的平均值,现在你必须将每个数都变成相同的,你必须同时保证每个数为非负整数。分析先算......
  • 题解:「ROI 2017 Day 2」存储器
    题目信息题目链接LuoguP10653、LOJ2770题目描述给定一个字符串\(S\),设其长度为\(n\),每个字符要么是+要么是-。定义一个片段为\(S\)的一个子串\(S[l,r]\)满足下面三个条件:\(l=1\)或者\(S_{l-1}\neS_l\)。\(r=n\)或者\(S_{r+1}\neS_r\)。\(S_l=S_{l+1}=......
  • P6218 [USACO06NOV] Round Numbers S 题解
    题面题目传送门如果一个正整数的二进制表示中,00的数目不小于11的数目,那么它就被称为「圆数」。例如,99的二进制表示为10011001,其中有22个00与22个11。因此,99是一个「圆数」。请你计算,区间[l,r][l,r]中有多少个「圆数」。前置芝士1.数位dp相关的题:P4317花神......
  • [题解]UVA1127 Word Puzzles
    UVA1127WordPuzzles我们对模式串建立AC自动机,然后就比较板子了,只需要把\(8\)个方向都跑一遍匹配就可以了。时间复杂度是\(O(T\times8nm)\)。注意输入是大写字母。点击查看代码#include<bits/stdc++.h>#defineK1010//模式串个数&矩阵长宽#defineN1000010//节点个......
  • el-table使用sortablejs推拽排序卡顿问题解决
    使用sortablejs拖拽el-table排序时,对于纯文本表格,正常使用即可,不会卡顿initSort(){consttbody=document.querySelector('.el-table__body-wrappertbody')const_this=thisSortable.create(tbody,{draggable:'.el-table__row',......
  • 【题解】Solution Set - NOIP2024集训Day10 树的直径、重⼼、中⼼
    【题解】SolutionSet-NOIP2024集训Day10树的直径、重⼼、中⼼https://www.becoder.com.cn/contest/5464「CF516D」DrazilandMorningExercise首先,我们可以换根求出所有点的\(f\)。然后不会了……思考一下,一条直径提供的到底时什么。实际上,一条直径上的点取到\(f\)......
  • Vue 项目报错Uncaught SyntaxError: Unexpected token < 刷新之后又可以继续访问问题解
    场景:页面打开不操作,前端项目代码更新重新部署后(比如Jenkins发布部署)页面不刷新,操作页面(点击打开弹窗、切换菜单等),页面没有反应,控制台报错 UncaughtSyntaxError:Unexpectedtoken<。这个问题偶现,只有在项目重新部署后会出现,页面刷新后就恢复正常 问题原因:在前端项目未更......
  • 题解:牛客周赛 Round 56(A-E)
    A面包店故事题面小镇上有一家面包店,面包以\(x\)元的价格出售,加\(y\)元可以多加几块培根。小歪带着\(n\)元来到了面包店,他想知道自己能不能买到加培根的面包?输入在一行上输入三个整数\(x,y,n\left(1\lex,y,n\le100\right)\)代表面包的价格、培根的价格和小歪带的......