一场有趣(×)的比赛

U374729 hrmm 吃宵夜 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

非常粗糙的dp,一开始想用搜索,其实是大错特错,这个题实际上第二天有且仅有从第一天推导出来。

所以我们可以采用dp。

dp[i][j]表示第i天我们买第j种宵夜,这样我们的结果就是最后第n天买这三种宵夜的最大值,可能不太直观,但确实是我这个蒟蒻所能想到的了。

还是来想想转移方程吧,第i天选第j种,我们是不是第i-1天一定不能选第j种是不是这样。

然后我们是不是要加上a[i][j],这点不否认吧。

那我们多出来的循环K是干什么的,为什么要多出来,有什么用呢?

因为我们已经在第天选了第j种宵夜了,那我们在前面,也就是第i-1天我们可以选其他两种宵夜,这也是这个循环的由来,第二个原因是我们可以判断k==j嘛,这样就可以实现买的宵夜隔一天不同了对吧。

所以说我们的状态转移方程就是,应该不太难懂,就是第i天选了j种,然后前面一天我们有k种选择,所以说,要枚举一下,最后别忘了加上去就可以了。

真是有趣(×)难想(√)!

dp[i][j]=max(dp[i][j],dp[i-1][k]+a[i][j]);
#include<iostream>
using namespace std;
int a[1000000][4];
int dp[1000000][4];
int main()
{
	int n;
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=3;j++)
		{
			cin>>a[i][j];		
		}	
	}

for(int i=1;i<=n;i++)
{
	for(int j=1;j<=3;j++){
		for(int k=1;k<=3;k++)
		{
			if(j!=k)
			{
				dp[i][j]=max(dp[i][j],dp[i-1][k]+a[i][j]);
			}
			
		}
		
	}
	
}
	
	cout<<max(dp[n][3],max(dp[n][1],dp[n][2]));
	
	
}

U374726 hrmm 学数学 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

签到题。

#include<iostream>
using namespace std;
string s="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679";
int main()
{
	int n;
	cin>>n;
	for(int i=0;i<n+2;i++)
	
	{
		
		cout<<s[i];
	}
}

U374725 hrmm 去种树 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

本题有个难点,但有且仅有一个

 

我们观察数据范围,二维数组肯定不行,字符串行不行我没试过,但可变数组vector应该行。于是就莫名其妙的过了。

#include<iostream>
#include<vector>

using namespace std;
vector<int>h[210000];
int main()
{
	int n, q;
	cin >> n >> q;
	for (int i = 1; i <= n; i++)
	{
		int a;
		cin >> a;
		for (int j = 1; j <= a; j++)
		{
			int s;
			cin >>s;
			h[i].push_back(s);

		}

	}
	while (q--)
	{
		int x, y;
		cin >> x >> y;
		cout << h[x][y- 1]<<'\n';
	
	}



}

U374720 hrmm 期末考 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

纯纯有点....暴力,好吧,大家不要学!

#include<iostream>
using namespace std;
int a[4];
int main()
{
	int x, y;
	cin >> x >> y;
	

	if (x == 1)
	{
		a[1] = 1;
	}
	if (x == 2)
	{
		a[2] = 1;
	}
	if (x == 4)
	{
		a[3] = 1;
	}
	if (x == 3)
	{
		a[1] = 1;
		a[2] = 1;
	}
	if (x == 5)
	{
		a[1] = 1;
		a[3] = 1;
	}
	if (x == 6)
	{
		a[2] = 1;
		a[3] = 1;
	}
	if (x == 7)
	{
		a[1] = 1;
		a[2] = 1;
		a[3] == 1;
	}

	if (y == 1)
	{
		a[1] = 1;
	}
	if (y== 2)
	{
		a[2] = 1;
	}
	if (y == 4)
	{
		a[3] = 1;
	}
	if (y == 3)
	{
		a[1] = 1;
		a[2] = 1;
	}
	if (y == 5)
	{
		a[1] = 1;
		a[3] = 1;
	}
	if (y == 6)
	{
		a[2] = 1;
		a[3] = 1;
	}
	if (y == 7)
	{
		a[1] = 1;
		a[2] = 1;
		a[3] =1;
	}
	int sum = 0;
	
		if (a[1] == 1)
		{
			sum += 1;
		}
		if (a[2] == 1)
		{
			sum += 2;
		}
		if (a[3] == 1)
		{
			sum += 4;
		}
		cout << sum;





}

U374722 hrmm 玩原神 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

好像讨论不太难,就讨论在不在一边,同时再讨论讨论位置,画画图就可以了。我说的很轻松对吧,但本蒟蒻写了半天。

据说有二进制优化,但不会......

#include<iostream>
#include<math.h>
using namespace std;
int main()
{
	int x, y, z;
	cin >> x >> y >> z;
	if (x * y < 0)
	{
		cout << abs(x);
	}
	if (x * y > 0&&x>0&&y>0&&x<y)
	{
		cout << x;


	}
	if (x * y > 0 && x > 0 && y > 0 && x > y&&z>y)
	{
		cout << -1;


	}
	if (x * y > 0 && x > 0 && y > 0 && x > y && z < y&&z>0)
	{
		cout << x;


	}
	if (x * y > 0 && x > 0 && y > 0 && x > y && z < y&&z<0)
	{
		cout << 2*abs(z)+abs(x);


	}
	if (x * y > 0 && x < 0 && y < 0 && x > y)
	{
		cout << x;


	}
	if (x * y < 0 && x < 0 && y < 0 && x < y && z < y)
	{
		cout << -1;


	}
	if (x * y > 0 && x < 0 && y < 0 && x < y && z > y && z<0)
	{
		cout << x;


	}
	if (x * y > 0 && x < 0 && y < 0 && x < y && z > y && z > 0)
	{
		cout << 2 * abs(z) + abs(x);


	}

















}

