当前位置: 首页 > 编程日记 > 正文

2019牛客全国多校训练三 题解

A Gragh Games

Unsolved.

B Crazy Binary String

题解:水题,子序列只要统计0和1数量,取最小值然后乘2就是答案;

对于子串:先记录0和1 前缀和的差值,然后找差值相等的距离最远的两个位置即可;

参考代码:

#include<bits/stdc++.h>
#define maxl 100010
using namespace std;int n;
int cnt[2];
int num[maxl*2];
int sum[maxl][2];
char s[maxl];
int ans1,ans2;inline void prework()
{scanf("%s",s+1);cnt[0]=cnt[1]=0;for(int i=1;i<=n;i++){cnt[s[i]-'0']++;if(s[i]=='0'){sum[i][0]=sum[i-1][0]+1;sum[i][1]=sum[i-1][1];}else{sum[i][0]=sum[i-1][0];sum[i][1]=sum[i-1][1]+1;   }}
}inline void mainwork()
{for(int i=1;i<2*maxl;i++)num[i]=-1;num[maxl]=0;ans1=0;ans2=min(cnt[0],cnt[1])*2;for(int i=1;i<=n;i++){int d=sum[i][1]-sum[i][0]+maxl;if(num[d]>=0)ans1=max(i-num[d],ans1);elsenum[d]=i;}
}inline void print()
{printf("%d %d\n",ans1,ans2);
}int main()
{int t;while(~scanf("%d",&n)){prework();mainwork();print();}return 0;
}
View Code

C Guess ETT

unsolved.

D Big Integer

https://blog.csdn.net/baiyifeifei/article/details/97318024

#include<bits/stdc++.h>
using namespace std;
typedef __int128 LL;
LL quick_pow(LL a,LL b,LL mod)
{LL ans=1;a=a%mod;while(b){if(b&1) ans=ans*a%mod;a=1LL*a*a%mod;b>>=1;}return ans;
}
LL pows(long long f,int s,int m)
{LL ans=1;int tims=s/m+(s%m!=0);while(tims){if(tims&1) ans=ans*f;f=f*f;tims>>=1;}return ans;
}
vector<LL> fac;
int cnt[50];
int tor[50],tot;
int main()
{int t;scanf("%d",&t);int p,n,m;while(t--){scanf("%d%d%d",&p,&n,&m);if(p%2==0||p%5==0){puts("0");continue;}LL phi=6LL*(p-1);if(p==3) phi=18;LL mod=9LL*p;fac.clear();for(LL i=1;i*i<=phi;i++){if(phi%i!=0) continue;fac.push_back(i);fac.push_back(phi/i);}sort(fac.begin(),fac.end());LL g=phi;for(auto x:fac){if(quick_pow(10,x,mod)==1)    {g=x;break;}}LL tmp=g;tot=0;for(LL i=2;i*i<=tmp;i++){if(g%i==0){tor[++tot]=i;cnt[tot]=0;do g/=i,cnt[tot]++;while(g%i==0) ;}}if(g>1) {tor[++tot]=g;cnt[tot]=1;}g=tmp;int mx=0;for(int i=1;i<=tot;i++) mx=max(mx,cnt[i]);LL tg=1;long long  ans=0;for(LL i=1;i<=min(mx,m);i++){tg=1;for(int j=1;j<=tot;j++) tg=tg*pows(tor[j],cnt[j],i);ans=ans+n/tg;}ans=ans+max(0,(m-mx))*(n/tg);printf("%lld\n",ans);}
}

E Trees In the Pocket II

unsolved.

F plating tree

题解:题目意思就是给你你个N*N的矩阵,里面有数字。让你找一个面积最大的子矩阵使得其中所有的数字的差不大于K;

思路:我们以枚举上下边界,然后枚举右边界,用两个单调队列分别维护最大值和最小值来确定左边界,

最大值队列下标增大,值减小,最大值队列下标增大,值增大;

参考代码:

