A、B都是暴力搞一搞。

A:

 1 #include<bits/stdc++.h>
 2 #define fi first
 3 #define se second
 4 #define mk make_pair
 5 #define pii pair<int,int>
 6 #define read(x) scanf("%d",&x)
 7 #define sread(x) scanf("%s",x)
 8 #define dread(x) scanf("%lf",&x)
 9 #define lread(x) scanf("%lld",&x)
10 using namespace std;
11
12 typedef long long ll;
13 const int inf=0x3f3f3f3f;
14 const int INF=0x3f3f3f3f3f3f3f3f;
15 const int N=1e6+7;
16 const int M=2333;
17
18 ll w[1001];
19 int a,b;
20 int main()
21 {
22     for(int i=1;i<=1000;i++)
23         w[i]=w[i-1]+i;
24     read(a);read(b);
25     if(a>b)
26         swap(a,b);
27     ll ans=INF;
28     for(int i=a;i<=b;i++)
29     {
30         ans=min(ans,w[i-a]+w[b-i]);
31     }
32     printf("%lld\n",ans);
33     return 0;
34 }
35 /*
36 */

View Code

B:

#include<bits/stdc++.h>
#define fi first
#define se second
#define mk make_pair
#define pii pair<int,int>
#define read(x) scanf("%d",&x)
#define sread(x) scanf("%s",x)
#define dread(x) scanf("%lf",&x)
#define lread(x) scanf("%lld",&x)
using namespace std;typedef long long ll;
const int inf=0x3f3f3f3f;
const int INF=0x3f3f3f3f3f3f3f3f;
const int N=1e6+7;
const int M=2333;ll w[1001];
int n,a,b;
vector<int> v[20];
int main()
{read(n);read(a); read(b);for(int i=1;i<=n;i++)v[0].push_back(i);for(int i=0;i<=n;i++){if(v[i].size()==2)break;for(int j=0;j<v[i].size();j+=2){if(v[i][j]==a && v[i][j^1]==b || v[i][j]==b && v[i][j^1]==a){printf("%d\n",i+1);return 0;}if(v[i][j^1]==a || v[i][j^1]==b)v[i+1].push_back(v[i][j^1]);elsev[i+1].push_back(v[i][j]);}}puts("Final!");
}
/*
*/

View Code

C题:刚开始没看到给你的数据差值不小于等于2,感觉不会写,看到了啪啦啪啦写完啦。

 1 #include<bits/stdc++.h>
 2 #define fi first
 3 #define se second
 4 #define mk make_pair
 5 #define pii pair<int,int>
 6 #define read(x) scanf("%d",&x)
 7 #define sread(x) scanf("%s",x)
 8 #define dread(x) scanf("%lf",&x)
 9 #define lread(x) scanf("%lld",&x)
10 using namespace std;
11
12 typedef long long ll;
13 const int inf=0x3f3f3f3f;
14 const int INF=0x3f3f3f3f3f3f3f3f;
15 const int N=1e6+7;
16 const int M=2333;
17
18 int n,a[N],mn,cnt[100],ans[100];
19 int main()
20 {
21     int mn=inf;
22     read(n);
23     for(int i=1;i<=n;i++)
24         read(a[i]),mn=min(mn,a[i]);
25     for(int i=1;i<=n;i++)
26         a[i]-=mn;
27     int sum=0;
28     for(int i=1;i<=n;i++)
29         cnt[a[i]]++,ans[a[i]]++;
30     if(!cnt[1] && !cnt[2] || cnt[1] && !cnt[2])
31     {
32         printf("%d\n",n);
33         for(int i=1;i<=n;i++)
34             printf("%d ",a[i]+mn);
35         puts("");
36     }
37     else
38     {
39         int ret=min(cnt[0],cnt[2]);
40         int res=(cnt[1]/2)*2;
41         //printf("%d %d\n",ret,res);
42         if(2*ret>=res)
43         {
44             printf("%d\n",n-2*ret);
45             ans[0]-=ret;
46             ans[2]-=ret;
47             ans[1]+=2*ret;
48
49         }
50         else
51         {
52             ans[0]+=res/2;
53             ans[1]-=res;
54             ans[2]+=res/2;
55             printf("%d\n",n-res);
56         }
57         for(int i=0;i<=2;i++)
58             for(int j=1;j<=ans[i];j++)
59                 printf("%d ",i+mn);
60         puts("");
61     }
62     return 0;
63 }
64 /*
65 */

View Code

D题:是我写过最简单的D题,dfs计算一下每个深度的点有多少个,对于每个深度来说如果是奇数个点贡献是1,偶数个贡献是0。

 1 #include<bits/stdc++.h>
 2 #define fi first
 3 #define se second
 4 #define mk make_pair
 5 #define pii pair<int,int>
 6 #define read(x) scanf("%d",&x)
 7 #define sread(x) scanf("%s",x)
 8 #define dread(x) scanf("%lf",&x)
 9 #define lread(x) scanf("%lld",&x)