U374723 hrmm 走迷宫 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

好难!!

虽然据说是模板,但我对这个存储想了大半年。

姑且来说一说吧,毕竟练多就菜。

首先,最短路,bfs合理吧。

我们存边,用最简便的邻接表合理吧。

我们是无向图,存两条边合理吧。

我们bfs开个队列,常规的取出,弹出,枚举合理吧。

如果是输入最小步数,其实到这里就结束了,走多少个点记录一下也就那么回事。

但()要打印。

好吧,我们来想吧,一开始我是想用一整个来存,就存储上一个结点的所有信息,然后没过。

于是,群友有种存储上一个结点的想法启发了我,于是我也只存储上一个结点了,就每次都把队首的结点要存储自己给扔进去,然后把要遍历的边也进行一个存储,继承一下。

这样其实存储也完成了。

那我们就差最后一个输出环节了。

我们用递归,从最后一个点开始递归,注意后面有个细节,究竟是递归先呢,还是输出先呢?

是个问题,如果我们输出先,我们想一下,是不是我们的点就从后往前输出了,是不是错了。

但如果我们下递归,是不是最后的点,其实是最后输出的,达成目的!

好了,交上去吧。过了,非常难受,泪流满面!!

等等,打印那里有个回退操作,打印完一直润就是了。

#include<iostream>
#include<queue>
using namespace std;
vector<int>g[200000];
vector<int>s[300000];
int n;
queue<int>q;
int vis[300000];
int r;
bool bfs(int x)
{
	q.push(x);
	vis[x] = 1;

	while (!q.empty())
	{
		int t = q.front();	
		q.pop();
		s[t].push_back(t);
		for (int i = 0; i < g[t].size(); i++)
		{
			
		
			if (!vis[g[t][i]])
			{
				vis[g[t][i]] = 1;
				q.push(g[t][i]);
			
					s[g[t][i]].push_back(t);
			


			}
			if (g[t][i] == r)
			{

				return 1;

			}



		}
	}
	


	return 0;



}
	int m;
	int flag=0;
	
void print(int r)
{
	if(flag)
	{
		return ;
	}
	if(r==m)
	{	
	flag=1;
		return ;
	}

print(s[r][0])	;
	cout<<s[r][0]<<' ';	
	
}


int main() {
	
	cin >> n;

	cin >> m;

	cin >> r;
	
	for (int i = 1; i <= n - 1; i++)
	{
		int x, y;
		cin >> x >> y;
		g[x].push_back(y);
		g[y].push_back(x);

	}

	bfs(m);
print(r);
	cout << r;
	return 0;


}

最后一题!

U374728 hrmm 开趴体 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

给大家开个Party

一道贪心题,就是说我们先把最大的排在偶数位,然后次大排在奇数位,然后比较就可以了。

群友真厉害啊,我是想不出来一点,被群友一说才会写!

#include<iostream>
#include<algorithm>
using namespace std;
int a[1000000];
int b[1000000];
bool cmp(int x,int y)
{
	return x>y;
}
int main()
{
	int n;
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>a[i];
	}
	sort(a+1,a+1+n,cmp);
	int n2=1;
	for(int i=2;i<=n;i+=2)
	{
		b[i]=a[n2++];
	}
b[0]=999999999;
for(int i=1;i<=n;i+=2)
{
	b[i]=a[n2++];
}

for(int i=2;i<=n;i+=2)
{
	if(b[i]<=b[i-1]||b[i]<=b[i+1])
	{
		cout<<"No";
		return 0;
	}
	
}
cout<<"Yes";



	return 0;
}

世间温柔,不过是芳春柳摇染花香,槐序蝉鸣入深巷,白茂叶落醉故乡。

人生何处不相逢,各位再见。

世界地图矢量数据可以通过多种网站进行下载。以下是一些提供免费下载世界地图矢量数据的网站: 1. Open Street Map (https://www.openstreetmap.org/): 这个网站可以根据输入的经纬度或手动选定范围来导出目标区域的矢量图。导出的数据格式为osm格式,但只支持矩形范围的地图下载。 2. Geofabrik (http://download.geofabrik.de/): Geofabrik提供按洲际和国家快速下载全国范围的地图数据数据格式支持shape文件格式,包含多个独立图层,如道路、建筑、水域、交通、土地利用分类、自然景观等。数据每天更新一次。 3. bbbike (https://download.bbbike.org/osm/): bbbike提供全球主要的200多个城市的地图数据下载,也可以按照bbox进行下载。该网站还提供全球数据数据格式种类齐全,包括geojson、shp等。 4. GADM (https://gadm.org/index.html): GADM提供按国家或全球下载地图数据的服务。该网站提供多种格式的数据下载。 5. L7 AntV (https://l7.antv.antgroup.com/custom/tools/worldmap): L7 AntV是一个提供标准世界地图矢量数据免费下载的网站。支持多种数据格式下载,包括GeoJSON、KML、JSON、TopJSON、CSV和高清SVG格式等。可以下载中国省、市、县的矢量边界和世界各个国家的矢量边界数据。 以上这些网站都提供了世界地图矢量数据免费下载服务,你可以根据自己的需求选择合适的网站进行下载
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值