Codeforces Beta Round #97 (Div. 2)
A题求给出映射的反射,水题
#include <cstdio>
int x,ans[105],n;
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%d",&x);
ans[x]=i;
}for(int i=1;i<=n;i++)printf("%d ",ans[i]);
return 0;
}
B题,三进制的减法
#include <cstdio>
#include <algorithm>
using namespace std;
int a[1000],b[1000],c[1000];
int A,B,C,la,lb,lc;
int main(){
scanf("%d%d",&A,&C);
while(A){a[la++]=A%3;A/=3;}
while(C){c[lc++]=C%3;C/=3;}
for(int i=0;i<la||i<lc;i++){
if(a[i]==c[i])b[i]=0;
if((a[i]+1)%3==c[i])b[i]=1;
if((a[i]+2)%3==c[i])b[i]=2;
}for(int i=max(la,lc);i>=0;i--)B=B*3+b[i];
printf("%d\n",B);
return 0;
}
C题题意,更改一个数字,使得数列总和最小
#include <cstdio>
#include <algorithm>
using namespace std;
int n,a[100005];
int main(){
scanf("%d",&n);
for(int i=0;i<n;i++)scanf("%d",&a[i]);
sort(a,a+n);
if(a[n-1]==1)a[n-1]=2;else a[n-1]=1;
sort(a,a+n);
for(int i=0;i<n;i++)printf("%d ",a[i]);
return 0;
}
D题给出八个点,判断是否能够分成两组,使得第一组四点构成正方形,第二组四点构成矩形
构成矩形的判断方式是,对角线长度相等,并且中点重合,构成正方形的判断方式是已构成的矩形相邻两边长度相等
对于八个点利用状态压缩枚举每一种四个点的选择情况,判断是否满足条件即可
#include <cstdio>
#include <algorithm>
using namespace std;
struct data{double x,y;}p[8],p1[4],p2[4];
bool cmp(data a,data b){return a.x==b.x?a.y<b.y:a.x<b.x;}
bool CheckSquare(){
sort(p1,p1+4,cmp);
double d1=(p1[3].x-p1[0].x)*(p1[3].x-p1[0].x)+(p1[3].y-p1[0].y)*(p1[3].y-p1[0].y);
double d2=(p1[2].x-p1[1].x)*(p1[2].x-p1[1].x)+(p1[2].y-p1[1].y)*(p1[2].y-p1[1].y);
return(d1==d2&&(p1[3].x+p1[0].x==p1[1].x+p1[2].x)&&(p1[3].y+p1[0].y==p1[1].y+p1[2].y));
}
bool CheckRectangle(){
sort(p2,p2+4,cmp);
double d1=(p2[3].x-p2[0].x)*(p2[3].x-p2[0].x)+(p2[3].y-p2[0].y)*(p2[3].y-p2[0].y);
double d2=(p2[2].x-p2[1].x)*(p2[2].x-p2[1].x)+(p2[2].y-p2[1].y)*(p2[2].y-p2[1].y);
double d3=(p2[2].x-p2[0].x)*(p2[2].x-p2[0].x)+(p2[2].y-p2[0].y)*(p2[2].y-p2[0].y);
double d4=(p2[0].x-p2[1].x)*(p2[0].x-p2[1].x)+(p2[0].y-p2[1].y)*(p2[0].y-p2[1].y);
return(d1==d2&&d3==d4&&(p2[3].x+p2[0].x==p2[1].x+p2[2].x)&&(p2[3].y+p2[0].y==p2[1].y+p2[2].y));
}
int main(){
for(int i=0;i<8;i++)scanf("%lf%lf",&p[i].x,&p[i].y);
for(int i=0;i<256;i++){
int tmp=i,cnt=0;
for(int j=0;j<8;j++)if((1<<j)&i)cnt++;
if(cnt!=4)continue; cnt=0;int cnt0=0;
for(int j=0;j<8;j++){
if((1<<j)&i)p1[cnt++]=p[j];
else p2[cnt0++]=p[j];
}
if(CheckSquare()&&CheckRectangle()){
puts("YES");
for(int j=0;j<8;j++)if(!((1<<j)&i))printf("%d ",j+1);puts("");
for(int j=0;j<8;j++)if(((1<<j)&i))printf("%d ",j+1);puts("");
return 0;
}
}puts("NO");
return 0;
}
E题的意思是有两个人,分别轮流去除字符串中的一个字符,一个为了让字符串变小,一个为了让字符串变大,问最后的结果的可能性
分类讨论题:
#include<bits/stdc++.h>
using namespace std;
int flag[4],x,y,z,len;
char s[100005];
bool check01(){
if(s[len-1]=='0')return 0;
x=1,y=0,z=0;
for(int i=0;i<len-1;i++){
if(s[i]=='1')x++;
if(s[i]=='0')y++;
if(s[i]=='?')z++;
}if(x-(z+y)>=2||y-(x+z)>=1)return 0;
return 1;
}
bool check10(){
if(s[len-1]=='1')return 0;
x=0,y=1,z=0;
for(int i=0;i<len-1;i++){
if(s[i]=='1')x++;
if(s[i]=='0')y++;
if(s[i]=='?')z++;
}if(x-(z+y)>=2||y-(x+z)>=1)return 0;
return 1;
}
int main(){
scanf("%s",s);
len=strlen(s);
for(int i=0;i<len;i++){
if(s[i]=='1')x++;
if(s[i]=='0')y++;
if(s[i]=='?')z++;
}if(x+z-y>=2)flag[0]=1;
if(y+z-x>=1)flag[1]=1;
if(check01())flag[2]=1;
if(check10())flag[3]=1;
if(flag[1])printf("00\n");
if(flag[2])printf("01\n");
if(flag[3])printf("10\n");
if(flag[0])printf("11\n");
return 0;
}
Codeforces Beta Round #97 (Div. 2)的更多相关文章
- Codeforces Beta Round #97 (Div. 1) C. Zero-One 数学
C. Zero-One 题目连接: http://codeforces.com/contest/135/problem/C Description Little Petya very much lik ...
- Codeforces Beta Round #97 (Div. 1) B. Rectangle and Square 暴力
B. Rectangle and Square 题目连接: http://codeforces.com/contest/135/problem/B Description Little Petya v ...
- Codeforces Beta Round #97 (Div. 1) A. Replacement 水题
A. Replacement 题目连接: http://codeforces.com/contest/135/problem/A Description Little Petya very much ...
- Codeforces Beta Round #97 (Div. 1)
B 判矩阵的时候 出了点错 根据点积判垂直 叉积判平行 面积不能为0 #include <iostream> #include<cstdio> #include<cstr ...
- Codeforces Beta Round #80 (Div. 2 Only)【ABCD】
Codeforces Beta Round #80 (Div. 2 Only) A Blackjack1 题意 一共52张扑克,A代表1或者11,2-10表示自己的数字,其他都表示10 现在你已经有一 ...
- Codeforces Beta Round #83 (Div. 1 Only)题解【ABCD】
Codeforces Beta Round #83 (Div. 1 Only) A. Dorm Water Supply 题意 给你一个n点m边的图,保证每个点的入度和出度最多为1 如果这个点入度为0 ...
- Codeforces Beta Round #79 (Div. 2 Only)
Codeforces Beta Round #79 (Div. 2 Only) http://codeforces.com/contest/102 A #include<bits/stdc++. ...
- Codeforces Beta Round #77 (Div. 2 Only)
Codeforces Beta Round #77 (Div. 2 Only) http://codeforces.com/contest/96 A #include<bits/stdc++.h ...
- Codeforces Beta Round #76 (Div. 2 Only)
Codeforces Beta Round #76 (Div. 2 Only) http://codeforces.com/contest/94 A #include<bits/stdc++.h ...
随机推荐
- Ubuntu14.04(64位)安装ATI_Radeon_R7_M265显卡驱动
电脑型号:Dell inspiron 14-5447 笔记本 显卡配置:集成显卡Intel核心显卡,Cpu是i5-4210U;独立显卡ATI_Radeon_R7_M265 网上关于ATI/Intel双 ...
- windows7 64位下运行 regsvr32 注册ocx或者dll的方法
来源:转载 it won't work for you unless you have some form of Visual Basic tools loaded on your system: ...
- Vnstat: 简单实用的网络流量统计工具
官方主页: http://humdi.net/vnstat # Ubuntu 安装: (其本上其它发行版的包管理程序中也都包含了这款软件,请自行安装) sudo apt-get install vns ...
- 通过SocketLog快速分析php程序
转载自http://www.thinkphp.cn/topic/10846.html 正在运行的API有bug,不能var_dump进行调试,因为会影响client的调用.这时候用SocketLog最 ...
- MDX笔记
为啥要写这一篇博客:之前断断续续的学习过MDX,也大致学会了基本语法,理解了基本用法,但是用的机会不多,到了真正用的时候,无从下手,十分尴尬!故此,将语法和基本用法温故总结,结合实例将MDX做个阶段性 ...
- Java安全学习
http://blog.csdn.net/wbw1985/article/details/5506515 http://blog.csdn.net/wbw1985/article/details/60 ...
- iOS中Blocks的介绍
1. 什么是Blocks Blocks是C语言的扩充功能.如果用一句话来概括就是:带有自动变量的匿名函数. 第一次看见Blocks的时候,感觉很类似C语言的函数指针,尤其是Block类型变量,更是有极 ...
- [LeetCode][Python]17: Letter Combinations of a Phone Number
# -*- coding: utf8 -*-'''__author__ = 'dabay.wang@gmail.com' 17: Letter Combinations of a Phone Numb ...
- [LeetCode][Python]Tow Sum
# -*- coding: utf8 -*-'''https://oj.leetcode.com/problems/two-sum/ Given an array of integers, find ...
- 字符串匹配——KMP算法
关于KMP算法的分析,我觉得这两篇博客写的不错: http://www.ruanyifeng.com/blog/2013/05/Knuth–Morris–Pratt_algorithm.html ht ...