首页 > 其他分享 >10.4 George_Plover

10.4 George_Plover

时间:2022-10-05 08:00:26浏览次数:37  
标签:include Plover 10.4 int ans printf now George define

题面

T1

一道数学(博弈论)

分析

先手搓几个数据,找找规律,除非个数为1,其余的一旦先手先选,那一定先手获胜,反之必败 那只用统计1的个数即可,但如果全是1,需要特判

#include<cstdio>
#include<iostream>
#include<algorithm>
#define int long long
using namespace std;
int T,n,a,ans,tmp=1;
signed main()
{
    scanf("%lld",&T);
    for(int i=1;i<=T;i++)
    {
        scanf("%lld",&n);
        ans=0;
        for(int j=1;j<=n;j++) 
        {
            scanf("%lld",&a);
            if(a==1) ans++;
        }
        if(ans==n)
        {
            if(n&1) printf("Yes\n");
            else printf("No\n");
        }
        else
        {
            if(ans&1) printf("No\n");
            else printf("Yes\n");
        }
    }
    return 0;
}

T2

一道搜索,记忆化,状压题

分析

看码

点击查看代码
#include<bits/stdc++.h>
#define nt long long
#define maxn 100010
#define N (1<<22)+114514
using namespace std;
int n,x[maxn],y[maxn],vis[maxn],tmp[maxn],ans[maxn],dis[50][50],Ans=(1<<25);
int dp[N];
int calc(int u,int v){return abs(x[u]-x[v])*abs(x[u]-x[v])+abs(y[u]-y[v])*abs(y[u]-y[v]);}

void init()
{
	for(int i=0;i<n;i++)
		for(int j=i+1;j<=n;j++)
			dis[i][j]=dis[j][i]=calc(i,j);// 求出每个点见距离 
	memset(dp,127,sizeof dp);
}
void DFS(int pos,int now,int idx,int wow)// 当前位置 当前价值 答案序列长度 状态 
{
	if(now>=Ans||now>=dp[wow]) return ;// 记忆化 如果当前价值大于最终的答案或大于原来的更优状态 回溯 
	
	if(vis[pos])
	{
		DFS(pos+1,now,idx,wow);// 当前已经被标记则跳过 
		return ;
	}
	if(pos>n)// 记录答案 
	{
		if(Ans>now)
		{
			Ans=now;
			for(int i=1;i<=n;i++) ans[i]=tmp[i];
		}
		return ;
	}
	tmp[idx+1]=pos;
	DFS(pos+1,now+2*(dis[0][pos]),idx+1,wow+(1<<pos));// 单走一个六
	for(int i=pos+1;i<=n;i++)
	{
		if(vis[i]) continue;
		vis[i]=1;// 标记为选过(为三角形情况) 
		tmp[idx+2]=i;
		DFS(pos+1,now+dis[pos][i]+dis[0][i]+dis[0][pos],idx+2,wow+(1<<pos)+(1<<i));// 对子 
		vis[i]=0;// 回溯 
	}
	dp[wow]=now;// 记忆化 
}
signed main()
{
//	Ans=(1<<31)

	scanf("%lld%lld",&x[0],&y[0]);
	scanf("%lld",&n);
	for(int i=1;i<=n;i++) scanf("%lld%lld",&x[i],&y[i]);
	init();// 预处理 


	DFS(1,0,0,0);

	printf("%lld\n",Ans);
	for(int i=1;i<=n;i++) printf("%lld ",ans[i]);
	return 0;
}
/*
122 116 20
12 34
166 166
56 131
114 76
22 115
15 85
5 9
92 195
154 135
64 200
105 19
122 127
187 157
112 159
162 34
140 155
113 56
148 54
55 140
129 86

145168
1 7 2 13 3 19 4 20 5 6 8 10 9 16 11 17 12 14 15 18
*/

标签:include,Plover,10.4,int,ans,printf,now,George,define
From: https://www.cnblogs.com/llwwll/p/16755007.html

相关文章

  • 2022.10.4
    考试,大概7、8名,基本是按流程来的了。还是有些问题,感觉很多题莫名奇妙没转过弯,拿了很高的部分分但距离正解还有距离。CF做少了QaQTodo:考试,改题(至少前三道)。把CF的E题和......
  • 10.4 第三问
    (1)统计每天各个机场的销售数量和销售金额。要求的输出字段day_id,sale_nbr,,cnt,round日期编号,卖出方代码,数量,金额。命令:查询语句:selectday_id,sale_nbr,sum(cnt),sum......
  • 10.4训练
    输入schematool-initSchema-dbTypemysql-verbose初始化hive元数据库hive建表createtabletest0(day_idstring,sale_nbrstring,buy_nbrstring,cntint,roun......
  • 10.4
    bin/sqoopexport>--connectjdbc:mysql://master:3306/mysql>--usernameroot>--password000000>--tabletable3>--num-mappers1>--export-dir/user/hive/......
  • 2022.10.4什么是计算机随笔
    什么是计算机冯诺依曼被称为计算机之父computer俗称电子计算机、电脑计算机分硬件和软件计算机广泛应用在人工智能、网络安全、科学计算、数据处理、自动......
  • 2022.10.4markdown随笔
    Markdowm学习标题三级标题四级标题 字体helloworldhelloworldhelloworldhelloworld引用选择坚持,留住明天!分割线图片超链接点击跳转到哔哩哔哩列表......
  • 社论 22.10.4
    Problem令\(\text{M}_n(\mathbb{F}_p)\)表示模\(p\)意义下全体\(n\)阶矩阵的集合。一个映射\(f:R\toR\)称为同态,当且仅当$$\forallX,Y\inR,f(X+Y)=f(X)......
  • 2022.10.4 - mac安装homebrew
    因为网络的问题,所以用国内源;有个大佬写好了自动下载脚本:https://gitee.com/cunkai/HomebrewCN按照文档选择镜像下载安装就OK;安装是安装好了,但是下载的时候会出现:Comman......
  • Bootstrap Blazor V6.10.4 图标不正常显示升级处理
    更新日志V6.10.4fix(#I5R3SM):修复组件Table固定表头后允许列宽调整时导致不对齐问题#I5R3SM3250feat(#I5R3YG):BootstrapBlazor.FontAwesome更新到6.1.5老......
  • 10.4类和对象的相关知识
    classFruits:discount=0.8#类变量,静态变量#当所有的变量都用到同一个属性的时候,我们定义一个类变量def__init__(self,name,price):self.nam......