CTU Open Contest 2019
A. Beer Barrels
题意:给出四个整数:A,B,K,C,A,B,C 都是大于 0 的个位数,问在所有仅由 A 或 B 组成的 K 位数中(K 位数的每一位都是 A 或 B),数字 C 的个数有多少。
#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>
#include <cmath>
#include <cstring>
using namespace std;
#define INF 0x3f3f3f3ftypedef long long ll;
const int p=1e9+7;
ll mod_pow(ll x, ll n, ll mod){ll res=1;while (n>0){if (n&1) res=res*x%mod;x=x*x%mod;n>>=1;}return res;
}int main() {ios::sync_with_stdio(0);cin.tie(0);ll a,b,k,c;cin>>a>>b>>k>>c;if ((c!=a && c!=b) || k==0) cout<<"0"<<endl;else if (a!=b) {ll ans=mod_pow(2,k-1,p);cout<<k*ans%p<<endl; }elsecout<<k<<endl;return 0;
}
B. Beer Bill
题解:给出的串如果开头是|,则价格为:| 个数 * 42
给出的串如果开头是数字,则价格为:数字 * 后面|个数
求和即可,向上取整到10的倍数
我输出格式复制错了wa了
#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>
#include <cmath>
#include <cstring>
using namespace std;
#define INF 0x3f3f3f3f
typedef long long ll;int main() {ios::sync_with_stdio(0);cin.tie(0);string s;ll ans=0;while (cin>>s) {ll len=s.size();if (s[0]=='|') ans+=len*42;ll t=0;for (int i=0; i<len; i++) {if (s[i]==',') continue;else if (s[i]>='0' && s[i]<='9') t=t*10+(int)(s[i]-'0');else if (s[i]=='-') {ans+=(len-i-1)*t;break;}}}while (ans%10) {ans++;}cout<<ans<<",-"<<endl;return 0;
}
C. Beer Coasters
题意:给定一个圆的圆心和一个矩形的左下方坐标和右上方坐标,除圆的半径之外的 6 个数据均 在-1000 到 1000 范围内,圆的半径在 1 到 1000 范围。求圆与矩形相交的面积。
#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>
#include <cmath>
#include <cstring>
#include <ctime>
#include <iomanip>
using namespace std;
#define INF 0x3f3f3f3f
#define eps 1e-10
#define pi acos(-1.0)
typedef long long ll;
int dcmp(double x) {if(fabs(x)<eps)return 0;return x>0?1:-1;
}
struct Point {double x,y;Point(double _x=0,double _y=0) {x=_x;y=_y;}
};
Point operator + (const Point &a,const Point &b) {return Point(a.x+b.x,a.y+b.y);
}
Point operator - (const Point &a,const Point &b) {return Point(a.x-b.x,a.y-b.y);
}
Point operator * (const Point &a,const double &p) {return Point(a.x*p,a.y*p);
}
Point operator / (const Point &a,const double &p) {return Point(a.x/p,a.y/p);
}
bool operator < (const Point &a,const Point &b) {return a.x<b.x||(dcmp(a.x-b.x)==0&&a.y<b.y);
}
bool operator == (const Point &a,const Point &b) {return dcmp(a.x-b.x)==0&&dcmp(a.y-b.y)==0;
}
double Dot(Point a,Point b) {return a.x*b.x+a.y*b.y;
}
double Length(Point a) {return sqrt(Dot(a,a));
}
double Angle(Point a,Point b) {return acos(Dot(a,b)/Length(a)/Length(b));
}
double angle(Point a) {return atan2(a.y,a.x);
}
double Cross(Point a,Point b) {return a.x*b.y-a.y*b.x;
}
Point vecunit(Point a) {return a/Length(a);
}
Point Normal(Point a) {return Point(-a.y,a.x)/Length(a);
}
Point Rotate(Point a,double rad) {return Point(a.x*cos(rad)-a.y*sin(rad),a.x*sin(rad)+a.y*cos(rad));
}
double Area2(Point a,Point b,Point c) {return Length(Cross(b-a,c-a));
}
bool OnSegment(Point p,Point a1,Point a2) {return dcmp(Cross(a1-p,a2-p))==0&&dcmp(Dot(a1-p,a2-p))<=0;
}
struct Line {Point p,v;double ang;Line() {};Line(Point p,Point v):p(p),v(v) {ang=atan2(v.y,v.x);}bool operator < (const Line &L) const {return ang<L.ang;}Point point(double d) {return p+(v*d);}
};
bool OnLeft(const Line &L,const Point &p) {return Cross(L.v,p-L.p)>=0;
}
Point GetLineIntersection(Point p,Point v,Point q,Point w) {Point u=p-q;double t=Cross(w,u)/Cross(v,w);return p+v*t;
}
Point GetLineIntersection(Line a,Line b) {return GetLineIntersection(a.p,a.v,b.p,b.v);
}
double PolyArea(vector<Point> p) {int n=p.size();double ans=0;for(int i=1; i<n-1; i++)ans+=Cross(p[i]-p[0],p[i+1]-p[0]);return fabs(ans)/2;
}
struct Circle {Point c;double r;Circle() {}Circle(Point c, double r):c(c), r(r) {}Point point(double a) {return Point(c.x+cos(a)*r, c.y+sin(a)*r);}
};bool InCircle(Point x,Circle c) {return dcmp(c.r-Length(c.c-x))>=0;
}
bool OnCircle(Point x,Circle c) {return dcmp(c.r-Length(c.c-x))==0;
}
int getSegCircleIntersection(Line L,Circle C,Point *sol) {Point nor=Normal(L.v);Line p1=Line(C.c,nor);Point ip=GetLineIntersection(p1,L);double dis=Length(ip-C.c);if(dcmp(dis-C.r)>0)return 0;Point dxy=vecunit(L.v)*sqrt(C.r*C.r-dis*dis);int ret=0;sol[ret]=ip+dxy;if(OnSegment(sol[ret],L.p,L.point(1)))ret++;sol[ret]=ip-dxy;if(OnSegment(sol[ret],L.p,L.point(1)))ret++;return ret;
}
double SegCircleArea(Circle C,Point a,Point b) {double a1=angle(a-C.c);double a2=angle(b-C.c);double da=fabs(a1-a2);if(da>pi)da=pi*2-da;return dcmp(Cross(b-C.c,a-C.c))*da*C.r*C.r/2.0;
}
double PolyCircleArea(Circle C,Point *p,int n) {double ret=0;Point sol[2];p[n]=p[0];for(int i=0; i<n; i++) {double t1,t2;int cnt=getSegCircleIntersection(Line(p[i],p[i+1]-p[i]),C,sol);if(cnt==0) {if(!InCircle(p[i],C)||!InCircle(p[i+1],C))ret+=SegCircleArea(C,p[i],p[i+1]);else ret+=Cross(p[i+1]-C.c,p[i]-C.c)/2;}if(cnt==1) {if(InCircle(p[i],C)&&(!InCircle(p[i+1],C)||OnCircle(p[i+1],C)))ret+=Cross(sol[0]-C.c,p[i]-C.c)/2,ret+=SegCircleArea(C,sol[0],p[i+1]);//,cout<<"jj-1"<<endl;else ret+=SegCircleArea(C,p[i],sol[0]),ret+=Cross(p[i+1]-C.c,sol[0]-C.c)/2;//,cout<<"jj-2"<<endl;}if(cnt==2) {if((p[i]<p[i+1])^(sol[0]<sol[1]))swap(sol[0],sol[1]);ret+=SegCircleArea(C,p[i],sol[0]);ret+=Cross(sol[1]-C.c,sol[0]-C.c)/2;ret+=SegCircleArea(C,sol[1],p[i+1]);}}return fabs(ret);
}int main() {ios::sync_with_stdio(0);cin.tie(0);Point p[5];double x1,y1,x2,y2,x3,y3,R;cin>>x1>>y1>>R>>x2>>y2>>x3>>y3;Circle C=Circle(Point(x1,y1),R);if(x2>x3)swap(x2,x3);if(y2>y3)swap(y2,y3);p[0]=Point(x2,y2);p[2]=Point(x3,y3);p[1]=Point(x3,y2);p[3]=Point(x2,y3);double ans=PolyCircleArea(C,p,4);if(ans<-eps) ans=-ans;cout<<fixed<< setprecision(4)<<ans;return 0;
}
D. Beer Flood
E. Beer Game
F. Beer Marathon
#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>
#include <cmath>
#include <cstring>
using namespace std;
#define INF 0x3f3f3f3f
typedef long long ll;const int maxn=1e6+10;
ll n,k;
ll a[maxn];
ll b[maxn];
int main() {ios::sync_with_stdio(0);cin.tie(0);cin>>n>>k;for (int i=1; i<=n; i++){cin>>a[i];}sort(a+1,a+n+1);for (int i=1; i<=n; i++){b[i]=a[i]-(ll)i*k;} sort(b+1,b+n+1);ll ans=0;if (n&1){ll t=b[(n+1)/2];for (int i=1; i<=n; i++)ans+=abs(b[i]-t);//cout<<t<<endl;}else {ll t1=b[n/2];ll t2=b[n/2+1];ll ans1=0;ll ans2=0;for (int i=1; i<=n; i++)ans1+=abs(b[i]-t1);for (int i=1; i<=n; i++)ans2+=abs(b[i]-t2);ans=min(ans1,ans2);}cout<<ans<<endl;return 0;
}
G. Beer Mugs
题意:给你一个字符串,让你求最长的连续的一段重新改变顺序可构造成回文串的子串。
#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>
#include <cmath>
#include <cstring>
using namespace std;
#define INF 0x3f3f3f3f
typedef long long ll;int vis[1<<21];
int main(){ios::sync_with_stdio(0);cin.tie(0);int n;int sum=0;int ans=0;vis[0]=-1; //n-1-(-1)=nstring s;cin>>n>>s;for (int i=0; i<n; i++){sum^=(1<<(s[i]-'a'));if (!vis[sum]) vis[sum]=i;else ans=max(ans,i-vis[sum]);for (int j=0; j<20; j++){sum^=(1<<j);if (vis[sum]) ans=max(ans,i-vis[sum]);sum^=(1<<j);}}cout<<ans<<endl;return 0;
}
H. Screamers in the Storm
I. Sixpack
J. Beer Vision
CTU Open Contest 2019相关推荐
- CTU Open Contest 2019 计蒜客重现补题报告
个人总结 寒假过完的第一场比赛,总是有很多问题.主要有以下两点:一是寒假做题有点依赖翻译,看不下去很长的英文题面,导致这次比赛的一些题目看很长时间也没看懂.二是发现了自己的做题量仍然很少,很多题目缺乏 ...
- 2021年度训练联盟热身训练赛第二场(ICPC North Central NA Contest 2019,南阳师范学院),签到题ABCDEFGIJ
A. Binarize It,简单枚举 链接:https://ac.nowcoder.com/acm/contest/12794/A 来源:牛客网 题目描述 Professor Boolando ca ...
- Central Europe Regional Contest 2019 J. Saba1000kg (并查集+根号讨论)
链接:https://ac.nowcoder.com/acm/contest/7817/I 来源:牛客网 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 262144K,其他语言524 ...
- Helvetic Coding Contest 2019 online mirror (teams allowed, unrated)
http://codeforces.com/contest/1184 A1 找一对整数,使x^x+2xy+x+1=r 变换成一个分式,保证整除 #include<iostream> #in ...
- Yahoo Programming Contest 2019 F - Pass
传送门 题目大意 给定一个只包含012序列,0表示这个人有2个红球,1表示一个红球一个蓝球,2表示两个蓝球.进行n*2次游戏,每次游戏所有有球的人选择一个球递给前一个人,第一个人把球放到一个序列中,' ...
- Yahoo Programming Contest 2019 自闭记
A:签到. #include<iostream> #include<cstdio> #include<cmath> #include<cstdlib> ...
- Atcoder Yahoo Programming Contest 2019 简要题解
A-C 直接放代码吧. A int n,k; int main() {n=read();k=read();puts(k<=(n+1)/2?"YES":"NO&quo ...
- The 10th Shandong Provincial Collegiate Programming Contest 2019山东省赛游记+解题报告
比赛结束了几天...这篇博客其实比完就想写了...但是想等补完可做题顺便po上题解... 5.10晚的动车到了济南,没带外套有点凉.酒店还不错. 5.11早上去报道,济南大学好大啊...感觉走了一个世 ...
- NIKKEI Programming Contest 2019 翻车记
A:签到. #include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> ...
最新文章
- 深度学习中的最大似然估计简介
- Study on Android【四】--显示控件使用
- 被人恨,但感觉不错!
- Android 应用 之路 MPAndroidChart~ScatterChart
- 反转给定区间的链表C语言,寻找素数对(C++)
- 递归系列之一_南诺塔问题
- Nginx-Lua模块的执行顺序
- 进腾讯实习要交钱?腾讯2021年开除70名员工,拉黑13家公司
- python anaconda安装redis_Linux下安装python,redis
- qt设置窗口不在任务栏上显示
- HDU 1847 (博弈 找规律) Good Luck in CET-4 Everybody!
- windows java环境搭建_Java环境搭建(Windows环境)-Fun言
- mysql 5.1 开启慢查询_mysql开启慢查询
- fatal: unable to access ‘https://github.com/abseil/abseil-cpp.git/‘: Failed connect to github.com:44
- Apk进行360加固后文件损坏之解决
- 运筹学动态规划逆序解法_运筹学第七章 动态规划讲解.ppt
- Excel如何批量设置英语句首大写
- 多任务学习-Multitask Learning概述
- 这4款浏览器必装插件,让浏览器使用体验上升100%
- 文件夹如何改名,教你批量重命名文件夹名方法
热门文章
- 6.6 创建选项卡窗体(上)
- 微信小程序原声自定义日期选择器
- 10.1粤北骑行图文
- LoRaWAN终成全球物联网标准;利尔达与Everynet达成战略合作
- vscode实现左边代码右边浏览器实时分屏
- 软考——(5)计算机系统之CPU组成
- 君子之交淡如水,年华易逝人不归
- 论文解读-Deep Anomaly Detection on Attributed Networks
- Error: <path> attribute transform: Expected number, “matrix(NaN,NaN,NaN,NaN,…“. echarts3D柱图报错
- 2008年总结 & 2009年展望