当前位置: 首页 > news >正文

2023 CCPC哈尔滨 报告

比赛链接:Dashboard - 10.6组队训练赛-2023CCPC哈尔滨站 - Codeforcesicon-default.png?t=O83Ahttps://codeforces.com/group/w6iGs8kreW/contest/552949

做题数:3 题

三题都是队友写的。所以来补一下 B L J。

B题


B. Memory

Little G used to be a participant in programming contests and he had attended nn contests in total, and for the ii-th contest, Little G got aiai happiness. However, Little G would also be influenced by past contests since memory also plays an important role to influence one's mood. So we can use following formula to value Little G's mood after the ii-th contest:

Mood(i)=∑j=1i2j−i×ajMood(i)=∑j=1i2j−i×aj

Now Little G is recalling the past and is curious about the moods after every contest, so he wants to tag the moods for every contest. Specifically, Little G will tag a positive sign ("+") for the ii-th contest if Mood(i)>0Mood(i)>0, or tag a negative sign ("-") if Mood(i)<0Mood(i)<0, or tag a zero ("0") if Mood(i)=0Mood(i)=0. But Little G is busy working and working, so he is now asking you, the best programming contestant, to help him tag the moods.

Input

The first line contains one integers nn (1≤n≤1051≤n≤105), denoting the number of contests Little G had attended.

The second line contains nn integers a1,a2,…,ana1,a2,…,an (−109≤ai≤109−109≤ai≤109), denoting the happiness values after every contest.

Output

Output one line containing a string which is of length nn and only contains "+", "-" or "0", denoting the mood tags after every contest.


WA:一开始觉得这题就是签到题(最后看似乎也差不多。。。是我菜)。可以从题目给的解释找到很简单的规律。假设上一次(i-1)的答案为k,那么第i次的答案就是 k/2+a[i]。一开始就这么用double暴力写的。但是!double会爆精度。所以wa了很多次。然后又想着用分子分母来表示,但是!这样会爆long long。所以就要考虑别的策略了。

AC:我们需要考虑小数对答案的影响。我们发现,本来有小数部分的数不管怎么/2 ,都有小数部分(也就是不可能为0)。那么我们就可以把一个数分为两部分来表示:a.b 。a表示整数部分,b是小数部分。然后模拟。

这题赛后补题的时候我思路特别乱,然后队友帮我掰正了捋了一遍。要感谢模拟大王队友^-^。事实就是,模拟的时候,一步一步来,不要上来就想着该怎么分怎么分,先把这一步的运算结束了,再考虑分类讨论。分类也要有条理。比如这题,一般情况,小数部分是不会对整数部分产生影响的,但当a/2+k[i]后a变号的时候,就要看有没有小数了。比如a=5,k=-4,5/2-4=-1.5。如果a/2还用a表示,运算完之后a就要再+1(-2+1=-1)。

看一下代码:

