Codeforces Round #192 (Div. 2) <全>

CANFD升级踩坑实录:DBC转换时DLC大于8的信号怎么处理? 本文详细探讨了CANFD升级过程中DLC大于8的信号处理问题,提供了工程化解决方案和AutoSar BSW层配置要点。通过分析CAN与CANFD的DLC本质差异,提出信号拆分重组、DLC重映射和协议层适配三种策略,并给出验证与测试方案,帮助开发者避免数据截断和通信故障。 阅读详情
题目链接:

http://codeforces.com/contest/330

A. Cakeminator

题目意思:

给一个r*c的矩阵方格,有些位置有S,如果某一行和一列都不含标记为S的方格,则可以把该行所有方格都收掉,问最多能收多少个方格,方格可以收多次,多次收的方格计数一次。

解题思路:

暴力

代码:

#include<iostream>
#include<cmath>
#include<cstdio>
#include<cstdlib>
#include<string>
#include<cstring>
#include<algorithm>
#include<vector>
#include<map>
#include<set>
#include<stack>
#include<list>
#include<queue>
#define eps 1e-6
#define INF 0x1f1f1f1f
#define PI acos(-1.0)
#define ll __int64
#define lson l,m,(rt<<1)
#define rson m+1,r,(rt<<1)|1
using namespace std;

/*
freopen("data.in","r",stdin);
freopen("data.out","w",stdout);
*/

char save[15][15];
bool flag[15][15];
struct Point
{
   int x,y;
}pp[120];

int main()
{
   int r,c;

   while(scanf("%d%d",&r,&c)!=EOF)
   {
      int cnt=0;
      memset(flag,false,sizeof(flag));
      for(int i=1;i<=r;i++)
      {
         scanf("%s",save[i]+1);
         for(int j=1;j<=c;j++)
         {
            if(save[i][j]=='S')
            {
               pp[++cnt].x=i;
               pp[cnt].y=j;
            }
         }
      }
      for(int i=1;i<=r;i++) //扫描每一行
      {
         bool ff=true;
         for(int j=1;j<=c;j++) //如果都没有S,则标记这一行
            if(save[i][j]=='S')
            {
               ff=false;
               break;
            }
         if(ff)
            memset(flag[i],true,sizeof(flag[i]));//表示能收
      }
      for(int i=1;i<=c;i++) //扫描每一列
      {
         bool ff=true;
         for(int j=1;j<=r;j++)
            if(save[j][i]=='S')
            {
               ff=false;
               break;
            }
         if(ff)
            for(int j=1;j<=r;j++) //标记这一列
               flag[j][i]=true;
      }

      int ans=0;
      for(int i=1;i<=r;i++)
         for(int j=1;j<=c;j++)
            if(flag[i][j]) //统计计数
               ans++;
      printf("%d\n",ans);
   }
   return 0;
}

B. Road Construction
题目意思:

给一些不能连接的边,让你构造一幅图,使任意两点能互相到达,且经过的边数不超过2。

解题思路:

任意两个点之间的边数不超过2,说明该图一定是星图。找到中心的那个点(没有限制的边连接这点),直接连线即可。

代码:

#include<iostream>
#include<cmath>
#include<cstdio>
#include<cstdlib>
#include<string>
#include<cstring>
#include<algorithm>
#include<vector>
#include<map>
#include<set>
#include<stack>
#include<list>
#include<queue>
#define eps 1e-6
#define INF 0x1f1f1f1f
#define PI acos(-1.0)
#define ll __int64
#define lson l,m,(rt<<1)
#define rson m+1,r,(rt<<1)|1
using namespace std;

/*
freopen("data.in","r",stdin);
freopen("data.out","w",stdout);
*/
int num[1100];

int main()
{
   int n,m;

   while(scanf("%d%d",&n,&m)!=EOF)
   {
      int a,b;

      memset(num,0,sizeof(num));
      for(int i=1;i<=m;i++) //num[i]表示i点的度数
      {
         scanf("%d%d",&a,&b);
         num[a]++,num[b]++;
      }
      int M=0;
      num[0]=INF;
      for(int i=1;i<=n;i++)
         if(num[i]<num[M]) //找到度数为零的点
            M=i;
      printf("%d\n",n-1);
      for(int i=1;i<=n;i++)
      {
         if(i==M)
            continue;
         printf("%d %d\n",i,M); //连接即可
      }
   }
   return 0;
}


C. Purification

题目意思:

给n*n的矩阵,让你放最少数量的清洗剂,使得所有的点都能清洗到,清洗剂所放位置的那一行和那一列的所有点都能清洗,其中E点不能放清洗剂。

