首页 > 其他分享 >2023.08.20CCPC网络赛

2023.08.20CCPC网络赛

时间:2023-08-26 23:44:38浏览次数:27  
标签:2023.08 node ch 20CCPC int 网络 dfs yy xx

rank:732,寄

首先开场打E手速不行,还WA了一两发,其次D开始觉得是二分让队友先写了一发,后面看出是三分,但是反应过来的时候只剩20min了,而且是在队友之前的代码上改的,手忙脚乱,最后还是没有调出来,令人寒心;

D.Discrete Fourier Transform

题意:根据欧拉公式可以将原式化成许多个与 fk 的值为变量的二次函数,要使得这些二次函数的最大值最小,我们不妨取一个新函数 g ( x ) = max { fi ( x ) },1<=N,其中 fi ( x ) 是原本的第i个函数的值,再用三分的方法求该函数的最小值;

暂时还没有找到在哪里交题,先把赛后重新写的代码(不保真)贴在这里;

 1 #include<bits/stdc++.h>
 2 #define ll long long
 3 using namespace std;
 4 ll read(){
 5     char ch=getchar();ll x=0,f=1;
 6     while(ch<'0'||ch>'9'){if(ch=='-') f=-1;ch=getchar();}
 7     while(ch>='0'&&ch<='9'){x=x*10+ch-'0'; ch=getchar();}
 8     return x*f;
 9 }
10 const int maxn=2005;
11 const double pi=acos(-1);
12 ll N,K; 
13 ll f[maxn];
14 struct node{
15     double A,B;
16     double a,b,c;
17 }F[maxn];
18 double work(ll x){
19     double ret=-1e18;
20     for(int i=0;i<=N-1;i++){
21         double now=F[i].a*x*x+F[i].b*x+F[i].c;
22         ret=max(ret,now);
23     }
24     return ret;
25 }
26 int main(){
27     N=read();K=read();
28     for(int i=0;i<=N-1;i++){
29         f[i]=read();
30     } 
31     for(int i=0;i<=N-1;i++){
32         for(int j=0;j<=N-1;j++){
33             if(j==K)continue;
34             F[i].A+=f[j]*cos(2.0*pi*i*j/N);
35             F[i].B+=f[j]*sin(2.0*pi*i*j/N);
36         }
37         F[i].a=1;
38         F[i].b=2*(F[i].A*cos(2.0*pi*i*K/N)+F[i].B*sin(2.0*pi*i*K/N));
39         F[i].c=F[i].A*F[i].A+F[i].B*F[i].B; 
40     }
41     ll L=-1e18,R=1e18;
42     while(R-L>=3){
43         ll midl=L+(R-L)/3;
44         ll midr=R-(R-L)/3;
45         if(work(midl)<=work(midr))R=midr;
46         else L=midl;
47     }
48     double ans=1e18;
49     for(ll i=L;i<=R;i++){
50         ans=min(ans,work(i));
51     }
52     cout<<fixed<<setprecision(10)<<sqrt(ans)<<endl;
53     return 0;
54 }

 

E.Robot Experiment

题意:给定你机器人的路径,如果下一步到达的位置有障碍则停在原地,起点(0,0)一定无障碍,记录所有可能最后停留的位置并按字典序输出;

深搜即可,注意已经到达过的位置一定不会有障碍,且去重;

赛后补的代码:

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int read(){
 4     char ch=getchar();int x=0,f=1;
 5     while(ch<'0'||ch>'9'){if(ch=='-') f=-1;ch=getchar();}
 6     while(ch>='0'&&ch<='9'){x=x*10+ch-'0'; ch=getchar();}
 7     return x*f;
 8 }
 9 const int maxn=205;
10 int N,tot,A[25];
11 int dx[10]={-1,1,0,0};
12 int dy[10]={0,0,-1,1};
13 map<pair<int,int>,int>vis;
14 map<pair<int,int>,int>b;
15 map<pair<int,int>,int>ans;
16 struct node{
17     int x,y;
18 }e[maxn];
19 int cmp(node a,node b){
20     if(a.x==b.x)return a.y<b.y;
21     return a.x<b.x;
22 }
23 void dfs(int x,int y,int k){
24     if(k==N+1){
25         if(ans[make_pair(x,y)]==0){
26             tot++;
27             e[tot].x=x;e[tot].y=y;
28             ans[make_pair(x,y)]=1;
29         }
30         return ;
31     }
32     b[make_pair(x,y)]++;
33     int xx=x+dx[A[k]],yy=y+dy[A[k]];
34     if(vis[make_pair(xx,yy)]==0){
35         if(b[make_pair(xx,yy)]==0){
36             vis[make_pair(xx,yy)]=1;
37             dfs(x,y,k+1);
38             vis[make_pair(xx,yy)]=0; 
39         }
40         dfs(xx,yy,k+1);
41     }
42     else dfs(x,y,k+1);
43     b[make_pair(x,y)]--;//注意,开始写的是经过时变成1退出时变成0,会错,因为可能多次经过
44 }
45 int main(){
46     N=read();
47     for(int i=1;i<=N;i++){
48         char ch;
49         cin>>ch;
50         if (ch=='L')  A[i]=0;
51         if (ch=='R')  A[i]=1;
52         if (ch=='D')  A[i]=2;
53         if (ch=='U')  A[i]=3;
54     }
55     dfs(0,0,1);
56     cout<<tot<<endl;
57     sort(e+1,e+tot+1,cmp);
58     for(int i=1;i<=tot;i++){
59         cout<<e[i].x<<" "<<e[i].y<<endl;
60     }
61     return 0;
62 }