#include<iostream>
#include<cmath>
using namespace std;
#define int long longint n;
int k[1000010];
int a,b;signed main()
{cin>>n;for(int i=1;i<=n;i++){cin>>k[i];}a=k[1],b=0;if(a>0){cout<<'+';}else if(a==0){cout<<'0';}else{cout<<'-';}for(int i=2;i<=n;i++){if(a%2!=0){if(a>0)b=1;else if(a<0)b=-1;}a/=2;int g=a;a+=k[i];if(g*a<0){if(g>0&&b!=0){a++;b=-b;}else if(g<0&&b!=0){a--;b=-b;}}if(a==0&&b==0){cout<<'0';}else if(a>0||(a==0&&b>0)){cout<<'+';}else{cout<<'-';}
//		cout<<a<<" "<<b<<endl;}return 0;
}

L题


L. Palm Island

Toph is playing a card game. She has nn cards and each card has a unique number of 1,2⋯n1,2⋯n. In this game, Toph can operate the deck of the cards. We may wish to assume that the cards from the top to the bottom of the deck are p1,p2,⋯pnp1,p2,⋯pn (a permutation), then each operation must be one of the following two cases:

  1. Place the top card at the bottom of the deck, that is, change the order of the deck into p2,p3⋯pn,p1p2,p3⋯pn,p1.
  2. Place the second card from the top at the bottom of the deck, that is, change the order of the deck into p1,p3⋯pn,p2p1,p3⋯pn,p2

Now, you know that the initial order(from top to bottom) of Toph's deck is a1,a2,⋯ana1,a2,⋯an, and Toph wants to change the order of the deck into b1,b2,⋯bnb1,b2,⋯bn after some operations. Please construct the operation sequence to help Toph implement the change.

Toph has no patience. So the number of operations should not exceed n2n2.

Input

The first line contains an integer TT , indicating the number of test cases.

For each test case:

  • The first line contains an integer, n(3≤n≤1000)n(3≤n≤1000), indicating the number of Toph's cards.
  • The second line contains nn integers a1,a2,⋯ana1,a2,⋯an, a permutation indicating the order of the deck initially.
  • The third line contains nn integers b1,b2,⋯bnb1,b2,⋯bn, a permutation indicating the order of the deck want to make.

It is guaranteed that the sum of nn in TT test cases is not exceed 10001000.

Output

For each test case:

  • Output a line, which contains a string s1s2…sk(si∈{1,2}, 1≤i≤k)s1s2…sk(si∈{1,2}, 1≤i≤k) as your operation sequence. The length of the string should not exceed n2n2, or you will get "Wrong Answer".
  • If there are multiple solutions, output any of them.

AC:这题还是要感谢队友,提供了两个很重要的方向。一个是,这其实就是一个排序问题。例如,一开始数列是 2 4 5 3 1,要变成 4 1 2 5 3。那么等价操作就是,先把 4 1 2 5 3 编号 1 2 3 4 5,那么 问题就是把 3 1 4 5 2 变成 1 2 3 4 5。这不就是一个排序问题吗?排序问题是第一个点。还有一个点就是 把两个操作等效为 冒泡排序。冒泡排序怎么排呢,就是不断比较相邻两点大小,把大的往后移(swap),那么其实 2 1 操作就相当于一次swap。这是第二个点。

看一下代码:

#include<bits/stdc++.h>using namespace std;int t;
int n;
int a[1010],b[1010],id[1010];int main()
{ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);cin>>t;while(t--){cin>>n;for(int i=1;i<=n;i++)cin>>a[i];for(int i=1;i<=n;i++){cin>>b[i];id[b[i]]=i;}for(int i=1;i<=n;i++){for(int j=1;j<=n-1;j++){if(id[a[j]]>id[a[j+1]]){cout<<'2';swap(a[j],a[j+1]);}elsecout<<'1';}cout<<'1';}cout<<'\n';}return 0;
}

J题:

j题比赛可谓半点不会,而且之前从来没有做过树上博弈论问题。(准确地说 都不知道sg函数。。。)补题的时候研究两天sg函数的原理(包括树上sg如何和nim游戏联系起来)。终于ac了。现在先贴一下从各大佬文章里看到的有关sg重要的公式。

算法学习笔记(博弈论中的SG函数)-CSDN博客

用sg判断胜负状态的关键大概是:把原游戏看成k个子游戏(例如 本题就是每个数是一个“子状态”,又或者nim游戏中每堆石子的个数是一个“子状态”)。那么,把这k个“子状态”的sg函数值求异或,若异或和为0,那么 必败。否则,存在必胜态。

那么,每个状态的sg函数值怎么求呢?用这个子状态的子状态的sg函数值求mex。

(mex函数的值表示不属于集合的最小非负整数)

可以自己推算,很容易证明出nim游戏必胜态的规律(每堆石子数异或和为0则必败)。

但我们一直被困在 如何将nim游戏和博弈论联系起来。我们一直以为 nim游戏的异或和公式是由sg函数导出的。但其实,我们是将sg的性质nim游戏相联系。我们要注意sg函数的定义:一个状态sg函数值为k,那么 它的子状态的sg函数 一定包含0~k-1的所有数。!!!这点和nim游戏的性质一样啊。nim游戏的性质是:数量为k的石子堆可以在下个状态中变为从0~k-1中的任意一个状态。那么,我们就可以用nim游戏的结论来引入sg函数赢的结论:所有状态的sg函数异或和为0,则为必败态。

所以以后博弈论问题,我们就如何判断一个状态的胜负态呢?把所有分立状态的sg函数值异或和,为0则是必败态。

例如这题,我们手推发现,数点数为奇数是树的sg函数为1,偶数是为2,点数为0时sg函数为0。那么就暴力走dfs,把每个状态都走一遍,看看子状态sg函数异或和,若为0,则ans++(子状态必输,则现在必赢)。

看代码吧~:

