A.相遇时间段l = max(l1,l2),r = min(r1,r2),再判断k是否在里面。

#include <iostream>
using namespace std; long long l1,l2,r1,r2,k; int main()
{
cin >> l1 >> r1 >> l2 >> r2 >> k;
long long l = max(l1,l2),r = min(r1,r2);
if(l > r) cout << << endl;
else
{
long long t = r-l+;
if(l <= k && k <= r) t--;
cout << t << endl;
}
return ;
}

B.判断出现的数的个数,1或2个直接YES,3个以上直接NO,3个判断是否等差。

#include<bits/stdc++.h>
using namespace std; int n,a[];
map<int,int> mp; int main()
{
ios::sync_with_stdio(false);
cin >> n;
int cnt = ;
for(int i = ;i <= n;i++)
{
int x;
cin >> x;
if(!mp.count(x))
{
cnt++;
mp[x] = ;
a[cnt] = x;
}
}
if(cnt == || cnt == ) cout << "YES" << endl;
else if(cnt >= ) cout << "NO" << endl;
else
{
sort(a+,a+);
if(a[]+a[] == *a[]) cout << "YES" << endl;
else cout << "NO" << endl;
}
return ;
}

C.把每一个数都转换成18位的pattern串,放进map处理。

#include<bits/stdc++.h>
using namespace std; int n;
map<string,int> mp; int main()
{
ios::sync_with_stdio(false);
cin >> n;
while(n--)
{
string s1,s2,s = "";
cin >> s1 >> s2;
for(int i = s2.length()-;i >= ;i--)
{
if((s2[i]-'')%) s = ""+s;
else s = ""+s;
}
while(s.length() < ) s = ""+s;
if(s1 == "+") mp[s]++;
else if(s1 == "-") mp[s]--;
else cout << mp[s] << endl;
}
return ;
}

D.先把图分成左右或上下两块,然后二分每一块中矩形的四条边。

#include<bits/stdc++.h>
using namespace std; int n;
struct xx
{
long long x1,x2,y1,y2;
void print()
{
cout << x1 << " " << y1 << " " << x2 << " " << y2 << " ";
}
}; int query(int x1,int y1,int x2,int y2)
{
if(x1 > x2)swap(x1,x2);
if(y1 > y2)swap(y1,y2);
cout<<"? "<<x1<<" "<<y1<<" "<<x2<<" "<<y2<<endl;
int ans;
cin>>ans;
return ans;
} xx f(int x1,int y1,int x2,int y2)
{
xx ans;
long long l = x1,r = x2;
while(l < r)
{
int mid = (l+r)/;
if(query(x1,y1,mid,y2) < ) l = mid+;
else r = mid;
}
ans.x2 = l;
l = x1,r = x2;
while(l < r)
{
int mid = (l+r+)/;
if(query(mid,y1,x2,y2) < ) r = mid-;
else l = mid;
}
ans.x1 = l;
l = y1,r = y2;
while(l < r)
{
int mid = (l+r)/;
if(query(x1,y1,x2,mid) < ) l = mid+;
else r = mid;
}
ans.y2 = l;
l = y1,r = y2;
while(l < r)
{
int mid = (l+r+)/;
if(query(x1,mid,x2,y2) < ) r = mid-;
else l = mid;
}
ans.y1 = l;
return ans;
}
int main()
{
cin >> n;
long long x1,y1,x2,y2,x3,y3,x4,y4;
long long l = ,r = n;
while(l < r)
{
long long mid = (l+r)/;
if(query(,,mid,n) < ) l = mid+;
else r = mid;
}
long long t = l;
if(query(,,t,n) == && query(t+,,n,n) == )
{
xx a = f(,,t,n),b = f(t+,,n,n);
cout << "! ";
a.print();
b.print();
cout << endl;
return ;
}
l = ,r = n;
while(l < r)
{
long long mid = (l+r)/;
if(query(,,n,mid) < ) l = mid+;
else r = mid;
}
t = l;
xx a = f(,,n,t),b = f(,t+,n,n);
cout << "! ";
a.print();
b.print();
cout << endl;
return ;
}