赛时和队友一起写的代码:

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 struct node{
 4     int x,y;
 5     bool operator <(const node &a) const{
 6         if (a.x == x)
 7           return y < a.y;
 8         return x < a.x;
 9     } 
10 };
11 const int d = 100;
12 int N,tot,A[25];
13 int vis[200][200],b[200][200];
14 int dx[10]={-1,1,0,0}, dy[10]={0,0,-1,1};
15 set<node> ans;
16 void dfs(int x,int y,int k){
17     if (k == N+1){
18         x -= d, y -= d;
19         if (!ans.count((node){x,y})){
20             tot ++;
21             ans.insert((node){x,y});
22         }
23         return ;
24     }
25     b[x][y] ++;
26     int xx = x + dx[A[k]], yy = y + dy[A[k]];
27     if (vis[xx][yy] == 0){
28         if (b[xx][yy] == 0){
29             vis[xx][yy] = 1;
30             dfs(x, y, k+1);
31             vis[xx][yy] = 0;
32         }
33         dfs(xx, yy, k+1);
34     }
35     else
36       dfs(x, y, k+1); 
37     b[x][y] --;
38 }
39 int main(){
40     cin>>N;
41     for(int i=1;i<=N;i++){
42         char ch;
43         cin >> ch;
44         if (ch=='L')  A[i]=0;
45         if (ch=='R')  A[i]=1;
46         if (ch=='D')  A[i]=2;
47         if (ch=='U')  A[i]=3;
48     }
49     dfs(d,d,1);
50     cout << tot << endl;
51     for (auto it: ans)
52       cout << it.x << ' ' << it.y << endl;
53     return 0;
54 }

 

标签:2023.08,node,ch,20CCPC,int,网络,dfs,yy,xx
From: https://www.cnblogs.com/burutaofan/p/17659706.html

相关文章

  • Cross-Origin Read Blocking (CORB) 网络兼容性和对其他资源的影响问题
    CORB对图像的影响CORB对标签应该没有明显的影响<img>,除非图像资源1)被错误地标记为不正确的、非图像的、受CORB保护的Content-Type和2)与响应标头一起提供X-Content-Type-Options:nosniff。例子:正确标记的HTML文档标签中使用的资源<img>:正文:一个HTML文档Co......
  • Web 安全字体和网络字体 (Web Fonts)
    什么是Web安全字体网络安全字体是由许多操作系统预先安装的字体。虽然不是所有的系统都安装了相同的字体,但你可以使用网络安全字体堆栈来选择几种看起来类似的字体,并且安装在你想支持的各种系统上。如果你想使用预装字体以外的字体,从CSS3开始,你可以使用网络字体Webfonts-Learn......
  • HyperLedger Fabric基础:搭建Fabric测试网络(三)
    在本系列第二篇中,我们介绍了如何创建通道与在通道上启动链码的问题。本篇将探索如何使用Peer客户端与区域链网络通信。启动测试网络后,可以使用Peer节点CLI与网络进行交互。Peer节点CLI允许您从CLI调用已部署的智能合约、更新通道或安装和部署新的智能合约。确定当前我们仍处于test-......
  • 计算机网络自顶向下方法
    1、概论1.1、什么是Internet?1.1.1、从具体构成角度节点:主机及其上运行的应用程序;路由器、交换机等网络交换设备。边:接入网链路:主机连接到互联网的链路;主干链路:路由器间的链路。互联网是数以亿计的、互联的计算机设备:主机=端系统;运行网络应用程序。1.1.2、从......
  • GPT之路(四) 神经网络架构Transformer工作原理
     原文:WhatAreTransformerModelsandHowDoTheyWork?Transformer模型是机器学习中最令人兴奋的新发展之一。它们在论文AttentionisAllYouNeed中被介绍。Transformer可以用于写故事、文章、诗歌,回答问题,翻译语言,与人类聊天,甚至可以通过对人类来说很难的考试!但是它们到底......
  • 2023.08.24T3 - brain - solution
    brainProblem给定一棵以\(1\)为根的树,给定树上所有点权与边权。记\(d(i,j)\)表示\(i\)到\(j\)的路径长度。定义一棵树的权值为:\[\sum\limits_{i=1}^{n-1}\sum\limits_{j=i+1}^{n}a_{i}a_{j}d(i,j)\]定义一次对点\(i\)的改造操作为:删掉\(i\)与其父节......
  • 网络基础-IP
    网络中的IP地址IP地址的作用:用于标识一个节点的网络合法的地址只有ABC这三类,DE配置不了A:0-127     类型:网络+主机+主机+主机  ||默认子网掩码: 255.0.0.0B:128-191    类型:网络+网络+主机+主机  || 默认子网掩码: 255.255.0.0C:192-223    类型:......
  • 网络配置之 vlan
    什么是广播域概念:能够接收到同样广播消息的网络节点的集合缺陷:当同一个广播域内广播报文过多时,会对局域网造成干扰,导致网络延迟,网络拥塞(上网卡,上网慢),严重情况可以造成广播风暴,导致网络瘫痪,给网络的可靠性和安全性带来了严重挑战。2、如何解决广播1)利用路由器分割广播域:路......
  • 网络之路由器交换机的设置
    一、基础知识之(交换机的)虚接口vlan1.端口加入vlan[S1]interfaceGigabitEthernet0/0/1[S1-GigabitEthernet0/0/1]portlink-typeaccess接口模式配置为access模式[S1-GigabitEthernet0/0/1]portdefaultvlan2接口加入vlan2<S1>displayvlan 查看当前配置的vlan ......
  • 网络层的协议
    一、IP主要作用是寻址和路由。1、IPV432位数字,每8位1组,共4组。IP地址分类成了5种类型,分别是A类、B类、C类、D类、E类。在IP地址中,有两个IP是特殊的,分别是主机号全为1和全为0地址。主机号全为1指定某个网络下的所有主机,用于广播,广播地址主机号全为0......