解题思路:

如果能放,一定为n个,因为每一行或每一列都要扫描到。

如果每一行都有可放的位置,则输出每一行的任意一个能放的点即可,这样每一行的点都会清洗到。

如果每一列都有可放的位置,则输出每一列的任意一个能放得点即可,这样每一列的都会清洗到,也就达到了要求。

代码:

#include<iostream>
#include<cmath>
#include<cstdio>
#include<cstdlib>
#include<string>
#include<cstring>
#include<algorithm>
#include<vector>
#include<map>
#include<set>
#include<stack>
#include<list>
#include<queue>
#define eps 1e-6
#define INF 0x1f1f1f1f
#define PI acos(-1.0)
#define ll __int64
#define lson l,m,(rt<<1)
#define rson m+1,r,(rt<<1)|1
using namespace std;

/*
freopen("data.in","r",stdin);
freopen("data.out","w",stdout);
*/

bool rr[120],cc[120];
char save[120][120];
vector<int>row[120];
vector<int>col[120];

int main()
{
   int n;

   while(scanf("%d",&n)!=EOF)
   {
      memset(rr,false,sizeof(rr));
      memset(cc,false,sizeof(cc));
      for(int i=1;i<=n;i++)
      {
         row[i].clear();
         col[i].clear();
      }
      for(int i=1;i<=n;i++)
      {
         scanf("%s",save[i]+1);
         for(int j=1;j<=n;j++)
         {
            if(save[i][j]=='.')
            {
               rr[i]=true,cc[j]=true; //当前行和列能扫描到
               row[i].push_back(j);
               col[j].push_back(i);
            }
         }
      }
      bool r=true,c=true; //是否所有的行或列能扫描到

      for(int i=1;i<=n;i++)
         if(!rr[i])
         {
             r=false;
             break;
         }
      for(int i=1;i<=n;i++)
         if(!cc[i])
         {
            c=false;
            break;
         }
      if(!r&&!c) //行或列都扫描不到
      {
         printf("-1\n");
         continue;
      }
      if(r) //如果行都能扫描到,直接输出每一行的第一个可以放的位置
      {
         for(int i=1;i<=n;i++)
            printf("%d %d\n",i,row[i][0]);
         continue;
      }
      if(c) //对于列 同理
      {
         for(int i=1;i<=n;i++)
            printf("%d %d\n",col[i][0],i);
         continue;
      }

   }

   return 0;
}



D. Biridian Forest

题目意思:

给一个n*m的矩阵,一个起始点和终点,矩阵中的数字表示该位置的魔鬼数量,当从起点到终点选择一条路径时,如果魔鬼能够在人之前或同时到达该路径某一位置,则人和魔鬼要打仗,选择一条路径,使得人与魔鬼打仗的个数最少。

解题思路:

该题主要是思维转换。bfs+贪心

假设人当前选择了一条路径C->D,终点为D,某处魔鬼B 能够和人C打仗,假设魔鬼在A位置与人打仗,则dis(B,A)<=dis(C,A)   =>dis(B,A,D)<=dis(C,D)   如果选择D终点,只需使得Min(dis(B,D))<=dis(C,D)   而dis(B,A,D)>=Min(dis(B,D))  所以对于某一特定路径,选择终点D打仗比其他任何一点都好。

如果选择从C-D的最短路,则能够打仗的魔鬼数量就最少。

代码:

#include<iostream>
#include<cmath>
#include<cstdio>
#include<cstdlib>
#include<string>
#include<cstring>
#include<algorithm>
#include<vector>
#include<map>
#include<set>
#include<stack>
#include<list>
#include<queue>
#define eps 1e-6
#define INF 0x1f1f1f1f
#define PI acos(-1.0)
#define ll __int64
#define lson l,m,(rt<<1)
#define rson m+1,r,(rt<<1)|1
using namespace std;

/*
freopen("data.in","r",stdin);
freopen("data.out","w",stdout);
*/

int dp[1100][1100],n,m;
char save[1100][1100];
bool vis[1100][1100];
int dir[4][2]={{-1,0},{0,1},{1,0},{0,-1}};

struct PP
{
   int x,y;
};
PP s,e;

void bfs() //找到终点到任何一点的最短距离
{
   queue<PP>myq;
   myq.push(e);

   while(!myq.empty())
   {
      PP f=myq.front();
      myq.pop();

      for(int i=0;i<4;i++)
      {
         int xx=f.x+dir[i][0],yy=f.y+dir[i][1];

         if((save[xx][yy]=='S'||(save[xx][yy]>='0'&&save[xx][yy]<='9'))&&!vis[xx][yy])
         {
            //printf(":%d %d\n",xx,yy);
            vis[xx][yy]=true;
            dp[xx][yy]=dp[f.x][f.y]+1;
            myq.push((PP){xx,yy});
         } //不在方格里的点为空的,不会扫描的
      }
   }
   return ;
}

