Codeforces #337
来源:互联网 发布:砍价软件有哪些 编辑:程序博客网 时间:2024/05/24 07:22
A题:
水题,特判是否为奇数,奇数则为0
#include <iostream>#include <cstdio>using namespace std;int main(){ int n; int a,b; while(scanf("%d",&n)==1) { if(n%2==1)printf("0\n"); else { a=n/2; b=(a-1)/2; printf("%d\n",b); } } return 0;}
B题:
水题,给出n种颜色的数量,选取一种颜色开始给方块涂色,并按顺序使用这些颜色,直到有颜色没有了,问可以涂多少矩阵。
涂色数量显然受限制最少的颜色数量,要更多涂色则要选择离最少颜色更靠左的颜色开始,记得开头和结尾是相连的。
#include <iostream>#include <cstdio>#include <algorithm>using namespace std;#define ll long longconst int maxn=200000+10;ll a[maxn];int main(){ int n; ll minv; int cot; while(scanf("%d",&n)==1) { minv=2000000000; for(int i=0;i<n;i++) { scanf("%I64d",&a[i]); minv=min(minv,a[i]); } cot=0; bool flag=false; int temp=0; int ans=0; for(int i=n-1;i>=0;i--) { if(a[i]==minv) { ans=max(ans,cot); if(!flag) { temp=cot; flag=true; } cot=0; } else cot++; } ans=max(ans,temp+cot); printf("%I64d\n",n*minv+ans); } return 0;}
C题:
给出k,构建2^k个相互正交的2^k维向量。(向量元素值只有1和-1)(有个叫Hadamard Matrix的矩阵)
在别人助攻下做出来的。
首先假设已经构造了矩阵A(k)
然后A(k+1)=易证明,这是成立的。
#include <iostream>#include <cstdio>using namespace std;bool ans[10][522][522];int main(){ ans[0][0][0]=0; for(int i=1;i<10;i++) { for(int j=0;j<1<<(i-1);j++) { for(int k=0;k<1<<(i-1);k++) { ans[i][j][k]=ans[i][j][k+(1<<(i-1))]=ans[i][j+(1<<(i-1))][k+(1<<(i-1))]=ans[i-1][j][k]; ans[i][j+(1<<(i-1))][k]=!ans[i-1][j][k]; } } } int n; bool flag=false; while(scanf("%d",&n)==1) { flag=true; for(int i=0;i<1<<n;i++) { for(int j=0;j<1<<n;j++) putchar(ans[n][i][j]?'*':'+'); putchar('\n'); } } return 0;}
D题:
线段树+扫描线模板题
#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>using namespace std;#define lson(i) i<<1#define rson(i) (i<<1)+1const int maxn=10 + 2e5;struct Node{ int x1,x2,y; int c; Node(){} Node(int x1,int x2,int y,int c):x1(x1),x2(x2),y(y),c(c){} bool operator<(const Node& b)const { return y>b.y; }}line[maxn<<1];int sum[maxn<<3];int flag[maxn<<3];int x[maxn<<1];int ql,qr;void push_up(int i,int l,int r){ if(flag[i])sum[i]=x[r]-x[l-1]; else if(l==r)sum[i]=0; else sum[i]=sum[lson(i)]+sum[rson(i)];}void update(int i,int l,int r,int c){ if(ql<=l&&r<=qr) { flag[i]+=c; push_up(i,l,r); } else { int m=l+(r-l)/2; if(ql<=m)update(lson(i),l,m,c); if(m<qr)update(rson(i),m+1,r,c); push_up(i,l,r); }}int bfind(int l,int r,int v){ int m; while(l<r) { m=l+(r-l)/2; if(x[m]<v)l=m+1; else r=m; } return l;}int main(){ //printf("%d\n",maxn); int n; int x1,y1,x2,y2; int cot; while(scanf("%d",&n)==1) { cot=0; memset(flag,0,sizeof(flag)); memset(sum,0,sizeof(sum)); for(int i=0;i<n;i++) { scanf("%d%d%d%d",&x1,&y1,&x2,&y2); if(x1>x2)swap(x1,x2); if(y1<y2)swap(y1,y2); line[cot]=Node(x1-1,x2,y1,1); x[cot++]=x1-1; line[cot]=Node(x1-1,x2,y2-1,-1); x[cot++]=x2; } sort(x,x+cot); sort(line,line+cot); int k=0; long long ans=0; for(int i=1;i<cot;i++) if(x[i]!=x[i-1])x[++k]=x[i]; for(int i=0;i<cot-1;i++) { ql=bfind(0,k,line[i].x1)+1; qr=bfind(0,k,line[i].x2); update(1,1,k,line[i].c); ans+=(long long)sum[1]*(line[i].y-line[i+1].y); } printf("%I64d\n",ans); } return 0;}
0 0
- Codeforces #337
- codeforces 337C Quiz
- codeforces---#196 337A
- codeforces--#196 337B
- Codeforces 337d
- CodeForces 337A Puzzles
- CodeForces 337A - Puzzles
- codeforces 337A
- CodeForces 337C. Quiz
- CodeForces-337B
- CodeForces 337C. Quiz
- codeforces 337A Puzzles
- codeforces~~~
- Codeforces
- codeforces
- Codeforces
- codeforces
- codeforces
- 【splay】BZOJ 1507:[NOI2003]Editor
- linux虚拟机与win主机之间ping通以及其他网络设置
- Intent 的传值,取值,打电话等。。
- Qt的Model/View (二)
- 图书馆充电位置爆满解决办法
- Codeforces #337
- 开发很有用的地址
- Brainiac Designer
- 正确设置 php-fpm子进程用户 提高网站安全性 防止被挂木马
- Unity3D研究院之IOS全自动编辑framework、plist、oc代码(六十七)
- Javascript面向对象及组件详细介绍(四)包装对象
- 脑机接口技术的未来之驳
- jdGrid的使用
- 安利一下翻*的东东QAQ