K-独立钻石(dfs),G-邪恶铭刻(贪心)

这两题,都是应该赛场上A出来的。

K.独立钻石


当时一直关注点在 I. Path Planning,没关注榜单,K,也能写,也就是dfs,从数据范围可以看出,直接暴力搜索。

代码

c 复制代码
#include<bits/stdc++.h>
#define int long long 
#define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
using namespace std;
int n,m,kk,x,y,a[15][15],ans;
int b[4][2]={{-1,0},{1,0},{0,-1},{0,1}};
void dfs()
{
	ans=min(kk,ans);
	for(int i=1;i<=n;i++)
	for(int j=1;j<=m;j++)
	{ 
		if(a[i][j]==1)
		{
			for(int l=0;l<4;l++)
			{
				int ii=i+b[l][0],jj=j+b[l][1];
				if(a[ii][jj]==1)
				{
					int iii=ii+b[l][0],jjj=jj+b[l][1];
					if(a[iii][jjj]==0&&iii>=1&&iii<=n&&jjj>=1&&jjj<=m)//这个范围要界定
					{
						kk--;
						a[i][j]=0,a[ii][jj]=0,a[iii][jjj]=1;//补题时,错写成双等,又费了不少时间
						dfs();
						kk++;
						a[i][j]=1,a[ii][jj]=1,a[iii][jjj]=0;
					}
				}
			}
			
		}	
	}
}
void solve()
{
	
	memset(a,0,sizeof(a));
	cin>>n>>m>>kk;
	for(int i=0;i<kk;i++)
	{
		cin>>x>>y;
		a[x][y]=1;
	}
	 
		ans=kk;
		dfs();
		cout<<ans<<'\n';
}
signed main()
{
	ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
	int t;
	cin>>t;
	while(t--)
	solve();
	return 0;
}

G.邪恶铭刻

在这场中,只写出一道签到题,此题并不难,也不复杂,从前往后算就行了。当时,第一思路,先入为主,一直被绕在里边,改了十几次,改一次,发现一个漏洞,一直在完善特判,应该想到,既然有那么多漏洞,那思路方法就有问题,肯定有更优解法,答案也是这样,将近五个小时的debug太傻了,毫无用处。

(错误思路:考虑1,-1,过程中用1,0作-1的弥补,最后将剩余0判断变成什么,其实究竟如何,心里是没底的,妄想投机取巧。判断剩余0,也是多此一举,遍历中已经可以得到答案)

正确: 0优先考虑-1,否则1,当遇到-1,且分母不足时,就将变为-1 的0再变回来
最大公约数 __gcd(p,q)

代码

c 复制代码
#include<bits/stdc++.h>
using namespace std;
#define int long long
void solve()
{
	int p=1,q=1,n,sum=0,f=0;
 	cin>>n;
 	while(n--)
 	{
 		int k;
	 	cin>>k;	
	 	if(f==0)
	 	{
		 	if(k==0)
	 	 	{
	 		 	if(q<2) p++,q++;
	 			else q--,sum++;
	 		 }
	 		 else if(k==1)
	 		 p++,q++;
	 		 else
	 		 {
	 		 	if(q<2) 
	 			 {
	 			 	if(sum<1) 
	 				 {
	 				 	cout<<"-1"<<'\n';
	 				    f=1;
	 				 }
	 			 	else    sum--,p++,q++;
	 			 }
	 			 else q--;	
	 	      }			
		 }
	 	
 	}
	   if(f==0)	
		 cout<<p/__gcd(p,q)<<" "<<q/__gcd(p,q)<<'\n';
}
signed main()
{
	ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
	int t;
	cin>>t;
	while(t--)
	{
		 solve();	
	 } 
	 return 0;
}
相关推荐
single59414 小时前
【c++笔试强训】(第四十一篇)
java·c++·算法·深度优先·图论·牛客
清弦墨客14 小时前
【数据结构与算法】深度优先搜索:树与图的路径探寻之道
数据结构·python·算法·蓝桥杯·深度优先
_nut_15 小时前
图论基础算法/DFS+BFS+Trie树
算法·深度优先·图论
mit6.8242 天前
[数据结构#2] 图(1) | 概念 | 邻接矩阵 | 邻接表 | 模拟
算法·深度优先·图论
牧歌悠悠3 天前
【深度学习】 零基础介绍卷积神经网络(CNN)
人工智能·深度学习·cnn·深度优先
菜鸟起航ing6 天前
数据结构---图(Graph)
java·数据结构·算法·深度优先
想喝冰拿铁7 天前
图论笔记1
笔记·深度优先·图论
XiaoLeisj7 天前
【递归,搜索与回溯算法 & 递归算法】递归算法入门详解:递归算法小专题
java·算法·leetcode·深度优先·推荐算法
闻缺陷则喜何志丹7 天前
【C++图论 DFS】1559. 二维网格图中探测环|1837
c++·算法·深度优先·力扣·图论··网格
硕风和炜7 天前
【LeetCode: 1338. 数组大小减半 + 哈希表 + 贪心】
算法·leetcode·散列表·贪心·哈希表