Codeforces_714
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的更多相关文章
随机推荐
- Win10系统下MySQL压缩版安装配置教程
MySQL分为安装版和压缩.为了以后MySQL出问题想重装时的各种不必要的麻烦,我个人推荐压缩版MySQL.下面进入教程: 进入官网下载MySQL压缩包,并解压如下 配置环境变量---将bin文件的目 ...
- bash的默认组合键
组合键 组合按键 执行结果 Ctrl+C 终止目前的命令 Ctrl+D 输入结束(EOF),例如邮件结束的时候 Ctrl+M 就是Enter啦! Ctrl+S 暂停屏幕输出 Ctrl+Q 恢复屏幕输出 ...
- Serv_U FTP服务端使用教程
Serv-U FTP Server是一种被广泛运用的FTP服务器端软件,可以设定多个FTP服务器.限定登录用户的权限.登录主目录及空间大小等,功能非常完备.具有非常完备的安全特性,支持SSl FTP传 ...
- fastjson使用详解
目录 二.fastjson使用 三.fastjson 常用 API 四.fastjson使用演示 测试类准备 1.java类转换为json字符串 2.json字符串转为java类 五.fastjson ...
- navicate远程连接mysql8.0失败
已经给了远程连接权限(update mysql.user set host = "%" where user = 'root'; flush privileges;) 连接错误提示 ...
- 搞定SpringBoot多数据源(1):多套源策略
目录 1. 引言 2. 运行环境 3. 多套数据源 3.1 搭建 Spring Boot 工程 3.1.1 初始化 Spring Boot 工程 3.1.2 添加 MyBatis Plus 依赖 3. ...
- 常见基本数据结构——树,二叉树,二叉查找树,AVL树
常见数据结构——树 处理大量的数据时,链表的线性时间太慢了,不宜使用.在树的数据结构中,其大部分的运行时间平均为O(logN).并且通过对树结构的修改,我们能够保证它的最坏情形下上述的时间界. 树的定 ...
- SpringCloud之Feign(五)
Feign简介 Feign 是一个声明web服务客户端,这便得编写web服务客户端更容易,使用Feign 创建一个接口并对它进行注解,它具有可插拔的注解支持包括Feign注解与JAX-RS注解,Fei ...
- java jvm jre jdk三者的关系
jvm:java虚拟机器(跨平台的关键) jre:java运行环境 jdk:java 开发工具包(kit) jdk>jre>jvm 环境变量配置 https://www.cnblogs.c ...
- Java入门 - 语言基础 - 21.Scanner类
原文地址:http://www.work100.net/training/java-scanner.html 更多教程:光束云 - 免费课程 Scanner类 序号 文内章节 视频 1 概述 2 使用 ...