int main()
{
   while(scanf("%d%d",&n,&m)!=EOF)
   {
      memset(vis,false,sizeof(vis));
      for(int i=1;i<=n;i++)
      {
         scanf("%s",save[i]+1);
         for(int j=1;j<=m;j++)
         {
            if(save[i][j]=='S')
               s.x=i,s.y=j;
            if(save[i][j]=='E')
               e.x=i,e.y=j,dp[i][j]=0,vis[i][j]=true;
         }
      }
     // printf("%d %d\n",e.x,e.y);
      bfs();
      int ans=0;
     // printf("%d\n",dp[s.x][s.y]);
      for(int i=1;i<=n;i++) //最短距离小的话,就直接加上
         for(int j=1;j<=m;j++)
            if(save[i][j]>'0'&&save[i][j]<='9'&&vis[i][j]&&dp[i][j]<=dp[s.x][s.y])
               ans+=save[i][j]-'0';
      printf("%d\n",ans);



   }

   return 0;
}



E. Graph Reconstruction

题目意思:

给一幅图,图中任意结点的度数至多为2。

让你重构一幅图,要求:图中节点和原来一样,边数数量也一样,任意节点度数至多为2.

解题思路:

题中所说的图的边数最多为n.

1、随机算法。

随机m个点,连成m条边,判断每一条边是否在给定的图里面,在的话,在随机,都不在,则满足题目要求,直接输出就行了。

2、构造法。

当n<=7,直接暴力判断

当n>7,一定存在一种构造满足题意。

构造方法:

因为每个点的度数最多为2,所以每一个联通块要么是一条线,要么是一个环,首先根据联通块将节点分成若干部分。

然后将每一部分的节点的奇数位置节点提前。(保证相同部分的相邻节点之间的连线不冲突)

然后选择一个节点数量最多的那个部分,如果其节点数为偶数的话,交换头两个节点(防止环的情况尾和首相连有冲突),最后将其余各部分的节点从前之后依次插入。

最后按照给定的边数,从前之后输出相邻的两个节点构成一条边,如果需要把最后一个节点和第一个节点连起来。

代码:

#include<iostream>
#include<cmath>
#include<time.h>
#include<cstdio>
#include<cstdlib>
#include<string>
#include<cstring>
#include<algorithm>
#include<vector>
#include<map>
#include<set>
#include<stack>
#include<list>
#include<queue>
#define eps 1e-6
#define INF 0x1f1f1f1f
#define PI acos(-1.0)
#define ll __int64
#define lson l,m,(rt<<1)
#define rson m+1,r,(rt<<1)|1
using namespace std;

/*
freopen("data.in","r",stdin);
freopen("data.out","w",stdout);
*/
vector<int>myv;
vector<int>vv[110000];
int n,m;

int main()
{
   srand((unsigned)(time(NULL)));
   while(scanf("%d%d",&n,&m)!=EOF)
   {
      int a,b;
      myv.clear();

      for(int i=1;i<=n;i++)
      {
         vv[i].clear();
         myv.push_back(i);
      }

      for(int i=1;i<=m;i++)
      {
         scanf("%d%d",&a,&b);
         vv[a].push_back(b);
         vv[b].push_back(a);
      }

      bool tt=false;
      for(int i=1;i<=500;i++) //随机次数
      {
         random_shuffle(myv.begin(),myv.end()); //随机节点
         bool flag=true;

         for(int j=0;j<m&&flag;j++) //看是否满足
         {
            int a=myv[j];
            int b=myv[(j+1)%n];

            for(int k=0;k<vv[a].size();k++)
               if(b==vv[a][k])
                  flag=false;
         }
         if(flag) //满足的话,直接输出
         {
            for(int j=0;j<m;j++)
               printf("%d %d\n",myv[j],myv[(j+1)%n]);
            tt=true;
            break;
         }

      }
      if(!tt)
         printf("-1\n");
   }

   return 0;
}



RICHARDSON-LUCY 去卷积简介 Lucy去卷积1.泊松过程及联合概率分布2.极大似然估计参考文献 1.泊松过程及联合概率分布 首先假设相机接收光子生成图像的过程符合泊松分布。 因此,一次曝光过程中,某像素位置接收到iii个光子的概率p(i)p(i)p(i)为: p(i)=exp⁡(−λ)⋅λii!\qquad\qquad p(i)=\exp(-\lambda)\cdot\cfrac{\lambda^{i}}{i!}p(i)=exp(−λ)⋅i!λi​ 那么针对一张M∗NM*NM∗N的图像,所有像素的联合概率分布可以描述为: P(I)=∏e 阅读详情

