A、B都是暴力搞一搞。

A:

 #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+;
const int M=; ll w[];
int a,b;
int main()
{
for(int i=;i<=;i++)
w[i]=w[i-]+i;
read(a);read(b);
if(a>b)
swap(a,b);
ll ans=INF;
for(int i=a;i<=b;i++)
{
ans=min(ans,w[i-a]+w[b-i]);
}
printf("%lld\n",ans);
return ;
}
/*
*/

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+;
const int M=; ll w[];
int n,a,b;
vector<int> v[];
int main()
{
read(n);
read(a); read(b);
for(int i=;i<=n;i++)
v[].push_back(i);
for(int i=;i<=n;i++)
{
if(v[i].size()==)
break;
for(int j=;j<v[i].size();j+=)
{
if(v[i][j]==a && v[i][j^]==b || v[i][j]==b && v[i][j^]==a)
{
printf("%d\n",i+);
return ;
}
if(v[i][j^]==a || v[i][j^]==b)
v[i+].push_back(v[i][j^]);
else
v[i+].push_back(v[i][j]);
}
}
puts("Final!");
}
/*
*/

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

 #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+;
const int M=; int n,a[N],mn,cnt[],ans[];
int main()
{
int mn=inf;
read(n);
for(int i=;i<=n;i++)
read(a[i]),mn=min(mn,a[i]);
for(int i=;i<=n;i++)
a[i]-=mn;
int sum=;
for(int i=;i<=n;i++)
cnt[a[i]]++,ans[a[i]]++;
if(!cnt[] && !cnt[] || cnt[] && !cnt[])
{
printf("%d\n",n);
for(int i=;i<=n;i++)
printf("%d ",a[i]+mn);
puts("");
}
else
{
int ret=min(cnt[],cnt[]);
int res=(cnt[]/)*;
//printf("%d %d\n",ret,res);
if(*ret>=res)
{
printf("%d\n",n-*ret);
ans[]-=ret;
ans[]-=ret;
ans[]+=*ret; }
else
{
ans[]+=res/;
ans[]-=res;
ans[]+=res/;
printf("%d\n",n-res);
}
for(int i=;i<=;i++)
for(int j=;j<=ans[i];j++)
printf("%d ",i+mn);
puts("");
}
return ;
}
/*
*/

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

 #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+;
