Educational Codeforces Round 1
598A - Tricky Sum 20171103
$$ans=\frac{n(n+1)}{2} - 2\sum_{k=0}^{\left \lfloor \log_2 n \right \rfloor}{2^{k}}$$
#include<stdlib.h>
#include<stdio.h>
#include<math.h>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
long long t,n,ans;
void init()
{
scanf("%I64d",&n);ans=n*(n+)/;
for(long long i=;i<;i++)if((1ll<<i)<=n)ans-=*(1ll<<i);
printf("%I64d\n",ans);
}
int main()
{
scanf("%I64d",&t);
for(int i=;i<t;i++)init();
return ;
}
598B - Queries on a String 20171103
设t[i]为最终来到位置i的字符的原位置,对每个位置i,倒序遍历每次操作,若有操作区间覆盖到t[i],则可以找出在这次操作之后来到位置t[i]的字符原来在哪个位置,并更新t[i]
#include<stdlib.h>
#include<stdio.h>
#include<math.h>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
int m,l[],r[],k[],t[];
string s;
int main()
{
cin>>s;
scanf("%d",&m);
for(int i=;i<=m;i++)
scanf("%d%d%d",&l[i],&r[i],&k[i]),l[i]--,r[i]--;
for(int i=;i<s.size();i++)
{
t[i]=i;
for(int j=m;j>=;j--)
if(l[j]<=t[i] && t[i]<=r[j] && l[j]<r[j])
t[i]=(t[i]-l[j]+r[j]-l[j]+-k[j]%(r[j]-l[j]+))%(r[j]-l[j]+)+l[j];
}
for(int i=;i<s.size();i++)printf("%c",s[t[i]]);
return ;
}
598C - Nearest vectors 20171103
对每个坐标对应的辐角进行排序,显然最小的夹角是来自相邻的两项,O(n)扫一遍即可
#include<stdlib.h>
#include<stdio.h>
#include<math.h>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
#define pi acos(-1.0)
struct rua
{
long double angle;
int id;
}a[];
int n,ans1,ans2;long double x,y,m,_;
bool cmp(rua A,rua B){return A.angle<B.angle;}
int main()
{
scanf("%d",&n);
m=;
for(int i=;i<n;i++)
{
cin>>x>>y;
a[i].angle=atan2(y,x);
a[i].id=i;
}
sort(a,a+n,cmp);
for(int i=;i<n;i++)
{
_=a[(i+)%n].angle-a[i].angle;
if(_<)_+=*pi;
if(_<m)m=_,ans1=a[i].id+,ans2=a[(i+)%n].id+;
}
printf("%d %d\n",ans1,ans2);
return ;
}
598D - Igor In the Museum 20171103
简单并查集,预处理每个区域能看到的壁画数量即可
#include<stdlib.h>
#include<stdio.h>
#include<math.h>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
struct rua
{
int x,y;
}fa[][];
int n,m,k,x,y,ans[][];
char s[][];
char read()
{
char ch=getchar();
while(ch!='.' && ch!='*')
ch=getchar();
return ch;
}
rua Find(int x,int y)
{
if(fa[x][y].x==x && fa[x][y].y==y)return fa[x][y];
else return fa[x][y]=Find(fa[x][y].x,fa[x][y].y);
}
void Union(int xx,int xy,int yx,int yy)
{
fa[Find(xx,xy).x][Find(xx,xy).y]=Find(yx,yy);
}
int calc(int i,int j)
{
int _=;
_+=s[i-][j]=='*';
_+=s[i+][j]=='*';
_+=s[i][j+]=='*';
_+=s[i][j-]=='*';
return _;
}
int main()
{
scanf("%d%d%d",&n,&m,&k);
for(int i=;i<=n;i++)
for(int j=;j<=m;j++)
s[i][j]=read();
for(int i=;i<=n;i++)
for(int j=;j<=m;j++)
fa[i][j].x=i,fa[i][j].y=j;
for(int i=;i<=n;i++)
for(int j=;j<=m;j++)
{
if(s[i][j]=='*')continue;
if(s[i-][j]=='.')Union(i,j,i-,j);
if(s[i][j-]=='.')Union(i,j,i,j-);
}
for(int i=;i<=n;i++)
for(int j=;j<=m;j++)
fa[i][j]=Find(i,j);
for(int i=;i<=n;i++)
for(int j=;j<=m;j++)
if(s[i][j]=='.')
ans[fa[i][j].x][fa[i][j].y]+=calc(i,j);
for(int i=;i<=k;i++)
scanf("%d%d",&x,&y),printf("%d\n",ans[Find(x,y).x][Find(x,y).y]);
return ;
}
598E - Chocolate Bar 20171108
设f[n][m][k]为对应答案,考虑横切竖切的所有情况,记忆化搜索就好了
#include<stdlib.h>
#include<stdio.h>
#include<math.h>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
int T,n,m,k,f[][][];
int dfs(int n,int m,int k)
{
if(k==n*m || f[n][m][k] || !k)return f[n][m][k];
int ans=;
for(int i=;i<=n-i;i++)
for(int j=;j<=k;j++)
ans=min(ans,dfs(i,m,j)+dfs(n-i,m,k-j)+m*m);
for(int i=;i<=m-i;i++)
for(int j=;j<=k;j++)
ans=min(ans,dfs(n,i,j)+dfs(n,m-i,k-j)+n*n);
return f[n][m][k]=ans;
}
int main()
{
scanf("%d",&T);
for(int i=;i<=T;i++)
{
scanf("%d%d%d",&n,&m,&k);
printf("%d\n",dfs(n,m,k));
}
return ;
}
598F - Cut Length 20180831
学长的模板真是好用,在模板下面加了几行就过了_(:з」∠)_
贴个链接 http://zjhl2.is-programmer.com/posts/210807.html
/*
学长的模板
*/
LINE l;
int n,m;
POLYGON rua;
int main()
{
scanf("%d%d",&n,&m);
rua.read(n);
while(m--)
l.read(),printf("%.6lf\n",(double)rua.cutlength(l));
return ;
}
Educational Codeforces Round 1的更多相关文章
- [Educational Codeforces Round 16]E. Generate a String
[Educational Codeforces Round 16]E. Generate a String 试题描述 zscoder wants to generate an input file f ...
- [Educational Codeforces Round 16]D. Two Arithmetic Progressions
[Educational Codeforces Round 16]D. Two Arithmetic Progressions 试题描述 You are given two arithmetic pr ...
- [Educational Codeforces Round 16]C. Magic Odd Square
[Educational Codeforces Round 16]C. Magic Odd Square 试题描述 Find an n × n matrix with different number ...
- [Educational Codeforces Round 16]B. Optimal Point on a Line
[Educational Codeforces Round 16]B. Optimal Point on a Line 试题描述 You are given n points on a line wi ...
- [Educational Codeforces Round 16]A. King Moves
[Educational Codeforces Round 16]A. King Moves 试题描述 The only king stands on the standard chess board ...
- Educational Codeforces Round 6 C. Pearls in a Row
Educational Codeforces Round 6 C. Pearls in a Row 题意:一个3e5范围的序列:要你分成最多数量的子序列,其中子序列必须是只有两个数相同, 其余的数只能 ...
- Educational Codeforces Round 9
Educational Codeforces Round 9 Longest Subsequence 题目描述:给出一个序列,从中抽出若干个数,使它们的公倍数小于等于\(m\),问最多能抽出多少个数, ...
- Educational Codeforces Round 37
Educational Codeforces Round 37 这场有点炸,题目比较水,但只做了3题QAQ.还是实力不够啊! 写下题解算了--(写的比较粗糙,细节或者bug可以私聊2333) A. W ...
- Educational Codeforces Round 60 (Rated for Div. 2) - C. Magic Ship
Problem Educational Codeforces Round 60 (Rated for Div. 2) - C. Magic Ship Time Limit: 2000 mSec P ...
- Educational Codeforces Round 60 (Rated for Div. 2) - D. Magic Gems(动态规划+矩阵快速幂)
Problem Educational Codeforces Round 60 (Rated for Div. 2) - D. Magic Gems Time Limit: 3000 mSec P ...
随机推荐
- SuppressLint错误
解决方法:找到注解包,添加到项目提示重复,去掉后又可以了,很奇怪,不过可以了. 方法2:把eclipse项目关闭重新打开,错误又消失了.
- too much recursion(太多递归)Uncaught RangeError: Maximum call stack size exceeded BootstrapValidator报错
在BootstrapValidator中已默认遵守Bootstrap规则,form里的每个输入项目必需包含在类为form-group的标签里,否则BootstrapValidator中定义的field ...
- SAP传输请求自动发布
最近公司服务器做迁移,原R3 PRE需要迁到另外的地方,迁移后一段时间内,需要两套PRE环境同时运行,过一段时间后才将传输路线切换到新的PRE.在切换前,要求新PRE环境也要正常同步发布请求, ...
- iOS:解决UITextView自适应高度粘贴大量文字导致显示不全的问题
一.描述 在UITextView输入框中粘贴大量的文字时,UITextView内容自适应高度计算出现误差,导致整块文字上移消失. 二.方案 在UITextView文字改变的监听中添加如下方法即可. [ ...
- redis 简单使用总结
作者:王清培(Plen wang) 沪江Java资深架构师 最近一段时间与redis接触比较频繁.发现有些东西还是工作中经常会用到的,自己也花了点时间巩固下.本篇文章主要是以总结性的方式梳理,因为r ...
- 使用Canvas制作画图工具
前 言 JRedu canvas是HTML5中重要的元素之一,canvas元素使用JavaScript在网页上绘制图像,画布是一个矩形区域,我们可以控制其每一个元素,并且canvas拥有多种的绘 ...
- ubuntu 安装jdk 的两种方式:
:通过ppa(源) 方式安装. 2:通过官网下载安装包安装. 这里推荐第1种,因为可以通过 apt-get upgrade 方式方便获得jdk的升级 使用ppa/源方式安装 1.添加ppa sudo ...
- instruments symbol name 不显示函数名!
那是因为instruments找不到编译好的dSYM 其它的什么修改配置都没什么用 最好的办法就是直接删除资源文件APP名. 资源库 -> Developer -> Xcode -> ...
- IntelliJ IDEA给Serializable类加上自动的serialVersionUID
如题 见下图 设置以后,点击类,按Alt + Enter 自动加入的代码如下图
- centos mysql密码忘记了如何修改
# /etc/init.d/mysql stop# mysqld_safe --user=mysql --skip-grant-tables --skip-networking &# mysq ...