#include<bits/stdc++.h>
using namespace std;
#define pii pair<int,int>
#define mkp make_pair
#define fi first
#define se second
typedef long long ll;
const int INF=0x3f3f3f3f;
inline int read()
{int x=0,f=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-') f=-1;ch=getchar();}while(ch>='0'&&ch<='9'){x=x*10+ch-'0'; ch=getchar();}return x*f;    
}const int maxn=520;
int T,n,k,a[maxn][maxn];
int mx[maxn],mn[maxn],q1[maxn],q2[maxn];int main()
{T=read();while(T--){n=read();k=read();for(int i=1;i<=n;++i)for(int j=1;j<=n;++j) scanf("%d",&a[i][j]);int l1,r1,l2,r2,ans=0;for(int up=1;up<=n;++up){memset(mx,0,sizeof(mx));memset(mn,INF,sizeof(mn));for(int dn=up;dn<=n;++dn){l1=l2=r1=r2=0;for(int r=1,l=0;r<=n;++r){mx[r]=max(mx[r],a[dn][r]);mn[r]=min(mn[r],a[dn][r]);while(l1<r1 && mx[q1[r1-1]]<mx[r]) --r1;while(l2<r2 && mn[q2[r2-1]]>mn[r]) --r2;q1[r1++]=r; q2[r2++]=r;while(l1<r1 && l2<r2 && mx[q1[l1]]-mn[q2[l2]]>k){if(q1[l1]<q2[l2]) l=q1[l1++];    else l=q2[l2++];}ans=max(ans,(dn-up+1)*(r-l));}    }}printf("%d\n",ans);    }return 0;
}
View Code

G Removing Stone

unsolved.

H Magic Line

题解:只要按照横坐标为第一排序关键字,纵坐标为第二关键字排个序就行了。

然后在中间两个点之间画一条直线并使得他与其他点不想交就行了(斜率取得很大就行了)

参考代码:

#include<bits/stdc++.h>
#define maxl 200010
using namespace std;int n,nn;
struct node
{int x,y;
}a[maxl];
vector <int> b[maxl];
int num[maxl];inline void prework()
{scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%d%d",&a[i].x,&a[i].y);num[i]=a[i].x;}sort(num+1,num+1+n);nn=unique(num+1,num+1+n)-num-1;for(int i=1;i<=nn;i++)b[i].clear();for(int i=1;i<=n;i++){  a[i].x=lower_bound(num+1,num+1+nn,a[i].x)-num;b[a[i].x].push_back(a[i].y);}
}inline void mainwork()
{int l,sum=0,h;bool flag;for(int i=1;i<=nn;i++){sort(b[i].begin(),b[i].end());l=b[i].size();for(int j=0;j<l;j++){sum++;if(sum==n/2){h=b[i][j];break;}}if(sum==n/2){int y1=h+8*1e8,y2=h-8*1e8;y2++;printf("%d %d %d %d\n",num[i]-1,y1,num[i]+1,y2);return;}}
}int main()
{int t;scanf("%d",&t);for(int i=1;i<=t;i++){prework();mainwork();
//      print();
    }return 0;
}
View Code

I Median

题解:https://blog.csdn.net/liufengwei1/article/details/97392482

 1 #include<bits/stdc++.h>
 2 #define maxl 100010
 3 using namespace std;
 4 
 5 int n;
 6 int b[maxl];
 7 int v[maxl][3],f[maxl][3][3],pre[maxl][3][3];
 8 bool flag;
 9 int ans[maxl];