相关推荐

PLUS模型土地利用变化模拟使用简介

因子包括自然因子如社会因子,通过计算整理得到新图层,并以tif文件输出到驱动因子的文件夹里,驱动因子文件夹里存放的是tif文件格式。线性回归使用提供的所有的LULC资源数据,可以选择往后预测的年数,选择好数据之后,可以得出预测的每一年的每一用地类型面积数据。在此过程之后,可以继续使用此CARS输入的数据继续模拟,也可返回二(3)中CARS模块,重新输入不同的年份预测。在此过程之后,可以继续使用此CARS输入的数据继续模拟,也可返回二(3)中CARS模块,重新输入不同的年份预测。

qq_42831270的博客 5807

Codeforces Round #192 (Div. 2) (330A) A. Cakeminator

题意: 如果某一行没有草莓,就可以吃掉这一行,某一列没有也可以吃点这一列,求最多会被吃掉多少块蛋糕。 //cf 192 div2 #include <stdio.h> #include <string.h> int vis[11][11]; char map[11][11]; int main() { int r, c; ...

146

python爬取巨潮资讯网所有股票年报数据

爬虫获取巨潮资讯网数据

qq_42752524的博客 6114

Codeforces Round #192 (Div. 2)

A. Cakeminator time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output You are given a rectangular cake, represented as an r ×

Hadis_yuki 1367

特征模理论指导滤波天线设计的优势和方法

本文探讨了特征模理论在滤波天线设计中的应用优势和方法。特征模理论通过分析天线结构的本征模特性,突破了传统经验设计的局限,实现了辐射与滤波功能的一体化设计。文章重点阐述了如何利用模式显著性(MS)和模式加权系数(MWC)来指导辐射零点的产生,揭示了辐射零点形成的物理机制。通过特征模分析,设计师可以明确调控天线结构和馈电系统,优化滤波性能。这种方法为现代多频/宽带滤波天线设计提供了理论依据和实用工具,显著提升了设计效率和性能指标。

qq_64207806的博客 957

离线迁移 Conda 环境到 Windows 服务器:用 conda-pack 摆脱硬路径限制

在进行深度学习算法的环境部署时,由于生产服务器被彻底隔离外网,只能把conda中env文件夹中的虚拟环境文件夹从开发机直接拷到Windows 服务器,但在运行labelimg等工具时可能报错,因此用conda-pack来解决。

weixin_44115575的博客 1427

Codeforces Round #121 (Div. 2)

http://codeforces.com/contest/192/problem/A 水题,这题枚举+二分可以解决,k1*(k1+1)  + k2*(k2+1) == 2* n  ,枚举k1( k1>=1 ,k1 http://codeforces.com/contest/192/problem/B  dp水题 http://codeforces.com/contest/192/pro

态度决定高度 588

Autosar结合simulink的汽车应用层软件开发实例

本文基于汽车应用开发案例,并结合Autosar相关知识,生成具有Autosar标准的汽车应用层开发代码,以供学习和参考。以上就是本篇内容,主要是利用Simulink创建Autosar接口并进行端口映射的方法。

m0_64899535的博客 2152

Codeforces Round #192 (Div. 2) (330B) B.Road Construction

题意: 要在N个城市之间修建道路,使得任意两个城市都可以到达,而且不超过两条路,还有,有些城市之间是不能修建道路的。 思路: 要将N个城市全部相连,刚开始以为是最小生成树的问题,其实就是一道简单的题目。 要求两个城市之间不超过两条道路,那么所有的城市应该是连在一个点上的,至于这个点就很好找了,只要找到一个没有和其他点有道路限制的即可。 //cf 1...

146

comsol如何实现五厚度的单元模拟?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值 。

**My Coding Family** 470

汽车UDS诊断之诊断会话控制服务(0x10)深度剖析

DiagnosticSessionControl就是诊断会话控制。 请求消息定义 A_Data类型 参数名称 Cvt 字节值 助记符 #1 诊断会话控制请求SID M 0x10 DSC #2 子功能=[诊断会话类型] M 0x00-0xFF LEV_DS_ ...

心骗小白话的博客 7419

Codeforces Round #192 (Div. 2) E. Graph Reconstruction (随机算法)

E. Graph Reconstruction time limit per test 3 seconds memory limit per test 256 megabytes input standard input output standard output I have an undirected graph consisti

