Codeforces Round #367 (Div. 2) 套题
吐槽:只能说是上分好场,可惜没打,唉
A:Beru-taxi (水题,取最小值)
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>
#include <set>
#include <map>
#include <string>
#include <cmath>
#include <stdlib.h>
using namespace std;
typedef long long LL;
int main(){
double x,y,ret=1e9,a,b,v;
int n;
scanf("%lf%lf%d",&x,&y,&n);
for(int i=;i<n;++i){
scanf("%lf%lf%lf",&a,&b,&v);
ret=min(ret,sqrt((x-a)*(x-a)+(y-b)*(y-b))/v);
}
printf("%.10f\n",ret);
return ;
}
B: Interesting drink(二分下)
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>
#include <set>
#include <map>
#include <string>
#include <cmath>
#include <stdlib.h>
using namespace std;
typedef long long LL;
const int N = 1e5+;
int a[N],n,m,q;
int main(){
scanf("%d",&n);
for(int i=;i<=n;++i)scanf("%d",&a[i]);
sort(a+,a++n);
scanf("%d",&q);
while(q--){
scanf("%d",&m);
printf("%d\n",upper_bound(a+,a++n,m)-a-);
}
return ;
}
C:Hard problem(简单的O(n)dp,dp[i][0/1]代表不反转或者反转,随便写写)
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>
#include <set>
#include <map>
#include <string>
#include <cmath>
#include <stdlib.h>
using namespace std;
typedef long long LL;
const int N = 1e5+;
const int INF = 0x3f3f3f3f;
LL dp[N][];
int c[N],n;
string a[N],b[N];
int main(){
scanf("%d",&n);
for(int i=;i<=n;++i)scanf("%d",&c[i]);
for(int i=;i<=n;++i){
cin>>a[i];b[i]=a[i];
reverse(b[i].begin(),b[i].end());
}
memset(dp,-,sizeof(dp));
dp[][]=c[];dp[][]=;
for(int i=;i<=n;++i){
if(a[i]>=a[i-]&&dp[i-][]!=-)
dp[i][]=dp[i-][];
if(a[i]>=b[i-]&&dp[i-][]!=-){
if(dp[i][]==-)dp[i][]=dp[i-][];
else dp[i][]=min(dp[i][],dp[i-][]);
}
if(b[i]>=a[i-]&&dp[i-][]!=-)
dp[i][]=dp[i-][]+c[i];
if(b[i]>=b[i-]&&dp[i-][]!=-){
if(dp[i][]==-)dp[i][]=dp[i-][]+c[i];
else dp[i][]=min(dp[i][],dp[i-][]+c[i]);
}
if(dp[i][]==-&&dp[i][]==-){
printf("-1\n");return ;
}
}
int i=n;
if(dp[i][]!=-&&dp[i][]==-)printf("%I64d\n",dp[i][]);
else if(dp[i][]!=-&&dp[i][]==-)printf("%I64d\n",dp[i][]);
else printf("%I64d\n",min(dp[i][],dp[i][]));
return ;
}
D:Vasiliy's Multiset(老题了,01字典树贪心)
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>
#include <set>
#include <map>
#include <string>
#include <cmath>
#include <stdlib.h>
using namespace std;
typedef long long LL;
const int N = (2e5)*;
const int INF = 0x3f3f3f3f;
int ch[N][],cnt[N],tot,n;
int newnode(){
++tot;memset(ch[tot],-,sizeof(ch[tot]));return tot;
}
void add(int x,int t){
int now=;
for(int i=;i>=;--i){
int nx=(x&(<<i))?:;
if(ch[now][nx]==-)ch[now][nx]=newnode();
now=ch[now][nx];cnt[now]+=t;
}
}
int ask(int x){
int now=,ret=;
for(int i=;i>=;--i){
int nx=(x&(<<i))?:;
if(ch[now][nx^]!=-&&cnt[ch[now][nx^]]){
now=ch[now][nx^];ret+=(<<i);
}
else now=ch[now][nx];
}
return ret;
}
char op[];
int main(){
tot=-;newnode();add(,);
scanf("%d",&n);
while(n--){
int x;scanf("%s%d",op,&x);
if(op[]=='+')add(x,);
else if(op[]=='-')add(x,-);
else printf("%d\n",ask(x));
}
return ;
}
E:Working routine(十字链表暴力,如果不会的话,可以去看看dance link的实现)
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>
#include <set>
#include <map>
#include <string>
#include <cmath>
#include <stdlib.h>
using namespace std;
typedef long long LL;
const int N = 1e3+;
struct Node{
int u,d,l,r,v;
}p[N*N];
int cnt,n,m,q,mp[N][N];
int main(){
cnt=-;
scanf("%d%d%d",&n,&m,&q);
for(int i=;i<=n;++i){
mp[i][]=++cnt;
}
for(int i=;i<=m;++i)mp[][i]=++cnt;
for(int i=;i<=n;++i){
for(int j=;j<=m;++j){
++cnt;scanf("%d",&p[cnt].v);
mp[i][j]=cnt;
}
}
for(int i=;i<=n;++i){
for(int j=;j<=m;++j){
int id=mp[i][j];
p[id].l=mp[i][j-];
p[id].r=mp[i][(j+)%(m+)];
p[id].u=mp[i-][j];
p[id].d=mp[(i+)%(n+)][j];
}
}
for(int i=;i<=n;++i){
p[mp[i][]].l=mp[i][m];
p[mp[i][]].r=mp[i][];
}
for(int j=;j<=m;++j){
p[mp[][j]].u=mp[n][j];
p[mp[][j]].d=mp[][j];
}
while(q--){
int x1,y1,x2,y2,h,w;
scanf("%d%d%d%d%d%d",&x1,&y1,&x2,&y2,&h,&w);
int now1=mp[x1][],now2=mp[x2][],k1,k2;
for(int i=;i<=y1;++i)now1=p[now1].r;
for(int i=;i<=y2;++i)now2=p[now2].r;
k1=now1,k2=now2;
for(int i=;i<=w;++i){
swap(p[p[k1].u].d,p[p[k2].u].d);
swap(p[k1].u,p[k2].u);
if(i==w)break;
k1=p[k1].r;k2=p[k2].r;
}
for(int i=;i<=h;++i){
swap(p[p[now1].l].r,p[p[now2].l].r);
swap(p[now1].l,p[now2].l);
swap(p[p[k1].r].l,p[p[k2].r].l);
swap(p[k1].r,p[k2].r);
if(i==h)break;
now1=p[now1].d;now2=p[now2].d;
k1=p[k1].d;k2=p[k2].d;
}
for(int i=;i<=w;++i){
swap(p[p[now1].d].u,p[p[now2].d].u);
swap(p[now1].d,p[now2].d);
now1=p[now1].r;now2=p[now2].r;
}
}
for(int i=;i<=n;++i){
int id=p[mp[i][]].r;
for(int j=;j<m;++j){
printf("%d ",p[id].v);
id=p[id].r;
}
printf("%d\n",p[id].v);
}
return ;
}
Codeforces Round #367 (Div. 2) 套题的更多相关文章
- Codeforces Round #579 (Div. 3) 套题 题解
A. Circle of Students 题目:https://codeforces.com/contest/1203/problem/A 题意:一堆人坐成一个环,问能否按逆时针或者顺时针 ...
- Codeforces Round #367 (Div. 2)---水题 | dp | 01字典树
A.Beru-taxi 水题:有一个人站在(sx,sy)的位置,有n辆出租车,正向这个人匀速赶来,每个出租车的位置是(xi, yi) 速度是 Vi;求人最少需要等的时间: 单间循环即可: #inclu ...
- Codeforces Round #361 (Div. 2) 套题
A - Mike and Cellphone 问有没有多解,每个点按照给出的序列用向量法跑一遍 #include<cstdio> #include<cstring> #incl ...
- Codeforces Round #369 (Div. 2) 套题
A:模拟水题不说 #include <iostream> #include <string.h> #include <algorithm> #include < ...
- Codeforces Round #367 (Div. 2) A. Beru-taxi (水题)
Beru-taxi 题目链接: http://codeforces.com/contest/706/problem/A Description Vasiliy lives at point (a, b ...
- Codeforces Round #367 (Div. 2) C. Hard problem
题目链接:Codeforces Round #367 (Div. 2) C. Hard problem 题意: 给你一些字符串,字符串可以倒置,如果要倒置,就会消耗vi的能量,问你花最少的能量将这些字 ...
- Codeforces Round #612 (Div. 2) 前四题题解
这场比赛的出题人挺有意思,全部magic成了青色. 还有题目中的图片特别有趣. 晚上没打,开virtual contest打的,就会前三道,我太菜了. 最后看着题解补了第四道. 比赛传送门 A. An ...
- Codeforces Round #378 (Div. 2) D题(data structure)解题报告
题目地址 先简单的总结一下这次CF,前两道题非常的水,可是第一题又是因为自己想的不够周到而被Hack了一次(或许也应该感谢这个hack我的人,使我没有最后在赛后测试中WA).做到C题时看到题目情况非常 ...
- Codeforces Round #367 (Div. 2) D. Vasiliy's Multiset (0/1-Trie树)
Vasiliy's Multiset 题目链接: http://codeforces.com/contest/706/problem/D Description Author has gone out ...
随机推荐
- nginx报错:Permission denied
vi /etc/selinux/config #SELINUX=enforcing #注释掉 #SELINUXTYPE=targeted #注释掉 SELINUX=disabled #增加 :wq! ...
- 01网页<head></head>常用标记及属性
网页<head></head>常用标记及属性 <!DOCTYPE html> <html> <head> <!--网页标题--> ...
- python logger日志
直接上代码 import logging import logging.handlers import datetime import time import threading from conf. ...
- P4817 [USACO15DEC]Fruit Feast 水果盛宴
P4817 [USACO15DEC]Fruit Feast 水果盛宴 现在Bessie的饱食度为 00 ,她每吃一个橙子,饱食度就会增加 AA :每吃一个柠檬,饱食度就会增加 BB .Bessie还有 ...
- 关于SPFA的双端队列优化
7.11 Update 我做题的时候发现这样写会RE 因为在使用双端队列优化SPFA的时候 在将一个点加入队列的时候,如果队列已经空了 那么一旦出现dis[Q.front()]就会RE 可以这样修改 ...
- 自定义属性Attribute的运用
有时候需要一个枚举类,能够承载更多的信息,于是可以利用attribute这个特性. 首先编写自己业务需求类 [AttributeUsage(AttributeTargets.Field)] publi ...
- 【nginx】记录nginx+php-fpm实现大文件下载排坑的过程
先上一段代码,支持大文件下载和断点续传,代码来源互联网. set_time_limit(0); // 省略取文件路径的过程,这里直接是文件完整路径 $filePath = get_save_path( ...
- Python学习之前
编程语言的分类: 1.机器语言:直接以0和1编写指令代码,计算机能直接识别处理: 特点:运行速度最快,太复杂,开发效率低,可执行操作最多. 2.汇编语言:本质上依然是机器语言,用英文代替0和1,更容易 ...
- JavaScript 面向对象的编程(二) 类的封装
类的定义 方式一 var Book = function(id, name, price){ //私有属性,外部不能直接访问 var num = 1; //私有方法, function checkId ...
- Win32编程API 基础篇 -- 6.菜单和图标
菜单和按钮 例子:菜单1 本小节仅仅向你展示如果向你的窗口中加入一个基本的菜单,通常你会用到一个提前制作好的菜单资源,这会是一份.rc文件并且会被编译链接进你的.exe可执行程序中.这是具体的流程做法 ...