10 using namespace std;
11
12 typedef long long ll;
13 const int inf=0x3f3f3f3f;
14 const int INF=0x3f3f3f3f3f3f3f3f;
15 const int N=1e6+7;
16 const int M=2333;
17
18 vector<int> edge[N];
19 int n,d[N];
20 void dfs(int u,int de)
21 {
22     d[de]++;
23     for(int v:edge[u])
24         dfs(v,de+1);
25 }
26 int main()
27 {
28     read(n);
29     for(int i=2;i<=n;i++)
30     {
31         int fa; read(fa);
32         edge[fa].push_back(i);
33     }
34     dfs(1,1);
35     int ans=0;
36     for(int i=1;i<=n;i++)
37         if(d[i]&1)
38             ans++;
39     printf("%d\n",ans);
40     return 0;
41 }
42 /*
43 */

View Code

E题:比赛的时候一直看错题,以为是猜对的概率,题目是唯一确定答案的概率,一直调都不对,结果GG啦,其实也很简单,

统计一下点与点之间的情况,对于一种字符来说,第二张要翻开的卡的位置都是一样的,算一下这个概率就好啦。

#include<bits/stdc++.h>
#define fi first
#define se second
#define mk make_pair
#define pii pair<int,int>
#define read(x) scanf("%d",&x)
#define sread(x) scanf("%s",x)
#define dread(x) scanf("%lf",&x)
#define lread(x) scanf("%lld",&x)
using namespace std;const int N=5007;
int n,cnt[26][26][N];
char s[N];
double mp[26];
int main()
{sread(s+1);n=strlen(s+1);for(int i=1;i<=n;i++){for(int j=i+1;j<=n;j++){cnt[s[i]-'a'][s[j]-'a'][j-i]++;cnt[s[j]-'a'][s[i]-'a'][n-(j-i)]++;}}for(int i=0;i<26;i++){for(int k=1;k<n;k++){int tot=0,sum=0;for(int j=0;j<26;j++){sum+=cnt[i][j][k];if(cnt[i][j][k]==1)tot++;}mp[i]=max(mp[i],1.0*tot/sum);}}double ans=0;for(int i=1;i<=n;i++)ans+=mp[s[i]-'a']/n;printf("%.12f\n",ans);return 0;
}
/*
*/

View Code

F题:题目大意:给你n条线段覆盖的x轴,范围在1-m之间,有一个人开始询问,每次询问一个点的覆盖次数,问你最多几次之后

还是无法确定是不是有一个点被所有线段覆盖。

思路:这题想了好久。。。 刚开始以为是和点被覆盖最大值有关,写了很久发现有问题,我们考虑对于两个点a,b来说,如果有一个

点c在a,b之间,且c < max (a, b) ,那么覆盖a的线段,和覆盖b的线段肯定不完全相同,如果完全相同,肯定有 c>=max(a,b),矛盾。

所以我们的问题就变成了从里面选出尽可能多的点,使其的覆盖次数满足先增后减,然后就很开心地最长不下降子序列搞一搞就好啦。

 1 #include<bits/stdc++.h>
 2 #define fi first
 3 #define se second
 4 #define mk make_pair
 5 #define pii pair<int,int>
 6 #define read(x) scanf("%d",&x)
 7 #define sread(x) scanf("%s",x)
 8 #define dread(x) scanf("%lf",&x)
 9 #define lread(x) scanf("%lld",&x)
10 using namespace std;
11
12 const int N=1e5+5;;
13 int in[N],out[N],cnt[N],d[N],ans1[N],ans2[N];
14 int n,m;
15 int main()
16 {
17     read(n); read(m);
18     for(int i=1;i<=n;i++)
19     {
20         int l,r;
21         read(l); read(r);
22         in[l]++;
23         out[r]++;
24     }
25     int all=0;
26     for(int i=1;i<=m;i++)
27     {
28         all+=in[i];
29         cnt[i]=all;
30         all-=out[i];
31     }
32     ans1[1]=1;
33
34     d[1]=cnt[1];
35     int len=1;
36     for(int i=2;i<=m;i++)
37     {
38         if(cnt[i]>=d[len])
39         {
40             d[++len]=cnt[i];
41             ans1[i]=len;
42         }
43         else
44         {
45             int j=upper_bound(d+1,d+len+1,cnt[i])-d;
46             ans1[i]=j;
47             d[j]=cnt[i];
48         }
49     }
50     ans2[m]=1;
51     d[1]=cnt[m];
52     len=1;
53     for(int i=m-1;i>=1;i--)
54     {
55         if(cnt[i]>=d[len])
56         {
57             d[++len]=cnt[i];
58             ans2[i]=len;
59         }
60         else
61         {
62             int j=upper_bound(d+1,d+len+1,cnt[i])-d;
63             ans2[i]=j;
64             d[j]=cnt[i];
65         }
66     }
67     int ans=0;
68     for(int i=1;i<=m;i++)
69         ans=max(ans,ans1[i]+ans2[i]-1);
70     printf("%d\n",ans);
71     return 0;
72 }
73 /*
74 */