10 
11 inline void prework()
12 {
13     scanf("%d",&n);
14     for(int i=3;i<=n;i++)
15         scanf("%d",&b[i]);
16     b[2]=b[1]=b[3];
17     b[n+1]=b[n+2]=b[n];
18     v[1][0]=v[1][1]=v[1][2]=b[1];
19     for(int i=2;i<=n;i++)
20         v[i][0]=b[i],v[i][1]=b[i+1],v[i][2]=b[i+2];
21     for(int i=1;i<=n;i++)
22         sort(v[i],v[i]+2);
23 }
24 
25 inline int sorta(int a,int b,int c)
26 {
27     if(a>b) swap(a,b);
28     if(a>c) swap(a,c);
29     if(b>c) swap(b,c);
30     return b;
31 }
32 
33 inline void mainwork()
34 {
35     for(int i=1;i<=n;i++)
36         for(int j=0;j<3;j++)
37             for(int k=0;k<3;k++)
38                 f[i][j][k]=0,pre[i][j][k]=0;
39     for(int j=0;j<3;j++)
40         for(int k=0;k<3;k++)
41             f[2][j][k]=1;
42     for(int i=3;i<=n;i++)
43         for(int j=0;j<3;j++)
44             for(int k=0;k<3;k++)
45                 for(int l=0;l<3;l++)
46                 if(f[i-1][k][l])
47                 {
48                     if(sorta(v[i-2][l],v[i-1][k],v[i][j])==b[i])
49                     {
50                         f[i][j][k]=1;pre[i][j][k]=l;
51                         break;
52                     }
53                 }
54     flag=false;int jj,kk,l;
55     for(int j=0;j<3 && !flag;j++)
56         for(int k=0;k<3;k++)
57         if(f[n][j][k])
58         {
59             jj=j;kk=k;
60             flag=true;
61             break;
62         }
63     if(!flag) return;
64     for(int i=n;i>=2;i--)
65     {
66         ans[i]=v[i][jj];
67         l=pre[i][jj][kk];
68         jj=kk;kk=l;
69     }
70     ans[1]=b[1];
71 }
72 
73 inline void print()
74 {
75     if(!flag)
76         puts("-1");
77     else
78         for(int i=1;i<=n;i++)
79             printf("%d%c",ans[i],(i==n)?'\n':' ');
80 }
81 
82 int main()
83 {
84     int t;
85     scanf("%d",&t);
86     for(int i=1;i<=t;i++)
87     {
88         prework();
89         mainwork();
90         print();
91     }
92     return 0;
93 }
View Code

J LRU management

参考代码:

#include<bits/stdc++.h>
#define maxl 500010
using namespace std;int n,m,tot,nn,cnt;
int tr[maxl*11][11],num[maxl*11];
int nxt[maxl],pre[maxl],val[maxl];
struct qu
{int op,s,v;
}q[maxl];
char s[11];
bool in[maxl];inline int insert(char s[])
{int len=strlen(s),u=0,c;for(int i=0;i<len;i++){c=s[i]-'0';if(tr[u][c]==0)tr[u][c]=++tot;u=tr[u][c];}if(num[u]==0)num[u]=++cnt;return num[u];
}inline void prework()
{scanf("%d%d",&n,&m);for(int i=0;i<=tot;i++){num[i]=0;memset(tr[i],0,sizeof(tr[i]));}tot=0;cnt=0;for(int i=1;i<=n;i++){ scanf("%d%s%d",&q[i].op,s,&q[i].v);q[i].s=insert(s);}
}inline void mainwork()
{for(int i=1;i<=cnt;i++)nxt[i]=0,pre[i]=0,in[i]=false,val[i]=0;int head=0,tail=0;int ans,sz=0,l,r;for(int i=1;i<=n;i++){ans=0;if(q[i].op==0){if(!in[q[i].s]){in[q[i].s]=true;if(head==0){tail=head=q[i].s;pre[q[i].s]=nxt[q[i].s]=0;val[q[i].s]=q[i].v;sz++;}else{sz++;val[q[i].s]=q[i].v;in[q[i].s]=true;pre[q[i].s]=tail;nxt[q[i].s]=0;nxt[tail]=q[i].s;tail=q[i].s;}}else{if(sz>1 && tail!=q[i].s){l=pre[q[i].s];r=nxt[q[i].s];if(l>0)nxt[l]=r;if(r>0)pre[r]=l;if(q[i].s==head)head=r,pre[r]=0;nxt[tail]=q[i].s;nxt[q[i].s]=0;pre[q[i].s]=tail;tail=q[i].s;}}if(sz>m){sz--;in[head]=false;val[head]=0;r=nxt[head];pre[head]=0;nxt[head]=0;pre[r]=0;head=r;}ans=val[q[i].s];printf("%d\n",ans);}else{ans=-100;if(in[q[i].s]){if(q[i].v==1){if(nxt[q[i].s]>0 && in[nxt[q[i].s]])ans=val[nxt[q[i].s]];}else if(q[i].v==-1){if(pre[q[i].s]>0 && in[pre[q[i].s]])ans=val[pre[q[i].s]];}elseans=val[q[i].s];}if(ans==-100)puts("Invalid");elseprintf("%d\n",ans);}}
}int main()
{int t;scanf("%d",&t);for(int i=1;i<=t;i++){prework();mainwork();}return 0;
}
View Code