#include<iostream>
using namespace std;int n,m,ans;
struct EDGE{int u,v;EDGE* ne;
}edge[1000010];
struct NODE{EDGE* fir;
}node[1000010];
int fa[10000010];
int SG;int sg(int i){if(i==0)return 0;else return (2-i%2);
}void init(int n){for(int i=1;i<=n;i++){fa[i]=i;}
}
int find(int i){if(fa[i]==i){return fa[i];}fa[i]=find(fa[i]);return fa[i];
}
void unionn(int i,int j){int fa_i=find(i);int fa_j=find(j);fa[fa_i]=fa_j;
}int tot;
void my_build(int u,int v){edge[tot].u=u;edge[tot].v=v;edge[tot].ne=node[u].fir;node[u].fir=&edge[tot];tot++;
}int siz[1000010];
void dfs1(int u,int fa){siz[u]=1;EDGE* i=node[u].fir;while(i!=NULL){if(i->v==fa){i=i->ne;continue;}dfs1(i->v,u);siz[u]+=siz[i->v];i=i->ne;}
}void dfs2(int u,int fa,int k){int nowsg=0;EDGE* i=node[u].fir;while(i!=NULL){if(i->v==fa){i=i->ne;continue;}nowsg^=sg(siz[i->v]);dfs2(i->v,u,k);i=i->ne;}//delete nodeif((SG^sg(siz[k]-siz[u])^nowsg)==0){ans++;}//delete edgeif(fa!=0&&(SG^sg(siz[u])^sg(siz[k]-siz[u]))==0){ans++;}
}int main()
{cin>>n>>m;int u,v;init(n);for(int i=1;i<=m;i++){cin>>u>>v;my_build(u,v);my_build(v,u);unionn(u,v);}for(int i=1;i<=n;i++){if(find(i)==i){dfs1(i,0);SG^=sg(siz[i]);}}for(int i=1;i<=n;i++){if(find(i)==i){SG^=sg(siz[i]);dfs2(i,0,i);SG^=sg(siz[i]);}}cout<<ans;return 0;
}

呼...整了三天,才整完银牌题。路漫漫其修远兮...

相关文章:

2023 CCPC哈尔滨 报告

比赛链接&#xff1a;Dashboard - 10.6组队训练赛-2023CCPC哈尔滨站 - Codeforceshttps://codeforces.com/group/w6iGs8kreW/contest/552949 做题数&#xff1a;3 题 三题都是队友写的。所以来补一下 B L J。 B题&#xff1a; B. Memory Little G used to be a participant …...

基于深度学习的手术中的增强现实导航

基于深度学习的手术中的增强现实&#xff08;AR&#xff09;导航技术是一种结合了先进的计算机视觉算法、深度学习模型与增强现实技术的创新应用。其主要目的是为外科手术提供实时的、精确的手术指导&#xff0c;帮助医生在复杂的手术过程中更好地理解患者的解剖结构&#xff0…...

输电线路缺陷图像检测数据集,导线散股,塔材锈蚀两类,分别为581张和1407张,标注为xml和txt格式 1988张

输电线路缺陷图像检测数据集&#xff0c;分为导线散股&#xff0c;塔材锈蚀两类&#xff0c;分别为581张和1407张&#xff0c;标注为xml和txt格式 数据集名称 输电线路缺陷图像检测数据集 (Transmission Line Defect Detection Dataset) 数据集概述 该数据集是一个专门用于训…...

百度飞桨(paddlepaddle)安装

百度飞桨&#xff08;paddlepaddle&#xff09;安装 Anaconda升级 打开 Anaconda Prompt &#xff08;或者 Mac 下的终端&#xff09;&#xff0c;键入&#xff1a; conda upgrade --all pip 安装 python -m pip install paddlepaddle -i https://mirror.baidu.com/pypi/s…...

≌图概念凸显有长度不同的射线

黄小宁 【摘要】自有射线概念后的2300年里一直无人能知有长度不同的射线、无人能知有互不≌的射线&#xff0c;从而使数学一直有几何“常识”&#xff1a;任何射线都没有长度差别。保距变换和≌图概念使人能一下子看到有长度不同的射线。 变量x所取各数也均由x代表&#xff0c…...

解决Nginx出现“Too many open files”的问题

解决Nginx出现“Too many open files”的问题 在那个不经意的瞬间&#xff0c;我感到一阵莫名的恍惚。同事突然提出要看我的手机&#xff0c;她的目光落在了我那泛黄的手机壳上。出乎意料地&#xff0c;她开始细心地擦拭&#xff0c;从内到外&#xff0c;动作轻柔而专注。那一刻…...

webGL进阶(一)多重纹理效果

效果&#xff1a; 代码&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content&q…...

flink-jdbc-driver

Flink JDBC 驱动程序是一个 Java 库&#xff0c;使客户端能够通过 SQL 网关将 Flink SQL 发送到 Flink 集群。 首先启动&#xff1a;1.flink集群&#xff0c;随意任何集群。 2.启动flink-sql-gateway&#xff1a; sql-gateway.sh start -Dsql-gateway.endpoint.rest.addresslo…...

