ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

看似很难&实际很简单的题目合集

2022-04-25 21:02:58  阅读:209  来源: 互联网

标签:10 le 题目 int read 枚举 HASH 合集 看似


大型鞭尸现场

0x01 CF1654C Alice and the Cake

Alice 有一块蛋糕,可以切 \(n-1\) 次,每次可以将大小为 \(w\) 的蛋糕切成大小为 \(\lfloor w/2 \rfloor\) 和 \(\lceil w/2 \rceil\) 大小的两部分。
现在给出切了 \(n-1\) 次之后的 \(n\) 块蛋糕的大小 \(a_1,a_2,\dots,a_n\),判断是否可以做到把蛋糕切成最终这 \(n\) 块。多组数据,共 \(T\) 组。
\(t\le 10^4,1\le n,\sum n\le 10^5,1\le a_i\le 10^9\)

这题赛事我想了一个多小时才 A 掉,丢人现眼了。

首先考虑合并,发现搜索、贪心不可做,考虑 DP,然后没想出来怎么 DP。
然后发现这是 sb 题。

因为分割的结果是告诉我们的,所以可以直接分割,如果分割到刚好有需要这个大小的块,那么就不分了,否则继续分,如果分到 \(1\) 并且不需要 \(1\) 的大小,就证明不行。
代码:

int n; ll a[maxn],sum; map<long long,int> HASH,E;
int check(ll s){
	if(HASH[s]){ HASH[s]--; return 1; }
	if(s==1){ return 0; }
	return check(s/2)&&check(s-s/2);
}
void work(){
	n=read(); sum=0; HASH=E; int i; for(i=1;i<=n;i++) a[i]=read(),sum+=a[i],HASH[a[i]]++;
	if(check(sum)) puts("YES"); else puts("NO");
}

0x02 CF1311D Three Integers

题目给出三个整数 \(a\le b\le c\)。
在一次操作中,你可以给这三个数中任意一个数 \(+1\) 或 \(-1\)。你可以用同一个数字做这样的操作任意次。但你要保证,变换过后的数,是一个正数。
你想要用最小操作步数使得三个整数 \(A \le B \le C\) 能够符合:\(B\) 能被 \(A\) 整除, \(C\) 能被 \(B\) 整除。
求出最小次数和任意一对 \((A,B,C)\)。
多组数据,共 \(T\) 组数据。
\(a \le b \le c \le 10^4,T\le 100\)。

标签里面有一个暴力,其实这题真的是暴力。
枚举 \(A\),然后枚举 \(A\) 的倍数 \(B\),然后枚举 \(B\) 的倍数 \(C\)。注意不是枚举到 \(c\) 的大小。
我们发现单次复杂度是 \(\Theta(c\log^2c)\),能过。
代码:

int a,b,c,x,y,z,ans;
void work(){
	a=read(); b=read(); c=read(); int i,j,k; ans=INF;
	for(i=1;i<=c;i++) for(j=i;j<=c+i;j+=i) for(k=j;k<=c+j;k+=j)
		if(mabs(i-a)+mabs(j-b)+mabs(k-c)<ans) ans=mabs(i-a)+mabs(j-b)+mabs(k-c),x=i,y=j,z=k;
	print(ans),pc('\n'),print(x),pc(' '),print(y),pc(' '),print(z),pc('\n'); return;
}

标签:10,le,题目,int,read,枚举,HASH,合集,看似
来源: https://www.cnblogs.com/jiangtaizhe001/p/16191988.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有