20190718考试70分记

又考试了,这次题明显感觉难多了,骗了不少分,竟然rk13

第一题一看不可做,然后看第二题

第二题一开始也没有思路,然后我就看上了k<=1的情况,

显然k=0时只要求所有数的gcd即可,

k=1的话枚举每一个树,给它加1,再求gcd,取gcd最大值

然后看第三题,k<=4有10%的数据,而且样例已经告诉你了k=2和k=3的答案,

那么剩下的只有k=0或k=1或k=4;

k=0是0,k=1是1,k=4的话数据小,dfs暴力跑出来了。

这样我就想着暴力跑更多的点,于是有了下面的暴力代码:

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<cmath>
 5 #define ll long long
 6 #define re register
 7 using namespace std;
 8 const ll mod=1e9+7;
 9 ll tot,ans=0,son[10005][3];
10 bool vis[10005];
11 ll to[10005],nxt[10005],pre[10005],cnt;
12 inline void add(re ll u,re ll v){
13     cnt++,to[cnt]=v,nxt[cnt]=pre[u],pre[u]=cnt;
14 }
15 inline void build(re ll k,re ll l,re ll r){
16     if(l==r) return ;
17     if((k<<1)>tot) return ;
18     son[k][1]=k<<1;
19     son[k][2]=k<<1|1;
20     ll mid=(l+r)>>1;
21     build(k<<1,l,mid);
22     build(k<<1|1,mid+1,r);
23 }
24 inline void DFS(re ll x,re ll now){
25     for(re ll i=1;i<=2;i++){
26         if(son[now][i]==0) continue;
27         add(x,son[now][i]),add(son[now][i],x);
28         DFS(x,son[now][i]);
29     }
30 }
31 inline void dfs(re ll x){
32     ans++;
33     vis[x]=1;
34     for(re ll i=pre[x];i;i=nxt[i]){
35         if(!vis[to[i]])
36             dfs(to[i]);
37     }
38     vis[x]=0;
39 }
40 signed main(){
41     //freopen("data.out","w",stdout);
42     for(re ll i=1;i<=10;i++){
43         cnt=0;
44         memset(pre,0,sizeof(pre));
45         tot=(1<<i)-1;
46         build(1,1,tot);
47         for(re ll j=1;j<=tot;j++){
48             DFS(j,j);
49         }
50         ans=0;
51         for(re ll j=1;j<=tot;j++){
52             dfs(j);
53             ans=((ans>=mod)?(ans-mod):ans);
54         }
55         cout<<"ans"<<i<<"="<<ans<<endl;
56     }
57     return 0;
58 }
View Code

但是它很不给力,两个小时只跑出5个点,然后没办法就粘上去了

然后又看第二题

越看越像二分,然后打了个二分,模了几个样例都过了,复杂度也差不多,就交上去了

最后第一题只好cout<<0<<endl;竟然还有20分!

20+40+10=70,我真是撞大运了

附:二分40分代码(其实这题不具备决策单调性,二分是错误的)

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #define MAXN 105
 5 #define ll long long
 6 #define re register
 7 using namespace std;
 8 ll n,k,a[MAXN],gcd,r=0,l=1,mid,ans=0,max_day,max_a;
 9 ll b[MAXN];
10 bool is_stop[MAXN];
11 inline ll GCD(ll a,ll b){
12     return b==0?a:GCD(b,a%b);
13 }
14 inline ll judge(ll x){
15     memset(b,0,sizeof(b));
16     memset(is_stop,0,sizeof(is_stop));
17     ll res=0;
18     for(re ll i=x;i<=max_day;i+=x){
19         for(re ll j=1;j<=n;j++){
20             if(is_stop[j]) continue;
21             b[j]+=x;
22             if(b[j]>=a[j]){
23                 res+=(b[j]-a[j]);
24                 is_stop[j]=1;
25             }
26         }
27     }
28     return res;
29 }
30 inline ll max(ll a,ll b){return a>b?a:b;}
31 signed main(){
32     scanf("%lld%lld",&n,&k);
33     if(k==0){
34         for(re ll i=1;i<=n;i++){
35             scanf("%lld",&a[i]);
36             if(a[i]==1){
37                 cout<<1<<endl;
38                 return 0;
39             }
40             if(i==1) gcd=a[i];
41             else gcd=GCD(gcd,a[i]);
42         }
43         printf("%lld\n",gcd);
44         return 0;
45     }
46     if(k==1){
47         for(re ll i=1;i<=n;i++){
48             scanf("%lld",&a[i]);
49             if(i==1) gcd=a[i];
50             else gcd=GCD(gcd,a[i]);
51         }
52         for(re ll i=1;i<=n;i++){
53             a[i]++;
54             ll temp=a[1];
55             for(re ll j=2;j<=n;j++){
56                 temp=GCD(temp,a[j]);
57             }
58             a[i]--;
59             gcd=max(gcd,temp);
60         }
61         printf("%lld\n",gcd);
62         return 0;
63     }
64     for(re ll i=1;i<=n;i++){
65         scanf("%lld",&a[i]);
66         r=max(r,a[i]);
67     }
68     max_a=r;
69     r+=k;
70     while(l<=r){
71         mid=(l+r)>>1;
72         if(max_a%mid==0) max_day=max_a;
73         else max_day=(max_a/mid+1)*mid;
74         if(judge(mid)<=k){
75             ans=max(ans,mid),l=mid+1;
76         }else r=mid-1;
77     }
78     printf("%lld\n",ans);
79     return 0;
80 }
View Code

 