快速的配置Prettier,让代码更整洁

快速的配置Prettier&#xff0c;让代码更整洁 一个人一个代码风格&#xff0c;先抛开语法的使用不谈&#xff0c;加不加空格、加不加分号也是萝卜白菜各有所爱&#xff0c;那怎么统一我们的代码格式呢 prettier 就是为我们解决这个问题的 1. 如何制定我们的代码风格 我们可以在…...

JavaEE: HTTPS的魅力与优势揭秘

文章目录 HTTPSHTTPS 是什么HTTPS 基本工作过程Fiddle 等抓包工具,为啥能解析 HTTPS 的数据? HTTPS HTTPS 是什么 HTTPS 是一个应用层协议,是在 HTTP 协议的基础上引入了一个加密层. 几个核心概念: 明文: 要传输的原始数据.密文: 把明文进行加密之后得到一个让别人不能理解…...

软件设计师——系统基础开发

&#x1f4d4;个人主页&#x1f4da;&#xff1a;秋邱-CSDN博客☀️专属专栏✨&#xff1a;软考——软件设计师&#x1f3c5;往期回顾&#x1f3c6;&#xff1a;软件设计师——信息安全&#x1f31f;其他专栏&#x1f31f;&#xff1a;C语言_秋邱 ​ 一、软件工程概述 1.1、考…...

架构设计笔记-7-系统架构设计基础知识

目录 知识要点 单选 案例分析 1.质量属性 / 管道过滤器 / 数据仓库风格 2.面向对象风格 / 控制环路风格 3.软件架构风格 / 架构风格选择 4.体系结构方案对比 5.面向对象风格 / 基于规则风格 6.解释器风格 / 管道过滤器风格 7.面向对象风格 / 解释器风格 8.软件架构复…...

跨平台应用程序本地化过程的特点

跨平台应用程序本地化不仅仅是将单词从一种语言翻译成另一种语言。这是关于调整应用程序&#xff0c;使其无缝融入全球用户的不同文化和语言环境&#xff0c;无论他们使用的是哪种设备或平台。这个过程对于跨平台应用程序来说尤其复杂&#xff0c;它们需要在多个操作系统和设备…...

C++面试速通宝典——9

170. 简述数组和指针的区别&#xff1f; ‌‌‌‌  答&#xff1a;数组要么在静态存储区被创建&#xff08;如全局数组&#xff09;&#xff0c;要么在栈上被创建。指针可以随时指向任意类型的内存块。 1. 修改内容上的区别 char a[] “hello”; a[0] ‘X’; char * p …...

阿里巴巴商品详情API返回值:电商行业发展的新动力

阿里巴巴的商品详情API在电商行业中扮演着至关重要的角色&#xff0c;它不仅为商家和消费者提供了丰富的产品信息&#xff0c;还推动了电商行业的进一步发展和创新。通过API接口&#xff0c;开发者可以获取商品的详细信息&#xff0c;如标题、价格、库存、评价等&#xff0c;进…...

php的urlencode和rawurlencode区别

urlencode和rawurlencode都是用于对URL进行编码的函数&#xff0c;但它们在处理方式和应用场景上存在明显的区别。以下是关于这两个函数的详细比较&#xff1a; 一、定义与标准 urlencode&#xff1a;基于rawurlencode标准&#xff0c;但有略微的不同&#xff0c;它定义在rfc…...

LeetCode讲解篇之322. 零钱兑换

文章目录 题目描述题解思路题解代码题目链接 题目描述 题解思路 我们可以使用动态规划解决这道题&#xff0c;我们首先定义一个数组&#xff0c;数组中第i个元素表示组成金额 i 的最少硬币个数 我们遍历数组的1 ~ amount号位置&#xff0c;对coins进行遍历&#xff0c;查找选…...

猴子吃桃-C语言

1.问题&#xff1a; 猴子第一天摘下若干个桃子&#xff0c;当即吃了一半&#xff0c;还不过瘾&#xff0c;又多吃了一个。 第二天早上又将剩下的桃子吃掉一半&#xff0c;又多吃一个。以后每天早上都吃了前一天剩下的一半零一个。 到第N天早上想再吃时&#xff0c;见只剩下一个…...

【C++】单例模式「详尽版」

欢迎来到 破晓的历程的 博客 ⛺️不负时光&#xff0c;不负己✈️ 文章目录 什么是单例模式如何实现单例模式饿汉模式和懒汉模式饿汉模式懒汉模式饿汉模式和懒汉模式的优缺点1.饿汉模式的优缺点2.懒汉模式的优缺点 什么是单例模式 C单例模式是一种非常重要的设计模式&#xf…...

