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 ...
随机推荐
- Jmeter之关联——常用提取器
Jmeter关联 所谓关联,从业务角度讲,即:某些操作步骤与其相邻步骤存在一定的依赖关系,导致某个步骤的输入数据来源于上一步的返回数据,这时就需要“关联”来建立步骤之间的联系. 简单来说,就是:将上一 ...
- vue项目 build之后发布到服务器index.html页面空白解决方法
第一部分 之前一直不太理解为什么要使用vue+webapck,还有在使用了vue-cli之后会用到后台,即vue-cli自动帮我们安装了express服务器,在本地服务器上运行,因为我们希望可以模拟在 ...
- svn无法显示日期和作者
当遇到这种情况,只要把这个read改为none就可以显示了 亲测绝对管用
- NOIP 前的垂死挣扎
计划每天十题吧,可能会一天水题一天难题吧.题目以杂题为主,没有专题可言. 10.11 计划: [x] P2939 [USACO09FEB] 改造路 Revamping Trails [ ] P3601 ...
- java用递归输出目录结构
package com.janson.day20180827; import java.io.File; public class TestTreeStructureDirectory { publi ...
- buf.writeInt8()函数详解
buf.writeInt8(value, offset[, noAssert]) value {Number} 需要被写入到 Buffer 的字节 offset {Number} 0 <= of ...
- 07.C语言:结构体、共用体、枚举
一.结构体 是一种复合的数据类型,由多个不同类型的数据(为结构体的成员)组成的集合. 在c语言中没有给出结构体这种类型具体的形式(名称),但是给出类定义该结构体类型的方法(格式). 在使用结构体类型时 ...
- STM32F103移值FreeRtos笔记
RTOS版本:FreeRTOS_V8.2.2 一.下载FreeRTOS源文件 这个可以在百度上下载,或者在官网上面下载http://www.freertos.org/a00104.html ...
- unigui的ini文件读写【6】
procedure THeaderFooterForm.writerParas; var IniFile : TIniFile; begin try IniFile:=TIniFile.Create( ...
- 【Codeforces 242C】King's Path
[链接] 我是链接,点我呀:) [题意] 让你找到(x0,y0)到(x1,y1)的一条最短路 走过的点必须在所给的n个横向路径上 [题解] 因为n条横向路径上的点最多不会超过10的5次方个,所以我们可 ...