写题日记#2

前言:所有递归都可以转化为递归搜索树!

AcWing 92

深度优先搜索的递归实现指数型枚举,画颗树分析吧。

#include<bits/stdc++.h>

using namespace std;

const int N = 15;

int n;//有几个数字 
int st[N];//记录每个位置当前的状态:0为未处理,1为选中,2为不选 

void dfs(int u)//u为为数组下标,u+1为第几个数 
{
	if(u == n)//说明所有数已经选择完毕 
	{
		for(int i=0;i<n;i++)
		{
			if(st[i]==1)
			{
				printf("%d",i+1); 
				printf(" "); 
			}
		}
		printf("\n");
		return;
	}
	
	st[u]=2;//第一分支:不选 
	dfs(u+1);//递归 
	st[u]=0;//该行代码在此题中有无都不影响,但在其他题中可能产生影响 
	
	st[u]=1;//第二分支:选中 
	dfs(u+1);//递归 
	st[u]=0;//同上 
} 
          
int main()
{

	cin >> n;
	
	dfs(0);//数组下标从0开始,0为第一个数 
	
	return 0; 
}

AcWing 102

利用绝对值不等式找到距离的数量关系,得出中位数货仓离其他货仓距离之和最小。

#include<bits/stdc++.h>

int main()
{
	int n;
	scanf("%d",&n);
	int a[n+1];
	
	for(int i=0;i<n;i++)
		scanf("%d",&a[i]);
	
	sort(a,a+n);
	
	long long sum=0;
	int flag=a[n/2];
	
	for(int i=0;i<n;i++)
		sum+=abs(a[i]-a[n/2]);
	
	printf("%lld",sum);
	
	return 0;
} 

AcWing 1055

易知:第1天买,第n天卖,等同于第1天买,第2天卖了又买,第3天卖了又买,以此类推一直到第n天卖。故理论上只要有某一天价格低于后一天,就可以赚这个差价,即调整这两天的买卖策略变为前一天买了不卖,后一天卖了不买,直到下一次遇见同样的情况再重复同样的操作。

也就是说,所有后一天高于前一天的差价都可以赚到,故只要把这些差价都加起来就是最大利润(卖股票就是赚差价,不会有更大的了)

#include<bits/stdc++.h>

const int N=100010;
int n,price[N];

int main(){
	int sum=0;
	scanf("%d",&n);
	
	for(int i=0;i<n;i++)
	    scanf("%d",&price[i]);
	
	for(int i=0;i<n-1;i++)
	{
		if(price[i+1]>price[i])
		{
			sum+=price[i+1]-price[i];
		}
	}
	
	printf("%d",sum);
	
	return 0;
}

AcWing 112

列式子,推导表达式

#include<bits/stdc++.h>

typedef long long LL; 
const int N = 1000010; 

int n;
int a[N];
LL c[N];

int main()
{
	scanf("%d",&n);
	
	LL sum=0;
	
	for(int i = 1; i <= n; i++)
	{
		scanf("%d", &a[i]);	
		sum+=a[i];
	}
		
	long long ave = sum / n;
	
	for (int i = n; i > 1; i--)
	{
		c[i] = c[i + 1] + ave - a[i];
	}
	c[1] = 0;
	
	sort(c + 1,c + n + 1);
	
	long long res = 0;
	for(int i =1; i <= n; i++)
		res += abs(c[i] - c[(i + 1) / 2]);
	
	printf("%lld\n", res);	
	
	return 0;
}
Yu感谢你的阅读ovo
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