MongoDB集群模式详解及应用实战

目录 本节课内容&#xff1a; 集群搭建 1.创建3个目录&#xff1a; 2.编辑配置文件 ​编辑 3.启动&#xff1a; 4.看看&#xff1a; 5.另外&#xff0c;两个如上1&#xff0c;2&#xff0c;3步骤操作 &#xff0c;但是日志目录&#xff0c;端口什么的需要改一下即可。 …...

【信号处理】基于高斯函数的Caputo-Fabrizio分数阶导数闭式表达式及其在信号处理中的应用附matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。&#x1f34e;完整代码获取 定制创新 论文复现点击&#xff1a;Matlab科研工作室&#x1f447; 关注我领取海量m…...

基于CircuitPython与NeoPixel的智能圣诞树:从硬件搭建到动态灯光算法

1. 项目概述&#xff1a;从零打造一棵会“思考”的圣诞树又到年底了&#xff0c;看着家里那棵年复一年、只会默默发光的传统圣诞树&#xff0c;总觉得少了点“灵魂”。作为一个常年和微控制器、代码打交道的创客&#xff0c;我总琢磨着能不能给节日装饰加点科技感&#xff0c;让…...

G101EVT05.1友达液晶屏10.1寸LCD工业电阻触摸液晶屏幕

G101EVT05.1 G101EVT05.1是友达AUO的一款10.1英寸工业触摸液晶屏模组。公开资料显示&#xff0c;这款屏采用1280800分辨率、16:10比例、400cd/m典型亮度、LVDS接口、WLED背光、投射式电容触摸屏PCAP&#xff0c;整体更偏向工业平板、HMI、人机界面、医疗终端、嵌入式控制设备&a…...

NCMconverter终极指南:3步轻松解密NCM音频,实现全平台播放自由 [特殊字符]

NCMconverter终极指南&#xff1a;3步轻松解密NCM音频&#xff0c;实现全平台播放自由 &#x1f3b5; 【免费下载链接】NCMconverter NCMconverter将ncm文件转换为mp3或者flac文件 项目地址: https://gitcode.com/gh_mirrors/nc/NCMconverter 你是否遇到过从音乐平台下载…...

RK3566安卓11开发板千兆网卡RTL8211F移植避坑指南:从原理图到DTS配置全流程

RK3566安卓11平台RTL8211F千兆网卡移植实战&#xff1a;硬件原理到DTS配置的深度解析 当开发者需要在RK3566安卓11平台上实现千兆以太网功能时&#xff0c;RTL8211F PHY芯片的移植往往成为关键挑战。不同于简单的驱动加载&#xff0c;实际项目中常会遇到"软件配置看似正常…...

通过Taotoken审计日志功能追踪与分析API调用情况

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 通过Taotoken审计日志功能追踪与分析API调用情况 对于使用大模型API进行开发的项目团队而言&#xff0c;清晰、透明地掌握API调用情…...

深度神经网络(DNN)百科全书从“深“到“无限深“

一、开篇:深度的奇迹 2012 年 9 月 30 日。 ImageNet 挑战赛的结果在 Florence 公布。所有人都以为冠军会延续过去 3 年的传统——传统计算机视觉方法(SIFT、HOG、SVM)小幅领先。 但那一年,一个叫 AlexNet 的"怪物"出现了。8 层的卷积神经网络,Top-5 错误率 …...

【免费下载】 Cadence Allegro 多层板设计经典案例分享:助你快速提升设计技能

Cadence Allegro 多层板设计经典案例分享&#xff1a;助你快速提升设计技能 项目介绍 在电子设计领域&#xff0c;Cadence Allegro 是一款广泛使用的 PCB 设计软件&#xff0c;尤其在多层板设计中表现出色。为了帮助广大工程师和学习者更好地掌握 Allegro 的使用技巧&#xff0…...

在OpenClaw项目中接入Taotoken实现多模型Agent工作流

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 在OpenClaw项目中接入Taotoken实现多模型Agent工作流 对于使用OpenClaw框架构建智能体工作流的开发者而言&#xff0c;如何稳定、灵…...

Perplexity视频搜索不精准?揭秘4类常见误操作及实时修正方案

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;Perplexity视频搜索不精准&#xff1f;揭秘4类常见误操作及实时修正方案 Perplexity 的视频搜索功能依赖于跨模态语义理解&#xff0c;但用户常因输入方式或上下文设置不当导致结果偏离预期。以下四类高频误操…...