E.如果是非严格单调递增该如何做,我们会发现每次调整,都是调整某个数字为原先数列中存在的数字,最后才是最优的,所以,我们设DP[i][j]表示前i个数字,最后一个数为原先数列排序后第j大的数字的最小代价,然后令a[i]=a[i]-i,把严格单调递增就转化为非严格单调递增。

#include<bits/stdc++.h>
using namespace std; int n;
long long a[],b[],dp[][]; int main()
{
cin >> n;
for(int i = ;i <= n;i++)
{
cin >> a[i];
a[i] -= i;
b[i] = a[i];
}
sort(b+,b++n);
for(int i = ;i <= n;i++)
{
long long minn = dp[i-][];
for(int j = ;j <= n;j++)
{
minn = min(minn,dp[i-][j]);
dp[i][j] = abs(a[i]-b[j])+minn;
}
}
long long ans = dp[n][];
for(int i = ;i <= n;i++) ans = min(ans,dp[n][i]);
cout << ans << endl;
return ;
}

还有优先队列优化的。

#include<bits/stdc++.h>
using namespace std; int n;
priority_queue<long long> q; int main()
{
cin >> n;
long long ans = ;
for(int i = ;i <= n;i++)
{
long long x;
cin >> x;
x -= i;
q.push(x);
if(q.top() > x)
{
ans += q.top()-x;
q.pop();
q.push(x);
}
}
cout << ans << endl;
return ;
}

Codeforces_714的更多相关文章

随机推荐

  1. jenkins +git+ssh 构建 .net项目

    jenkins +git+ssh 构建 .net项目 安装jenkins jdk 和插件就不一一介绍了. Multiple SCMs 插件介绍:可以获取多个项目(如果你的项目中有依赖其他项目的) So ...

  2. # "可插拔式"组件设计,领略组件开发的奥秘

    从一个 Confirm 组件开始,一步步写一个可插拔式的组件. 处理一个正常的支付流程(比如支付宝购买基金) 点击购买按钮 如果风险等级不匹配则:弹确认框(Confirm) 用户确认风险后:弹出支付方 ...

  3. Project Settings之Quality翻译

    (版本是2018.4......翻译是自己的渣翻译水平) Unity allows you to set the level of graphical quality it attempts to r ...

  4. Linux session(会话)

    笔者在前文<Linux job control>中介绍了进程组(job)的概念以及常见的 job control 操作,本文接着介绍 session 的概念.本文中演示部分使用的环境为 u ...

  5. 字符串转hash

    #include<bits/stdc++.h> using namespace std; unsigned hash[]; ; int ans; int main() { ;k<=; ...

  6. CentOS6.8 LAMP

    第一次配置LAMP运行环境,上网查询了很多资料,一边试命令一边学习.服务器重置了很多次. 虽然有OneinStack这个方便的网站一键命令部署,但知道这个网站却是我自己踩坑之后的事情了,故此记录. 1 ...

  7. wannafly 27 D 巧妙求取约数

    链接:https://www.nowcoder.com/acm/contest/215/D来源:牛客网 题目描述 “我不知道你在说什么,因为我只是个pupil.”--绿魔法师 一个空的可重集合S. n ...

  8. CDH安装详细测试正确

    1. CDH简介 简单来说,Cloudera Manager是一个拥有集群自动化安装.中心化管理.集群监控.报警功能的一个工具(软件),使得安装集群从几天的时间缩短在几个小时内,运维人员从数十人降低到 ...

  9. Vue 编程式的导航

    1.应用场景 在同一路由的情况下,不同的参数之间进行切换 注意:别忘记初始化路由页面 2.用法 a.定义方法 b.实现方法 c.初始化路由页面 3.案例 <template> <di ...

  10. Jenkins配置邮件发送测试报告

    前言 在之前的文章(Jenkins自动执行python脚本输出测试报告)中,我们已成功实现利用Jenkins自动执行python脚本,输出并可直接在界面上查看测试报告,这里我们还差最后一步,我们需要将 ...