Codeforces Round #409 (rated, Div. 2, based on VK Cup 2017 Round 2) ABCD
来源:互联网 发布:c语言学习文档 编辑:程序博客网 时间:2024/04/29 09:08
A.Vicious Keyboard
暴力枚举所有情况。统计最大值。
#include<bits/stdc++.h>using namespace std;char a[105];char b[105];char T[3]="VK";char S[105];int Next[105];int slen,tlen;void getNext(){ int j, k; j = 0; k = -1; Next[0] = -1; while(j < tlen) if(k == -1 || T[j] == T[k]) Next[++j] = ++k; else k = Next[k];}int KMP_Count(){ int ans = 0; int i, j = 0; if(slen == 1 && tlen == 1) { if(S[0] == T[0]) return 1; else return 0; } for(i = 0; i < slen; i++) { while(j > 0 && S[i] != T[j]) j = Next[j]; if(S[i] == T[j]) j++; if(j == tlen) { ans++; j = Next[j]; } } return ans;}int main(){ scanf("%s",a); int length=strlen(a); slen=strlen(a); tlen=strlen(T); getNext(); strcpy(S,a); int maxx=KMP_Count(); for(int i=0;i<length;i++){ strcpy(S,a); if(S[i]=='V') S[i]='K'; else S[i]='V'; maxx=max(maxx,KMP_Count()); } printf("%d",maxx);}
B.Valued Keys
扫一遍字符串,然后比对一下,如果出现目标字符串该位置的字符大于源字符串的,说明无解。
#include<bits/stdc++.h>using namespace std;char a[105];char b[105];char c[105];int main(){ scanf("%s%s",a,b); int length=strlen(a); for(int i=0;i<length;i++){ if(a[i]>=b[i]){ c[i]=b[i]; }else{ printf("-1"); return 0; } } for(int i=0;i<length;i++) printf("%c",c[i]);}
C.Voltage Keepsake
二分答案。check时所有的电器扫一遍,判断一起运行这么久他们需要的总电量,然后除以电源速度得到时间,对比后返回true或false,数据规模大,上届要设的很大。
#include<bits/stdc++.h>using namespace std;const int maxn=1e5+10;struct pos{ int a,b;}p[maxn];int n;double k;bool check(double x){ double sum=0; for(int i=0;i<n;i++){ double temp; temp=p[i].b-(double)p[i].a*x; if(temp>=0) continue; temp=(-temp)/k; sum+=temp; } if(sum>x) return false; else return true;}int main(){ scanf("%d%lf",&n,&k); double sum=0; for(int i=0;i<n;i++){ scanf("%d%d",&p[i].a,&p[i].b); sum+=(double)p[i].a; } if(k>=sum){ printf("-1"); return 0; } double l=0,r=1e11; double ans=-1; for(int i=1;i<=250;i++){ double mid=l+r; mid=mid/2; bool temp=check(mid); if(temp){ l=mid; ans=max(ans,mid); }else{ r=mid; } } printf("%f",ans);}
D.Volatile Kite
对于每个点,算出他与旁边两点确定的直线的距离。显然这个店能移动的距离就是点到直线距离的一半,即直线移动一半,点移动一半。扫一遍后得到最小值。
#include<bits/stdc++.h>using namespace std;const int maxn=1e3+10;struct pos{ double x,y;}p[maxn];int n;int main(){ scanf("%d",&n); for(int i=0;i<n;i++) scanf("%lf%lf",&p[i].x,&p[i].y); double ans=0x3f3f3f3f; for(int i=0;i<n;i++){ pos a=p[i]; pos b=p[(i+1)%n]; pos c=p[(i+2)%n]; double dis=(double)(c.x-a.x)*(b.y-c.y)-(c.y-a.y)*(b.x-c.x); if(dis<0) dis=-dis; dis=dis/(sqrt((c.x-a.x)*(c.x-a.x)+(c.y-a.y)*(c.y-a.y))); dis=dis/2; ans=min(ans,dis); } printf("%f",ans);}
0 0
- Codeforces Round #409 (rated, Div. 2, based on VK Cup 2017 Round 2) ABCD
- Codeforces Round #409 (rated, Div. 2, based on VK Cup 2017 Round 2) A -- D
- Codeforces Round #409 (rated, Div. 2, based on VK Cup 2017 Round 2) A. Vicious Keyboard
- Codeforces Round #409 (rated, Div. 2, based on VK Cup 2017 Round 2) B. Valued Keys
- Codeforces Round #409 (rated, Div. 2, based on VK Cup 2017 Round 2) C. Voltage Keepsake
- Codeforces Round #409 (rated, Div. 2, based on VK Cup 2017 Round 2) D. Volatile Kite
- Codeforces Round #409 (rated, Div. 2, based on VK Cup 2017 Round 2)
- Codeforces Round #409 (rated, Div. 2, based on VK Cup 2017 Round 2)-C. Voltage Keepsake
- Codeforces Round #409 (rated, Div. 2, based on VK Cup 2017 Round 2)
- Codeforces Round #409 (rated, Div. 2, based on VK Cup 2017 Round 2)
- 【解题报告】Codeforces Round #409 (rated, Div. 2, based on VK Cup 2017 Round 2)
- Codeforces Round #405 (rated, Div. 2, based on VK Cup 2017 Round 1)
- Codeforces Round #405 (rated, Div. 2, based on VK Cup 2017 Round 1) 菜鸡只会ABC!
- Codeforces Round #405 (rated, Div. 2, based on VK Cup 2017 Round 1)
- 【解题报告】Codeforces Round #405 (rated, Div. 2, based on VK Cup 2017 Round 1)
- 深夜切题——Codeforces Round #409 (rated, Div. 2, based on VK Cup 2017 Round 2)
- Codeforces Round #409 (rated, Div. 2, based on VK Cup 2017 Round 2) D (简单计算几何)
- CF-Codeforces Round #409 (rated, Div. 2, based on VK Cup 2017 Round 2)-A-Vicious Keyboard
- Gym
- 正则补充
- 【SSLGZ 2647】线段树练习四
- OCR车架号识别
- AJAX跨域解决方案
- Codeforces Round #409 (rated, Div. 2, based on VK Cup 2017 Round 2) ABCD
- caffemodel做分类所有类别得分一样的解决办法
- Fedora25安装Nerd Fonts字体
- C语言中递归常见错误解析(1)
- Java语言
- [kuangbin带你飞]专题十一 网络流 A POJ
- linux内核 RCU机制详解
- int main(int argc,char *argv[])该函数中int argc和argv[]两个参数的理解你懂多少?
- 百度地图开发之实现运动轨迹 <二>