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 }

但是它很不给力,两个小时只跑出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 }

原文地址:https://www.cnblogs.com/Juve/p/11206353.html

时间: 2024-07-31 15:51:32

20190718考试70分记的相关文章

20190719考试60分记

暑假前最后一场考试了,当考试一开始,看到题目,我就觉得题目有些怪异 果然,我读完三道题后,发现都不可做 约定这道题,打了个暴力dfs,30分拿到 第二题,看一眼数据范围,发现n=m时有且仅有一个环,判断一下就好了 然后感觉是tarjan求割边,求完了之后把1放到一个边双中,再跑dfs 第三题,瞎敲了一个组合数,但一分都没有 三道题都是多组测试数据,不好qj测试点 最终得分60,rk16 这5天总分rk21,第二机房房主,暑假再努力吧 原文地址:https://www.cnblogs.com/Ju

NOIP2017既本人初三上期中考试 滚粗记

NOIP2017既本人初三上期中考试 滚粗记 风也悠悠,雨也悠悠. 猝不及防的,突然来临的,是四天连考. 没反应过来的我,仍然沉醉在10月的余晖中,望着11月,远远的. 然而11月是一个神犇,仿佛用什么加了黑魔法的程序,穿越了时空,摆在我面前的是期中考试和NOIP两大难题. (不过期中考试第一天好像没下雨) Day -2 在紧张的NOIP复习中,9:00了,成功A了一道矩阵难题. 发现语文还没有复习过.真羡慕那些语文都能AK的大佬-- 拿起语文复习资料-- [疲] 还是看进去了一些,让我语文的信

70分产品经理——数据驱动产品之路

上周同一做奢侈品电商的大哥聊天,他希望能够找到一个有女性视角的产品经理来改造现有产品,从女性的角度来优化产品体验,提升销售额. 由此,引发我的观点: 一个化腐朽为神奇,能够切中消费者命脉的产品经理,能够实现从70分到90分质的飞跃.但这样的人才往往是可遇而不可求: 基于数据驱动产品,去分析和优化用户的每一步路径,实现产品量的积累,做到70分的产品,可能是更务实的方法. 70分产品经理,不是一骑绝尘的快马,确实可以负重前行千里 WHO 用户是谁?看起来这个问题有一个最直观的答案,对于奢侈品电商来说

Codeforces掉分记 round318(div2)

Codeforces掉分记 round318(div2) 又升回紫名了233,这一次就差一点点就AK了,还没有AK过. (以下题目描述摘自codeforces) A题 Bear and Elections 题目描述 Limak is a grizzly bear who desires power and adoration. He wants to win in upcoming elections and rule over the Bearland. There are n candida

ccf 201712-4 行车路线(70分)

ccf 201712-4 行车路线 解题思路: 首先Dijkstra是基于贪心算法的,即每一次作出的选择都具有贪心选择性.此题由于有"如果连续走小道,小明的疲劳值会快速增加,连续走s公里小明会增加s2的疲劳度."这种情况,所以不能使用Dijkstra算法. 这里使用Bellman-Ford算法 70分备份待修改: 1 #include<iostream> 2 #include<cstring> 3 using namespace std; 4 int n,m;/

「PKUSC2018」星际穿越 (70分做法)

5371: [Pkusc2018]星际穿越 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 27  Solved: 11[Submit][Status][Discuss] Description 有n个星球,它们的编号是1到n,它们坐落在同一个星系内,这个星系可以抽象为一条数轴,每个星球都是数轴上的一个点, 特别地,编号为i的星球的坐标是i. 一开始,由于科技上的原因,这n个星球的居民之间无法进行交流,因此他们也不知道彼此的存在. 现在,这些星球独

Codeforces Round #535 (Div. 3)小上分记

Codeforces Round #535 (Div. 3)小上分记 前言 被拉去买新年衣服了,导致半小时后才进场. 虽然做了4道题,但是rating还是涨得不多. 用predictor看了rating变化后心灰意冷,不看E题了. A ...800的难度. B 本来还在想要不要用什么STL.后来发现直接用桶就行了.然后就可以水过了. C 题意差点理解不了. 就6种情况都去考虑一下,找最小代价的即可.不要考虑少了. 每次都是\(O(n)\)的,所以能搞. D 贪心地换字母即可. E 坑.待填. 原

模拟赛 10-14考试再次翻车记

10-14 考试 7点开始考试,第一题傻逼题啊,直接取模过程中加上商就可以了,切掉切掉. 1.光剑 (sword.pas/c/cpp) [题目描述] 小林和亮亮各有一把光剑,长度分别为 a 和 b,他们拿光剑进行比试.每一 回合,长光剑会砍向短光剑,砍完后,短光剑完好无损,而长光剑则被截成两段, 被截去的长度恰好等于短光剑的长度.若两把光剑长度相等,则比试结束.请问 小林和亮亮将比试多少回合? [输入格式] 第一行一个整数 T,表示数据组数. 接下来 T 行每行两个正整数 a,b,表示初始状态光

07-图4 哈利&#183;波特的考试 (25 分)

哈利·波特要考试了,他需要你的帮助.这门课学的是用魔咒将一种动物变成另一种动物的本事.例如将猫变成老鼠的魔咒是haha,将老鼠变成鱼的魔咒是hehe等等.反方向变化的魔咒就是简单地将原来的魔咒倒过来念,例如ahah可以将老鼠变成猫.另外,如果想把猫变成鱼,可以通过念一个直接魔咒lalala,也可以将猫变老鼠.老鼠变鱼的魔咒连起来念:hahahehe. 现在哈利·波特的手里有一本教材,里面列出了所有的变形魔咒和能变的动物.老师允许他自己带一只动物去考场,要考察他把这只动物变成任意一只指定动物的本事