To be what you what to be! 1422

一个 ABAP 工具,能打印系统里某个用户对 BSP 应用的浏览历史记录

只要一个用户在 SAP ABAP 系统里浏览过 BSP 页面,会留下浏览历史记录。本工具会解析出这些记录,打印出该用户浏览的历史事件,和浏览过的页面名称。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 546

Codeforces Round #192 (Div. 2) C. Purification

题目链接:http://codeforces.com/contest/330/problem/C 思路:只需判断每行是否都存在一个‘.’    或者每列是否都存在一个‘.' 就够了   不用想复杂了   如果都不存在的话答案就不存在  有一个存在则输出每一行或者列的一个点就够了 因为如果行列都不满足的话  因为行列必定相交  所以必有一个点不能被“purify” 感想:CF呀CF,逢打必跪,

To be what you what to be! 1469

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Codeforces Round #772 (Div. 2) ABC

Problem - A - Codeforces 题目大意:给定一个长度为n的数组a,我们可以选择两个不同的整数i,j(1≤i<j≤n),用x替换ai,用y替换aj(x和y是非负整数)。为了不破坏数组,必须保持ai | aj = x | y,其中|表示按位or运算。 请输出使用上述运算任意次后所能得到的数组的最小和。 input 4 3 1 3 2 5 1 2 4 8 16 2 6 6 3 3 5 6 output 3 31 6 7 从0开始依次进行或运算即可。 ..

qq_51376774的博客 241

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Codeforces Round #192 (Div. 2) A题

今天在做比赛被虐了,于是做做CF,没想到又被虐了,第一题本来是有思路的,就是卡在一个地方了! 以下借鉴大神的思路: 一: #include #include #include #include using namespace std; #define clr(u) memset(u,0,sizeof(u)) int main() { int ans; int i,j;

傻笨 679

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Codeforces Round #192 (Div. 2) 题解报告

A - Cakeminator     题意: 怪兽吃cake一次吃一排或一行..但不能吃到草莓..问最多能吃掉多少cake...     思路:一个cake之所以吃不掉,是因为其同行的有草莓..同列的也有草莓..统计所有的cake..减去上述的cake既是答案... Program: #include #include #include #include #include #includ

zzyzzy12 871

Codeforces Round #192 (Div. 2)-B. Road Construction

B. Road Construction time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output A country has n cities. Initially, the

ecjtu_acm_菜鸟—鱼尾尾 972

Codeforces Round #769 (Div. 2) A ~ C

https://codeforces.com/contest/1632/problem/A 题意:给定一个字符串,由01组成,可以去掉头尾任意数量的字符,问是否可以构成长度大于1的回文串。 题解:当字符串长度为1时,不能,长度为2时,若首尾不同则不能,若大于等于三,则可以。 int main() { int t; cin >> t; while (t--) { int n; string res; cin >> n >> res; if (n

Ja_king_的博客 1152

Codeforces Round #192 (Div. 2) B

题意:求所有城市间,从任意城市出发,经过1条或2条边能到达其他任意城市所需建的最小边数 第一行给定n,m代表n个城市 下面m行输入:u,v代表u和v之间不允许建边 输出首先是建立的边数 然后下面输出这些边 思路:输出个星X图(忘记叫什么名字了。。离散里的) 就是找一个能和所有点建边的点(不允许边中度为0),然后这个点和所有点建边即可 B. Road Constructi

九野的博客 1649

Codeforces Round #772 (Div. 2)

Codeforces Round #772 (Div. 2)

AC__dream的博客 716

Codeforces Round #722(Div. 2)C

C.Parsa’s Humongous Tree 原题链接 题目大意: 有一棵树,每个节点上的权值可以在一个已知的区间取(lv≤av≤rv) (每个节点的区间可能不同), 数有一个美丽值,树的美定义为树的所有边(u,v)上的|au−av|之和。 求树的最大美丽值 输入格式 第一行包含整数t(1≤t≤250)-测试用例的数量。测试用例的描述如下。 每个测试用例的第一行包含单个整数n(2≤n≤1e5)-树中的顶点数。 下面n行中的第i行包含两个整数li和ri(1≤li≤ri≤1e9)。 接下来的n条−1行

遗落之辉的博客 231

Codeforces Round #192 (Div. 2) D. Biridian Forest (水bfs)

D. Biridian Forest time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output You're a mikemon breeder currently in th

To be what you what to be! 1259
上一篇: hdu 1693 Eat the Trees 轮廓线 插头dp
下一篇: hdu-4468-Spy-KMP+贪心
Accagain
博客等级 码龄14年 376粉丝 316原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值