const int M=; vector<int> edge[N];
int n,d[N];
void dfs(int u,int de)
{
d[de]++;
for(int v:edge[u])
dfs(v,de+);
}
int main()
{
read(n);
for(int i=;i<=n;i++)
{
int fa; read(fa);
edge[fa].push_back(i);
}
dfs(,);
int ans=;
for(int i=;i<=n;i++)
if(d[i]&)
ans++;
printf("%d\n",ans);
return ;
}
/*
*/

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=;
int n,cnt[][][N];
char s[N];
double mp[];
int main()
{
sread(s+);
n=strlen(s+);
for(int i=;i<=n;i++)
{
for(int j=i+;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=;i<;i++)
{
for(int k=;k<n;k++)
{
int tot=,sum=;
for(int j=;j<;j++)
{
sum+=cnt[i][j][k];
if(cnt[i][j][k]==)
tot++;
}
mp[i]=max(mp[i],1.0*tot/sum);
}
}
double ans=;
for(int i=;i<=n;i++)
ans+=mp[s[i]-'a']/n;
printf("%.12f\n",ans);
return ;
}
/*
*/

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

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

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

点c在a,b之间,且c < max (a, b) ,那么覆盖a的线段,和覆盖b的线段肯定不完全相同,如果完全相同,肯定有 c>=max(a,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; const int N=1e5+;;
int in[N],out[N],cnt[N],d[N],ans1[N],ans2[N];
int n,m;
int main()
{
read(n); read(m);
for(int i=;i<=n;i++)
{
int l,r;
read(l); read(r);
in[l]++;
out[r]++;
}
int all=;
for(int i=;i<=m;i++)
{
all+=in[i];
cnt[i]=all;
all-=out[i];
}
ans1[]=; d[]=cnt[];
int len=;
for(int i=;i<=m;i++)
{
if(cnt[i]>=d[len])
{
d[++len]=cnt[i];
ans1[i]=len;
}
else
{
int j=upper_bound(d+,d+len+,cnt[i])-d;
ans1[i]=j;
d[j]=cnt[i];
}
}
ans2[m]=;
d[]=cnt[m];
len=;
for(int i=m-;i>=;i--)
{
if(cnt[i]>=d[len])
{
d[++len]=cnt[i];
ans2[i]=len;
}
else
{
int j=upper_bound(d+,d+len+,cnt[i])-d;
ans2[i]=j;
d[j]=cnt[i];
}
}
int ans=;
for(int i=;i<=m;i++)
ans=max(ans,ans1[i]+ans2[i]-);
printf("%d\n",ans);
return ;
}
/*
*/

Codeforces Round #468 (Div. 2, based on Technocup 2018 Final Round)的更多相关文章

  1. Codeforces Round #468 (Div. 2, based on Technocup 2018 Final Round)B. World Cup

    The last stage of Football World Cup is played using the play-off system. There are n teams left in ...

  2. Codeforces Round #468 (Div. 2, based on Technocup 2018 Final Round)D. Peculiar apple-tree

    In Arcady's garden there grows a peculiar apple-tree that fruits one time per year. Its peculiarity ...

  3. Codeforces Round #468 (Div. 2, based on Technocup 2018 Final Round)C. Laboratory Work

    Anya and Kirill are doing a physics laboratory work. In one of the tasks they have to measure some v ...

  4. Codeforces Round #468 (Div. 2, based on Technocup 2018 Final Round)A. Friends Meeting

    Two friends are on the coordinate axis Ox in points with integer coordinates. One of them is in the ...

  5. Codeforces Round #434 (Div. 2, based on Technocup 2018 Elimination Round 1)&&Codeforces 861C Did you mean...【字符串枚举,暴力】

    C. Did you mean... time limit per test:1 second memory limit per test:256 megabytes input:standard i ...

  6. Codeforces Round #434 (Div. 2, based on Technocup 2018 Elimination Round 1)&&Codeforces 861B Which floor?【枚举,暴力】

    B. Which floor? time limit per test:1 second memory limit per test:256 megabytes input:standard inpu ...

  7. Codeforces Round #434 (Div. 2, based on Technocup 2018 Elimination Round 1)&&Codeforces 861A k-rounding【暴力】

    A. k-rounding time limit per test:1 second memory limit per test:256 megabytes input:standard input ...

  8. Codeforces Round #543 (Div. 2, based on Technocup 2019 Final Round)

    A. Technogoblet of Fire 题意:n个人分别属于m个不同的学校 每个学校的最强者能够选中 黑客要使 k个他选中的可以稳被选 所以就为这k个人伪造学校 问最小需要伪造多少个 思路:记 ...

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

    A. Search for Pretty Integers 题目链接:http://codeforces.com/contest/872/problem/A 题目意思:题目很简单,找到一个数,组成这个 ...

随机推荐

  1. luogu P1486 [NOI2004]郁闷的出纳员

    一万年以后终于调过了这题 这道题主要是维护一个有序的集合(吧),所以使用平衡树(我这里用\(Splay\)) 记录一个变量\(ff\)(雾),表示所有工资的变化量 对于\(I\)操作,如果初始工资大于 ...

  2. [转]Linux/Windows下脚本对拍程序

    [新]简单写法 (转载自:https://blog.csdn.net/ylsoi/article/details/79824655) 要求:文件输入输出,且输入输出文件需要对应 Linux: #inc ...

  3. 闭包传递(floyed)

    题目链接: https://cn.vjudge.net/contest/66569#problem/H 题目大意: n代表母牛的个数,m代表给定的信息的组数.每一组数包括a,b. 代表b崇拜a(突然发 ...

  4. 解决kali linux 开启ssh服务后连接不上的问题

    今天在手机端装了NetHunter 想连接PC的kali ,可是怎么都连不上 综合网友的经验: 1.修改sshd_config文件,命令为:vi /etc/ssh/sshd_config 将#Pass ...

  5. 三 、 Multivariance Linear Regssion练习(转载)

    转载:http://www.cnblogs.com/tornadomeet/archive/2013/03/15/2962116.html 前言: 本文主要是来练习多变量线性回归问题(其实本文也就3个 ...

  6. freeRTOS中文实用教程5--内存管理

    1.前言 不同的嵌入式系统具有不同的内存配置和时间要求.所以单一的内存分配算法只可能适合部分应用程序. FreeRTOS 将内存分配作为可移植层面(相对于基本的内核代码部分而言).这使得不同的应用程序 ...

  7. 经典]Linux内核中ioremap映射的透彻理解【转】

    转自:http://blog.csdn.net/lanyang123456/article/details/7403514 几乎每一种外设都是通过读写设备上的寄存器来进行的,通常包括控制寄存器.状态寄 ...

  8. 高级 Java 面试通关知识点整理!

    1.常用设计模式 单例模式:懒汉式.饿汉式.双重校验锁.静态加载,内部类加载.枚举类加载.保证一个类仅有一个实例,并提供一个访问它的全局访问点. 代理模式:动态代理和静态代理,什么时候使用动态代理. ...

  9. LeetCode(49): 字母异位词分组

    Medium! 题目描述: 给定一个字符串数组,将字母异位词组合在一起.字母异位词指字母相同,但排列不同的字符串. 示例: 输入: ["eat", "tea", ...

  10. 深度学习Bible学习笔记:第一章 前言

    写在前面:请务必踏踏实实看书,结合笔记或视频来理解学习,任何技术,啃砖头是最扎实最系统的,为避免知识碎片化,切忌抛却书本的学习!!! 一 什么是深度学习 1 关于AI: AI系统必须具备从原始数据提取 ...