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的更多相关文章

  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 ...

  2. [Educational Codeforces Round 16]D. Two Arithmetic Progressions

    [Educational Codeforces Round 16]D. Two Arithmetic Progressions 试题描述 You are given two arithmetic pr ...

  3. [Educational Codeforces Round 16]C. Magic Odd Square

    [Educational Codeforces Round 16]C. Magic Odd Square 试题描述 Find an n × n matrix with different number ...

  4. [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 ...

  5. [Educational Codeforces Round 16]A. King Moves

    [Educational Codeforces Round 16]A. King Moves 试题描述 The only king stands on the standard chess board ...

  6. Educational Codeforces Round 6 C. Pearls in a Row

    Educational Codeforces Round 6 C. Pearls in a Row 题意:一个3e5范围的序列:要你分成最多数量的子序列,其中子序列必须是只有两个数相同, 其余的数只能 ...

  7. Educational Codeforces Round 9

    Educational Codeforces Round 9 Longest Subsequence 题目描述:给出一个序列,从中抽出若干个数,使它们的公倍数小于等于\(m\),问最多能抽出多少个数, ...

  8. Educational Codeforces Round 37

    Educational Codeforces Round 37 这场有点炸,题目比较水,但只做了3题QAQ.还是实力不够啊! 写下题解算了--(写的比较粗糙,细节或者bug可以私聊2333) A. W ...

  9. 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 ...

  10. 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 ...

随机推荐

  1. vim8.0模式详解

    pattern pattern.txt For Vim version 8.0. 最近更新: 2017年8月 VIM 参考手册 by Bram Moolenaar 译者: lang2 http://v ...

  2. 集群安装Java环境

    需要安装一个集群环境,发现全部要手动安装java.记录下安装Java环境的过程.虽然,依旧是挨个安装,但总算是有体系了. java 找到下载地址: https://www.oracle.com/tec ...

  3. [原创]Delphi XE10 dxLayoutControl 控件应用指南

    DevExpress VCL套件是一套非常强大的界面控件,可惜关于Delphi开发方面的说明太少,有些控件使用起来一头雾水,不知从何下手.本节详细介绍在Delphi Xe10 Seattle中如何利用 ...

  4. xhr是什么文件类型?

    xhr:XMLHttpRequest在后台与服务器交换数据,这意味着可以在不加载整个网页的情况下,对网页某部分的内容进行更新. 是Ajax的一种用法,而Ajax并不是一门语言,只是一种不需要加载整个网 ...

  5. FileClassify文件日期分类工具

    FileClassify是一款免费的文件按日期分类工具,能够根据文件修改日期,将文件移动或复制到对应的目录中 如果对您有较大的帮助,欢迎捐赠我们,我们对您表示衷心的感谢! 1.输入文件夹和输出文件可以 ...

  6. 再看C# ThreadPool与Task的认识总结

    工作线程与I/O线程     在ThreadPool中有这样一个方法: public static bool SetMaxThreads(int workerThreads, int completi ...

  7. 理解 CI 和 CD 之间的区别(翻译)

    博客搬迁至https://blog.wangjiegulu.com RSS订阅:https://blog.wangjiegulu.com/feed.xml 原文链接:https://blog.wang ...

  8. 动态绑定事件到特定dom元素上,包含新增加的

    $('body').on('click', 'a.detail-data', function (e) { //动态事件绑定 为body元素下所有的a.detail-data元素添加一个事件 包括新增 ...

  9. CentOS 7.5 安装KVM虚拟机(Linux)

    1.认识理解KVM虚拟机 Kernel-based Virtual Machine的简称,是一个开源的系统虚拟化模块,自Linux 2.6.20之后集成在Linux的各个主要发行版本中.它使用Linu ...

  10. Atitit s2018 s4 doc list dvchomepc dvccompc.docx .docx \s2018 s4 doc compc dtS44 \s2018 s4 doc dvcCompc dtS420 \s2018 s4f doc homepc \s2018 s4 doc compc dtS44\(5 封私信 _ 44 条消息)WebSocket 有没有可能取代 AJAX

    Atitit s2018 s4 doc list dvchomepc dvccompc.docx .docx \s2018 s4 doc compc dtS44 \s2018 s4 doc dvcCo ...