转载于:https://www.cnblogs.com/Juve/p/11206353.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/263376.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[散记]今天

前几天还下了一场不小的雪&#xff0c;冷的很。昨天出门还穿了厚毛衣和棉外套&#xff0c;起风的时候还觉得凉飕飕的。今天就热的很了&#xff0c;天气预报说最高温度有16度。出门换了薄毛衣和薄外套&#xff0c;走了一段路&#xff0c;竟是闷热的很&#xff0c;索性将外套脱掉…

随笔03

Application -- HOOKUP -- Interpreters 转载于:https://www.cnblogs.com/soulnearby/archive/2011/07/08/2100734.html

Struts2 文件上传,下载,删除

本文介绍了&#xff1a; 1.基于表单的文件上传 2.Struts 2 的文件下载 3.Struts2.文件上传 4.使用FileInputStream FileOutputStream文件流来上传 5.使用FileUtil上传 6.使用IOUtil上传 7.使用IOUtil上传 8.使用数组上传多个文件 9.使用List上传多个文件 ----1.基于表单的文件…

LeetCode—44. 通配符匹配(困难)

44. 通配符匹配&#xff08;困难&#xff09; 题目描述&#xff1a; 给定一个字符串 (s) 和一个字符模式 &#xff0c;实现一个支持 ‘?’ 和 ‘*’ 的通配符匹配。 ‘?’ 可以匹配任何单个字符。 ‘*’ 可以匹配任意字符串&#xff08;包括空字符串&#xff09;。 两个字…

怎样和客户一起搞定需求

项目刚刚开始的时期&#xff0c;项目经理做的主要事情是搜集客户需求&#xff0c;这是一个项目经理非常头疼的阶段&#xff0c;合作的磨合刚刚开始&#xff0c;需求问题上的失误又会导致无穷的后患。三种客户类型&#xff1a; 1 的确很专业。能提供基本可用的文档&#xff0c;能…

字符串后面去0、补0

去掉0 str.replaceAll("0$", "") 补0至n位 String.format("%-ns",swjgPrefix ).replace( ,0) 前面的话不要“-”号 0可以换成任意字符转载于:https://www.cnblogs.com/IceBlueBrother/p/11208433.html

疑问:C#中的委托

我这几天一直在看C#的书&#xff0c;知道了委托是怎么回事&#xff0c;但我一直不能理解这个委托是用在什么地方&#xff0c;有什么好处&#xff0c;请高手指点。 转载于:https://www.cnblogs.com/yjlft/archive/2006/04/03/365443.html

火狐、IE浏览器实现Extjs的grid表格的复制、粘贴

2019独角兽企业重金招聘Python工程师标准>>> 从后台获取参数&#xff0c;一次填入ext&#xff1a;grid网状表格&#xff0c;发现表格内的数据不能复制粘贴&#xff0c;只能read...&#xff0c;火狐和IE 11都不能复制。 火狐解决方案 局部定义表格复制、粘贴的样式&a…

LeetCode—279. 完全平方数

279. 完全平方数 题目描述&#xff1a; 给你一个整数 n &#xff0c;返回和为 n 的完全平方数的最少数量 。 完全平方数 是一个整数&#xff0c;其值等于另一个整数的平方&#xff1b;换句话说&#xff0c;其值等于一个整数自乘的积。例如&#xff0c;1、4、9 和 16 都是完全…