后面题解慢慢更新~

转载于:https://www.cnblogs.com/songorz/p/11246847.html

相关文章:

【硬件基础】有源蜂鸣器与无源蜂鸣器

辨别方法 外观&#xff1a; 无源蜂鸣器: 有源蜂鸣器&#xff1a; 注&#xff1a;可以看到底部有绿色电路板的是无源蜂鸣器&#xff0c;底部是黑胶的为有源蜂鸣器 万用表电阻档检测 无源蜂鸣器&#xff1a;发出咔、咔声的且电阻只有8Ω&#xff08;或16Ω&#xff09;。 有源…

hdu 1272 小希的迷宫

Problem Description上次Gardon的迷宫城堡小希玩了很久&#xff08;见Problem B&#xff09;&#xff0c;现在她也想设计一个迷宫让Gardon来走。但是她设计迷宫的思路不一样&#xff0c;首先她认为所有的通道都应该是双向连通的&#xff0c;就是说如果有一个通道连通了房间A和B…

技术还是商业重要

在中国IT业创业听得最多的就是&#xff0c;技术不重要&#xff0c;商业和关系才是最重要的。 到了硅谷之后&#xff0c;发现技术气氛十分浓&#xff0c;甚至有朋友说大陆创业比较容易是因为硅谷与之相比&#xff0c;硅谷太注重技术了。 可是慢慢发现其实在硅谷&#xff0c;商业…

bzoj1036: [ZJOI2008]树的统计Count 树链剖分

一棵树上有n个节点&#xff0c;编号分别为1到n&#xff0c;每个节点都有一个权值w。我们将以下面的形式来要求你对这棵树完成一些操作&#xff1a; I. CHANGE u t : 把结点u的权值改为t II. QMAX u v: 询问从点u到点v的路径上的节点的最大权值 III. QSUM u v: 询问从点u到点v的…

cocos lua 加密方案

cocos2d使用的是luajit&#xff0c;lua原生编译出来的bytecode和luajit是不兼容的&#xff0c;所以直接用luac法编译出来的bytecode脚本无法在cocos2d中使用。 目前所指的解决方案有2个&#xff1a; A.luajit加密&#xff1a; 1、官网下载luajit&#xff08;http://luajit.org/…

VS2010创建ATL类时需要手动填写ProgID

在新建ATL类的时候VS2010默认是不填写ProgID的&#xff1a; 所以默认创建的类生成的rgs文件中只有NoRemove CLSID这一栏&#xff0c;导致在JS中使用new ActivexObject(“LibName.ClassName”)失败。如果想用ActivexObject创建类的话就必须填写ProgID。转载于:https://www.cnblo…

【官网搭建】在网站首页底部添加备案号链接至工信部首页及版权所有。

在网站首页底部添加备案号链接至工信部首页及版权所有。&#xff08;工信部链接&#xff1a;http://beian.miit.gov.cn或http://www.beian.miit.gov.cn&#xff09; 在搭建网址的时候你是否受到过这种邮件&#xff1f; 下面提供一个代码模板 <div class"foot_bot&quo…

如何在linux下解压缩rar格式的文件压缩包

前言&#xff1a;没有特殊原因&#xff0c;文档如果要传到linux上&#xff0c;一定要打成*.zip格式&#xff0c; 这样方便解压&#xff0c;一般来说没有理由要用rar.关于 linux上unzip命令有空细讲&#xff0c; 本节讲下&#xff0c;如何让linux支持解压缩rar文件 一 、系统环境…