View Code

转载于:https://www.cnblogs.com/CJLHY/p/8510160.html

Codeforces Round #468 (Div. 2, based on Technocup 2018 Final Round)相关推荐

  1. Codeforces Round #709 (Div. 2, based on Technocup 2021 Final Round) 题解

    文章目录 A. Prison Break B. Restore Modulo C. Basic Diplomacy D. Playlist E. Skyline Photo F. Useful Edg ...

  2. Codeforces Round #625 (Div. 2, based on Technocup 2020 Final Round)【A、B、C题】

    A. Contest for Robots 签到题,注意特判即可. #include <bits/stdc++.h> using namespace std; const int N=11 ...

  3. Codeforces Round #440 (Div. 2, based on Technocup 2018 Elimination Round 2)

    一场挺简单的CF,但是我打炸了啊 A. Search for Pretty Integers time limit per test 1 second memory limit per test 25 ...

  4. Codeforces Round #709 (Div. 1, based on Technocup 2021 Final Round) A. Basic Diplomacy

    传送门 文章目录 题意: 思路: 题意: 有nnn个小朋友,让后你要在mmm天中每天都选择一个小朋友,给出这mmm天都可以选哪个小朋友,每个小朋友选的次数不超过⌈m2⌉\left \lceil \fr ...

  5. Codeforces Round #528 (Div. 2, based on Technocup 2019 Elimination Round 4) C. Connect Three 【模拟】...

    传送门:http://codeforces.com/contest/1087/problem/C C. Connect Three time limit per test 1 second memor ...

  6. szu cf套题训练Codeforces Round #602 (Div. 2, based on Technocup 2020 Elimination Round 3)A~D题解报告

    A. Math Problem 题目大意:就是给你n个线段,你自己再添加一个线段d使得d和所有的线段都有交点,求d这个线段的最小长度是多少 解题思路: 1.首先看d线段的左端点,就是左端点选取的是所有 ...

  7. Codeforces Round #606 (Div. 2, based on Technocup 2020 Elimination Round 4) 构造

    传送门 文章目录 题意: 思路: 题意: 给nnn个数,让你构造一个尽可能大的矩阵,其中每个点所在的行和列都不含相等元素. 思路: 假设构造的答案矩阵大小为a×ba×ba×b且a<=ba< ...

  8. Codeforces Round #606 (Div. 2, based on Technocup 2020 Elimination Round 4) dfs + 思维

    传送门 文章目录 题意: 思路: 题意: 给一张图,求必须经过aaa点和bbb点的路径条数. 思路: 通过观察我们发现,这个路径无非就是x−>a−>b−>yx->a->b ...

  9. Codeforces Round #759 (Div. 2, based on Technocup 2022 Elimination Round 3)

    感觉E思路明确只用了stl+树状数组,F线段树复合修改,为什么都是2400. A. Life of a Flower B. Array Eversion C. Minimize Distance E. ...

  10. Codeforces Round #403 (Div. 1, based on Technocup 2017 Finals)

    Div1单场我从来就没上过分,这场又剧毒,半天才打出B,C挂了好几次最后还FST了,回紫了. AC:AB Rank:340 Rating:2204-71->2133 Div2.B.The Mee ...

最新文章

  1. LUA表与函数的深入理解
  2. 如何下载防盗链的歌曲?
  3. flutter图片点击跳转_Flutter系列之Platform Channel使用详解
  4. HTML如何设置音频播放器控件的大小
  5. pandas—pandas.DataFrame.query与pandas.DataFrame.reset_index
  6. 633. 平方数之和
  7. 数据库系统基础教程(1)数据库系统世界
  8. ubuntu18.04 登录不了百度云盘
  9. matlab plot 折线变曲线
  10. 设置新版谷歌浏览器自动启用flash
  11. indexOf的用法
  12. CSS Bulma 框架
  13. oracle语法基础
  14. java广度优先爬虫示例_广度优先搜索与网络爬虫
  15. helm开发环境部署gitea
  16. D. Nearest Excluded Points(cf)坐标反向BFS
  17. 嵌入式工程师之数据结构
  18. medium_socnet靶场
  19. mkdir -p的用法
  20. 什么属于配对数据,什么属于非配对数据

热门文章

  1. 如何在 Mac 上卸载 Chrome?
  2. 红警 for Mac合集(Red Alert红色警戒)
  3. SwitchResX Mac屏幕分辨率调整工具
  4. Wondershare Recoverit for Mac(数据恢复套件)
  5. JavaScript性能优化之加载与执行
  6. 这个教授的观点颇犀利
  7. POJ-1087 A Plug for UNIX 网络流
  8. yarn-cluster 和yarn-client区别
  9. 解决问题--mysql可以远程通过IP访问,不能通过localhost与127.0.0.1访问
  10. 5 张图带你搞懂容器网络的工作原理