*感谢两位浙江大佬带我飞

贴下成绩

div2

div1

*div2不是我打的上个厕所就5/11了

比赛小结

A

【题目大意】

有n(n<=500)个机场,两两之间距离是g[i][j],每经停一个机场需要p[i]的时间维修

有m条线路,描述为出发机场,终点机场,出发时间,求航空公司至少需要多少架飞机

每条航线必须直飞

但是转机的时候可以劲停多个机场

【题解】

首先一架飞机能在完成航线A后去飞航线B的条件很显然。就是

表示两点间最短路。那么我们可以用这个不等式把问题转化为最小路径覆盖问题

我想了下这个最短路用Floyd吧n^3我选择死亡时限是5s应该能过的

然后忧虑了一下我的dinic的常数,写了个匈牙利,但是之后有人和我讲dinic更快?

#include<map>
#include<stack>
#include<queue>
#include<cstdio>
#include<string>
#include<vector>
#include<cstring>
#include<complex>
#include<iostream>
#include<assert.h>
#include<algorithm>
using namespace std;
#define inf 1001001001
#define infll 1001001001001001001LL
#define FOR0(i,n) for(int (i)=0;(i)<(n);++(i))
#define ll long long
#define dbg(vari) cerr<<#vari<<" = "<<(vari)<<endl
#define gmax(a,b) (a)=max((a),(b))
#define gmin(a,b) (a)=min((a),(b))
#define ios0 ios_base::sync_with_stdio(0)
#define Ri register int
#define gc getchar()
#define il inline
#define FOR1(i,n) for(Ri (i)=1;(i)<=(n);++(i))
il int read(){
bool f=true;
Ri x=;char ch;
while(!isdigit(ch=gc))if(ch=='-')f=false;
while(isdigit(ch)){x=(x<<)+(x<<)+ch-'';ch=gc;}
return f?x:-x;
}
#define gi read()
int n,m,p[],g[][],f[][];
struct edge{
int to,next;
}e[*],s1[],s2[];
int cnt,last[],match[],vis[];
void insert(int a,int b){
e[++cnt]=(edge){b,last[a]};last[a]=cnt;
}
int hungary(int u){
vis[u]=;
for(int i=last[u];i;i=e[i].next){
int y=e[i].to;
if(match[y]==-){
match[y]=u;
return ;
}
}
for(int i=last[u];i;i=e[i].next){
int y=e[i].to;
if(!vis[match[y]]&&hungary(match[y])){
match[y]=u;
return ;
}
}
return ;
}
int main(){
n=gi;m=gi;
FOR1(i,n)p[i]=gi;
FOR1(i,n)FOR1(j,n){
int T=gi;
if(i^j)g[i][j]=T+p[j];
else g[i][j]=T;
f[i][j]=g[i][j];
}
//n^3 floyd
FOR1(k,n)FOR1(i,n)FOR1(j,n)gmin(f[i][j],f[i][k]+f[k][j]);
FOR1(i,m){
int a,b,c;
a=gi;b=gi;c=gi;
s1[i]=(edge){a,c};
s2[i]=(edge){b,c+g[a][b]};
}
FOR1(i,m){
match[i]=-;
FOR1(j,m)if(i^j){
if(s2[i].next+f[s2[i].to][s1[j].to]<=s1[j].next)insert(i,j);
}
}
int fyb=n;
FOR1(i,m){
memset(vis,,sizeof(vis));
if(hungary(i))--fyb;
}
printf("%d",fyb);
return ;
}

C

【题目大意】

有n个人,他们的评级是由上(upper)中(middle)下(lower)组成的

两个评级的高底是从最后一个开始比较到第一个,一个中文的世纪大难题

求出从高到低的排列顺序

【题解】分类并排序md这都什么鬼题目啊