appium+python自动化45-夜神模拟器连不上(adb server version (36) doesn't match this client (39); killing...)...

前言 最新下了个最新版的夜神模拟器&#xff0c;然后adb devices发现连不上模拟器了&#xff0c;报adb server version (36) doesnt match this client (39); killing... 从报错信息看是adb版本不匹配导致的&#xff0c;接下来讲如何解决这个问题 环境&#xff1a; 夜神模拟器 …

Android.mk文件语法规范

序言&#xff1a; ------------- 此文档旨在描述Android.mk文件的语法&#xff0c;Android.mk文件为Android NDK(原生开发&#xff09;描述了你C/C源文件。为了明白下面的内容&#xff0c;你必须已经阅读了docs/OVERVIEW.TXT的内容&#xff0c;它解释了Android.mk文件扮演的角色…

【硬件基础】制作直流电源

要求&#xff08;其实就是个课设&#xff09;&#xff1a; 利用二极管的基本特性、三极管的基本特性、稳压电源等知识&#xff0c;设计相 应的模拟电路&#xff0c;设计制作放大倍数可变的直流放大器。 任务要求&#xff1a; &#xff08;1&#xff09;用集成芯片制作一个 0~1…

RanceQuest2_从委托到Lambda_会用(递归数学函数)

二连发 使用Lambda表达式编写递归函数 ——摘自老赵点滴 - 追求编程之美。 todo用手敲30遍&#xff0c;搞定——泛型委托&#xff0c;Lambda表达式&#xff0c;简单的数学递归。 遗憾的是&#xff0c;原本希望更进一步做出一个通用的递归方法表达式出来&#xff0c;受所学所限&…

[转载].sscanf的用法

原作者不详。 名称: sscanf() - 从一个字符串中读进与指定格式相符的数据. 函数原型: Int sscanf( string str, string fmt, mixed var1, mixed var2 ... ); int scanf( const char *format [,argument]... ); 说明&#xff1a; sscanf与scanf类似&#xff0c;都是用于输入的&a…

As与强制类型转换的区别以及Is运算符的使用

前言&#xff1a; 开发人员经常需要将一个对象从一个类型转换成其他类型。 在c#中&#xff0c;类型转换按照转换方式分类分为了隐式转换和显式转换&#xff0c;按对象分类又分为了值类型转换和引用类型转换  CLR(参考&#xff1a;http://baike.baidu.com/view/605055.htm)允许…

SQL命令执行数据库备份

backup database XXXXX to diskD:\Bak\BACKUP.bak with init XXXXX是数据库名字转载于:https://www.cnblogs.com/lx0831/archive/2009/04/07/1431115.html

【硬件基础】振荡(时钟)周期、状态周期、机械周期、指令周期

前言&#xff1a; 尽管关于单片机的各种周期在网上随便一查就能查到&#xff0c;但于博主个人而言容易搞混&#xff0c;于复习定时器时决定写下这篇博客&#xff0c;相当于一次知识复习总结 振荡&#xff08;时钟&#xff09;周期&#xff1a; 以12M的单片机为例&#xff0c;其…

14条改善jquery代码的建议

2019独角兽企业重金招聘Python工程师标准>>> 从国外网站找到的。 http://www.tripwiremagazine.com/ajax/developer-toolbox/more-jquery-and-general-javascript-tips-to-improve-your-code.html 很有用。 转载于:https://my.oschina.net/dlpinghailinfeng/blog/26…

HDFS配额查询

### 查看目录配额 hdfs dfs -count -q -h /user/hive/warehouse/db_name.db ### 查看整个HDFS的空间大小 hdfs dfs -df -h /user/ Filesystem Size Used Available Use% hdfs://hdfs01 10 P 8 P 2 P 80%### 查看指定目录/数据库的大小 hdfs …

# 命令行新建 job 错误: ORA-01008 并非所有变量都已绑定 。

# 命令行新建 job 错误: ORA-01008 并非所有变量都已绑定 。 1、改正前代码: DECLARE job NUMBER; begin sys.dbms_job.submit(job > :job, what > P_AUTO_FETCH_RECORDS;, next_date > to_date(10-05-2011 15:58:35, dd-mm-yyyy hh24:mi:ss), interval > s…

【单片机】以输出方波为例的 定时器使用

实验要求&#xff1a; 利用Proteus软件画出电路图&#xff0c;单片机定时器/计数器以查询方式工作&#xff0c;在P1.0口产生周期为100us的连续方波&#xff0c;在P1.0口线上接上示波器观察波形。 前言&#xff1a;写这篇博客的意义在于&#xff0c;借助本实验可以复习定时器中断…

经典GNA整理

最近学习了各种GAN的结构。在此记录下。 转载于:https://www.cnblogs.com/yeran/p/11251842.html

Global.asax

GlobalFilterCollectionRepresents a classthat contains all the globalfilters.HandleErrorAttributemvc中提供了HandleErrorAttribute特性&#xff0c;该特性用于处理由操作方法引发的异常AreaRegistration.RegisterAllAreas();注册 ASP.NET MVC 应用程序中的所有区域RouteC…

leetcode_1. Two Sum

leetcode_1. Two Sum 前言&#xff1a; 这段时间开始敲leetcode。我认为这并不仅仅只是为了应付笔试&#xff0c;面试。而是确实有着一定的意义。 尤其&#xff0c;你提交代码后&#xff0c;网站会多方面验证你的答案。 另外&#xff0c;提交成功后&#xff0c;你可以查看自己的…

linux ngxtop安装安装及使用

写在前面&#xff1a; ngxtop是Nginx日志实时分析利器 1.下载 下载地址&#xff1a;https://github.com/lebinh/ngxtop 下载zip文件到本地 登录linux服务器&#xff0c;定位到安装目录&#xff0c;执行 rz&#xff0c;选中上一步下载的zip文件&#xff0c;上传完成后执行unzip…

POJ1088(滑雪)

题目链接 动态规划题。 题目大意&#xff1a;给定一个二维数组&#xff0c;数组中每个数代表一个高度&#xff0c;每次只能向相邻且高度下降的方向移动&#xff0c;求最长的移动距离。 View Code 1 #include <stdio.h>2 #include <memory.h>3 #define MAX(a,b) ((…

【硬件基础】个人感悟+C语言 引入头文件时引号括号的区别

前言&#xff1a; 惊&#xff01;一博主又在水博客 其实不然&#xff0c;单片机从大一下半年就已经开始自学&#xff0c;但是可能是由于高中养成的惰性思维&#xff0c;不愿意思考&#xff0c;只想靠时间来获得内心的满足感&#xff1a;看我今天又学了一天。其实&#xff0c;假…

走在网页游戏开发的路上(八)

游戏中定时器的设计 0. 前言 在游戏开发中计时器/定时器是必须的&#xff0c;而且会在多处用到&#xff0c;如吃药补血每秒回10点且持续1分钟、玩家从一点到达另一点的过程需要多少时间。下面是定时器在七雄争霸中的几个应用场景&#xff0c;直接上图&#xff1a; 场景1&#…

[epoll]epoll理解

转自&#xff1a;http://blog.51cto.com/yaocoder/888374 1. 流 首先我们来定义流的概念&#xff0c;一个流可以是文件&#xff0c;socket&#xff0c;pipe等等&#xff0c;可以进行I/O操作的内核对象&#xff0c;不管是文件&#xff0c;还是套接字&#xff0c;还是管道&#x…

[kuangbin带你飞]专题五 并查集 E - 食物链 (带权并查集)

E - 食物链 题目链接&#xff1a;https://vjudge.net/contest/66964#problem/E 动物王国中有三类动物A,B,C&#xff0c;这三类动物的食物链构成了有趣的环形。A吃B&#xff0c; B吃C&#xff0c;C吃A。 现有N个动物&#xff0c;以1&#xff0d;N编号。每个动物都是A,B,C中的一种…

关于内网linux系统如果安装nodejs,npm,express,mongodb,forever等

内网的linux系统要安装nodejs以及express等系列的框架&#xff0c;因为系统是局域网和互联网是物理隔离的&#xff0c;所以&#xff0c;没法像官网的安装教程那样直接install了&#xff0c;只能手动安装&#xff0c;这里已经我们自己的linux 系统suse10 为例&#xff1a; 1 No…