Form表单的主要Content-Type

在Spa单页面横行的时代&#xff0c;前后端交互基本都是Json交互&#xff08;也有通过FormData的&#xff0c;比如上传文件&#xff09;。而在之前的Jsp&#xff0c;Php前后不分家的时候&#xff0c;前后交互好大一部分都是通过Form表单来完成的。From标签个属性叫 enctype&…

百慕大三角和中国娱乐界

百慕大三角神秘莫测玄机重重哥伦布在他的航海日志中记载曾经见到"拥有钢铁幕墙的巨型船只"而这些船只却来自当代的美国航运巨子一架波音747在该海域坠毁躲在洗手间的6岁小女孩是唯一的幸存者但是在两个小时之后被营救出来时她已经变成了白发苍苍的老奶奶有多少船只和…

perl子例程

2019独角兽企业重金招聘Python工程师标准>>> sub 子例程名($$)指定两个标量的参数 ($)指定一个数组 按引用调用 符号引用 typeglob 类似于UNIX文件系统中的软链接 星号(*)适用于任意类型的变量&#xff0c;包括标量&#xff0c;数组&#xff0c;散列&#xff0c;文件…

基于并查集的kruskal算法

#include <iostream> //并查集的kruskal算法using namespace std;const int max_ve1005,max_ed15005;int n,m,i; //n,m分别记录顶点数和边数struct node{int par,ans;}vertex[max_ve]; //顶点struct Edge {int u,v,weigh;}edge[max_ed]; //边int…

LeetCode—282. 给表达式添加运算符(困难)

282. 给表达式添加运算符&#xff08;困难&#xff09; 题目描述&#xff1a; 给定一个仅包含数字 0-9 的字符串 num 和一个目标值整数 target &#xff0c;在 num 的数字之间添加 二元 运算符&#xff08;不是一元&#xff09;、- 或 * &#xff0c;返回 所有 能够得到 targe…

小程序 生成条形码barcode.js

1、下载barcode.js&#xff0c;新建一个文件wxbarcode.js用于计算条形码的宽高&#xff0c;以自适应不同手机屏显示 var barcode require(./barcode); function convert_length(length) {return Math.round(wx.getSystemInfoSync().windowWidth * length / 750); }function ba…

FormView在什么情况下自动生成模板项?

刚才在鼓捣GridView与FormView&#xff0c;记得前一段时间在做时&#xff0c;点击gridview中的一项会在formview中显示详细的数据&#xff0c;而在 formview中只有编写了ItemTemplate等模板才会显示&#xff0c;我清楚的记得上次我并没有手工去编写itemTemplate模板&#xff0c…

支持向量机的优缺点

原文&#xff1a;http://blog.sina.com.cn/s/blog_6d979ba00100oel2.htmlSVM有如下主要几个特点&#xff1a;(1)非线性映射是SVM方法的理论基础,SVM利用内积核函数代替向高维空间的非线性映射&#xff1b;(2)对特征空间划分的最优超平面是SVM的目标,最大化分类边际的思想是SVM方…

udp包大小选折及原因(mtu)

以太网(Ethernet)数据帧的长度必须在46-1500字节之间,这是由以太网的物理特性决定的.这个1500字节被称为链路层的MTU(最大传输单元).但这并不是指链路层的长度被限制在1500字节,其实这这个MTU指的是链路层的数据区.并不包括链路层的首部和尾部的18个字节.所以,事实上,这个1500字…

Java遍历Map的几种方式

方法一&#xff1a;使用lambda表达式 Map<Integer, Integer> temp new HashMap<>(); temp.put(1,1); temp.put(2,1); temp.put(3,1); temp.forEach((k, v) -> System.out.println(v));其中&#xff0c;k是键&#xff0c;v是值 运行结果&#xff1a; 方法二&…

2019牛客暑期多校训练营(第一场) - B - Integration - 数学

https://ac.nowcoder.com/acm/contest/881/Bhttps://www.cnblogs.com/zaq19970105/p/11210030.html 试图改写多项式&#xff1a; \[\frac{1}{\prod_{i1}^{n}a_i^2x^2}\] 这个多项式用待定系数法设为&#xff1a; \[\frac{1}{\prod_{i1}^{n}a_i^2x^2}\sum_{i1}^{n}\frac{c_i}{a_…