#include<map>
#include<stack>
#include<queue>
#include<cstdio>
#include<string.h>
#include<vector>
#include<cstring>
#include<complex>
#include<iostream>
#include<assert.h>
#include<algorithm>
using namespace std;
#define inf 1001001001
#define infll 1001001001001001001LL
#define FOR0(i,n) for(int (i)=0;(i)<(n);++(i))
#define FOR1(i,n) for(int (i)=1;(i)<=(n);++(i))
#define ll long long
#define dbg(vari) cerr<<#vari<<" = "<<(vari)<<endl
#define gmax(a,b) (a)=max((a),(b))
#define gmin(a,b) (a)=min((a),(b))
#define ios0 ios_base::sync_with_stdio(0)
#define Ri register int
#define gc getchar()
#define il inline
il int read(){
bool f=true;
Ri x=;char ch;
while(!isdigit(ch=gc))if(ch=='-')f=false;
while(isdigit(ch)){x=(x<<)+(x<<)+ch-'';ch=gc;}
return f?x:-x;
}
#define gi read()
#define FO(x) freopen(#x".in","r",stdin),freopen(#x".out","w",stdout);
int n;
struct data{
char name[];
int b[];
bool operator<(data B)const{
for(int i=;i<=;i++)
if(b[i]!=B.b[i]) return b[i]>B.b[i];
return strcmp(name,B.name)<;
}
}a[];
int main(){
n=gi;
FOR1(i,n){
scanf("%s",a[i].name);a[i].name[strlen(a[i].name)-]='\0';
int p=,temp[];
char str[];
while(scanf("%s",str),str[]!='c'){
if(str[]=='u')temp[++p]=;
if(str[]=='m')temp[++p]=;
if(str[]=='l')temp[++p]=-;
}
int fyb=;
while(p)a[i].b[++fyb]=temp[p--];
}
sort(a+,a+n+);
FOR1(i,n)printf("%s\n",a[i].name);
}

D

【题目大意】给定俩三角形问能不能拼成一个矩形

【题解】这你告诉我不会做回去种田吧

E

【题目大意】给定一个长度为偶数的能力值序列,要求两两分组,使得每组能力值的和的最小值最大

【题解】排序后贪心

G

【题目大意】给你一个w*h的矩形,w,h<=10^9。我们一开始在y=0的任一位置。开始移动当纵向速度是v,那么横向速度是[-v/r,v/r]之间,r是给定的小于等于10的正整数,给定10^5个点,问最多能抵达多少个点

【题解】

的题目

意给的是你移动的角度,考虑怎么转化这个东西

