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;
}
相关推荐
დ旧言~2 小时前
【高阶数据结构】图论
算法·深度优先·广度优先·宽度优先·推荐算法
Tisfy2 天前
LeetCode 3244.新增道路查询后的最短距离 II:贪心(跃迁合并)-9行py(O(n))
算法·leetcode·题解·贪心·思维
vir022 天前
好奇怪的游戏(BFS)
数据结构·c++·算法·游戏·深度优先·图论·宽度优先
是糖不是唐2 天前
代码随想录算法训练营第五十二天|Day52 图论
c语言·算法·深度优先·动态规划·图论
是糖不是唐3 天前
代码随想录算法训练营第五十一天|Day51 图论
c语言·数据结构·算法·深度优先·图论
Shiroha Wang4 天前
【数据结构OJ】【图论】红色警报
数据结构·笔记·算法·深度优先·图论
kitesxian4 天前
Leetcode236.二叉树的最近公共祖先(HOT100)
算法·深度优先
攻城丶狮5 天前
信息学奥赛-一本通-第二部分 基础算法 --> 第五章 搜索与回溯算法
c++·算法·青少年编程·深度优先·图论
Knight8405 天前
数据结构王道P234第二题
数据结构·c++·算法·深度优先·图论
席万里7 天前
二叉树Golang
开发语言·golang·深度优先