(r=1时的合法角度范围

首先可以推算出来,

旋转这个坐标轴是最好的做法

我们把整个平面上的所有图形绕原点顺时针旋转某个度数。

举个例子,当r=1时,原来是的坐标就变成为方便计算把它乘得到

由于角度在之间的都是合法的

那么我们就把坐标轴旋转,这么做的目的是使得移动的影响同时反映在上,而且可以计算

那么我们旋转这个度数之后,原有的,就变成了

所以我们只要对双关键字排序,第二维的LIS长度就是答案

言语有点混乱

如果哪里写错了请不要告诉我

#include<map>
#include<stack>
#include<queue>
#include<cstdio>
#include<string>
#include<vector>
#include<cstring>
#include<complex>
#include<iostream>
#include<assert.h>
#include<algorithm>
using namespace std;
#define inf 1001001001
#define infll 1001001001001001001ll
#define FOR0(i,n) for(int (i)=0;(i)<(n);++(i))
#define FOR1(i,n) for(int (i)=1;(i)<=(n);++(i))
#define ll long long
#define dbg(vari) cerr<<#vari<<" = "<<(vari)<<endl
#define gmax(a,b) (a)=max((a),(b))
#define gmin(a,b) (a)=min((a),(b))
#define ios0 ios_base::sync_with_stdio(0)
#define Ri register int
#define gc getchar()
#define il inline
il int read(){
bool f=true;
Ri x=;char ch;
while(!isdigit(ch=gc))if(ch=='-')f=false;
while(isdigit(ch)){x=(x<<)+(x<<)+ch-'';ch=gc;}
return f?x:-x;
}
il ll read2(){
bool f=true;
ll x=;char ch;
while(!isdigit(ch=gc))if(ch=='-')f=false;
while(isdigit(ch)){x=(x<<)+(x<<)+ch-'';ch=gc;}
return f?x:-x;
}
#define gi read()
#define gl read2()
#define FO(x) freopen(#x".in","r",stdin),freopen(#x".out","w",stdout);
const int N=;
struct data{ll x,c;}a[N];
int n,r,w,h;
ll x,y;
ll d[N];
bool cmp(const data&a,const data&b){
return a.c<b.c;
}
int main(){
n=gi;r=gi;w=gi;h=gi;
FOR1(i,n){
ll x,y;
x=gl;y=gl;
a[i].c=r*x+y;
a[i].x=-r*x+y;
}
sort(a+,a+n+,cmp);
d[]=-infll;
int len=;
FOR1(i,n){
if(a[i].x>=d[len])d[++len]=a[i].x;
else d[lower_bound(d+,d+len+,a[i].x)-d]=a[i].x;
}
printf("%d\n",len);
return ;
}

比赛&题面链接

http://codeforces.com/gym/100820

http://codeforces.com/gym/100819

http://codeforces.com/gym/100820/attachments/download/3912/20152016-acmicpc-pacific-northwest-regional-contest-div-1-en.pdf

http://codeforces.com/gym/100819/attachments/download/3913/20152016-acmicpc-pacific-northwest-regional-contest-div-2-en.pdf

[CFgym]2015-2016 ACM-ICPC Pacific Northwest Regional Contest小结的更多相关文章

  1. 2018 ICPC Pacific Northwest Regional Contest I-Inversions 题解

    题目链接: 2018 ICPC Pacific Northwest Regional Contest - I-Inversions 题意 给出一个长度为\(n\)的序列,其中的数字介于0-k之间,为0 ...

  2. Contest Setting 2018 ICPC Pacific Northwest Regional Contest dp

    题目:https://vj.69fa.cn/12703be72f729288b4cced17e2501850?v=1552995458 dp这个题目网上说是dp+离散化这个题目要对这些数字先处理然后进 ...

  3. 2018-2019 ACM-ICPC Pacific Northwest Regional Contest (Div. 1)

    2018-2019 ACM-ICPC Pacific Northwest Regional Contest (Div. 1) 思路: A Exam 思路:水题 代码: #include<bits ...

  4. ACM ICPC Central Europe Regional Contest 2013 Jagiellonian University Kraków

    ACM ICPC Central Europe Regional Contest 2013 Jagiellonian University Kraków Problem A: Rubik’s Rect ...

  5. 2015-2016 ACM-ICPC Pacific Northwest Regional Contest (Div. 2) S Surf

    SurfNow that you've come to Florida and taken up surng, you love it! Of course, you've realized that ...

  6. 2016-2017 ACM-ICPC Pacific Northwest Regional Contest (Div. 1) Solution

    A:Alphabet Solved. 签. #include<bits/stdc++.h> using namespace std; ]; ]; int main(){ scanf(); ...

  7. 2016-2017 ACM-ICPC Pacific Northwest Regional Contest (Div. 1) K Tournament Wins

    题目链接:http://codeforces.com/gym/101201 /* * @Author: lyucheng * @Date: 2017-10-22 14:38:52 * @Last Mo ...

  8. 2017-2018 ACM-ICPC Pacific Northwest Regional Contest (Div. 1)

    A. Odd Palindrome 所有回文子串长度都是奇数等价于不存在长度为$2$的偶回文子串,即相邻两个字符都不同. #include<cstdio> #include<cstr ...

  9. 2018-2019 ACM-ICPC Pacific Northwest Regional Contest C Contest Setting(DP)

    比赛链接:Contest Setting C题 题意:$n$道题目,每道题目难度为$ai$,选择$k$道难度不同的题目,有多少种选择方案.$1<=k<=n<=1000,1<=a ...

随机推荐

  1. jquery设置元素readonly和disabled(checkbox只读)

    jquery api中提供了对元素应用disabled和readonly属性的方法:1,readonly 代码示例: $('input').attr("readonly",&quo ...

  2. WebService 的创建,部署和使用

    WebService,即Web服务,能使得运行在不同机器上的不同应用无须借助,专门的第三方软件或硬件,就可相互交换数据或集成. 第一次选择WebService,是为了替代数据库远程连接.我们都知道当S ...

  3. iOS - 使用音乐的背景播放功能,使用MediaPlayer框架播放影片(Swift)

    1. 使用音乐的背景播放功能 (1) 导入音频播放框架 import AVFoundation (2) 创建音频播放对象 //初始化音频播放器对象,并将音频播放对象,作为视图控制器类的属相. var ...

  4. 20141016--for 菱形

    Console.Write("请输入一个数:"); int n = int.Parse(Console.ReadLine()); ; i <= n; i++) { ; b & ...

  5. C++四种不同的对象生存方式

    在C++中,有四种方法产生一个对象. 第一种方法是在堆栈(stack)之中产生: void MyFunc() { CFoo foo;//在堆栈(stack)中产生foo对象 } 第二种方法是在堆(he ...

  6. 【风马一族_Java】9*9口诀

    public class arithmetic { public static void main(String[] args){ sows(9,9); } private static void s ...

  7. 8.samba server与client配置

    server端 1.安装samba:yum install -y samba\* 增加samba用户: useradd smb用户名               smbpasswd -a smb用户名 ...

  8. FTP 数字代码的意义

    110 重新启动标记应答. 120 服务在多久时间内ready. 125 数据链路埠开启,准备传送. 150 文件状态正常,开启数据连接端口. 200 命令执行成功. 202 命令执行失败. 211 ...

  9. SQL联合查询中的关键语法(转)

    联合查询效率较高.以下例子来说明联合查询的好处 t1表结构(用户名,密码)    userid int         username   varchar(20)     password      ...

  10. header页头内容整理

    meta标签 <meta charset="UTF-8"/> <!--视窗宽度--> <meta name="viewport" ...