Codeforces Round #532
以后不放水题了
C.NN and the Optical Illusion
复习一下高中数学即可
$\frac{ans}{ans+r}=\sin \frac{\pi}{n}$
解方程
#include<cmath>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const double pai=acos(-);
int n,d; double a;
int main()
{
scanf("%d%d",&n,&d),a=pai/n;
printf("%f",sin(a)*d/(-sin(a)));
return ;
}
D.Dasha and Chess
先走到中间,然后背对着车最少的那个角落走,根据咕咕原理可知这边最少有 666*3/4=499.5— —也就是500 只车,而走过去只需要499步,所以一定能被将到;总步数最多499+499步
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=;
pair<int,int> rook[N];
int t1,t2,t3,kx,ky,mini;
int ocp[N][N],cnt[][];
void Check()
{
if(t1<=) exit();
}
void Move(int xx,int yy)
{
kx+=xx,ky+=yy;
if(ocp[kx][ky]) kx-=xx;
printf("%d %d\n",kx,ky),fflush(stdout);
scanf("%d%d%d",&t1,&t2,&t3),Check();
int rx=rook[t1].first,ry=rook[t1].second;
ocp[rx][ry]=false,rook[t1]=make_pair(t2,t3),ocp[t2][t3]=true;
}
int main()
{
scanf("%d%d",&kx,&ky),mini=1e9;
for(int i=;i<=;i++)
{
scanf("%d%d",&t1,&t2);
rook[i]=make_pair(t1,t2),ocp[t1][t2]=true;
}
while(kx<) Move(,);
while(kx>) Move(-,);
while(ky<) Move(,);
while(ky>) Move(,-);
for(int i=;i<=;i++)
for(int j=;j<=;j++)
if(ocp[i][j]) cnt[i>][j>]++;
for(int i=;i<=;i++)
for(int j=;j<=;j++)
if(cnt[i][j]<mini) mini=cnt[i][j];
for(int i=;i<=;i++)
for(int j=;j<=;j++)
if(cnt[i][j]==mini)
while(true) Move(i?-:,j?-:);
return ;
}
E.Andrew and Taxi
首先一定有解,构造方法是所有边都是小编号指向大编号,那么二分答案对大于答案的边跑拓扑排序检验即可
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=;
struct a
{
int u,v,w;
}edg[N];
int p[N],noww[N],goal[N];
int deg[N],idx[N],que[N],outp[N];
int n,m,f,b,t1,t2,t3,cnt,num,ans;
void Link(int f,int t)
{
noww[++cnt]=p[f],p[f]=cnt;
goal[cnt]=t,deg[t]++;
}
bool Nocir(int x)
{
num=,cnt=,f=,b=-;
memset(p,,sizeof p);
memset(deg,,sizeof deg);
for(int i=;i<=m;i++)
if(edg[i].w>x)
Link(edg[i].u,edg[i].v);
for(int i=;i<=n;i++)
if(!deg[i]) que[++b]=i;
while(f<=b)
{
int tn=que[f++]; idx[tn]=++num;
for(int i=p[tn];i;i=noww[i])
if(!(--deg[goal[i]]))
que[++b]=goal[i];
}
for(int i=;i<=n;i++)
if(deg[i]) return false;
return true;
}
int main()
{
scanf("%d%d",&n,&m);
for(int i=;i<=m;i++)
{
scanf("%d%d%d",&t1,&t2,&t3);
edg[i]=(a){t1,t2,t3},ans=max(ans,t3);
}
int l=,r=ans;
while(l<=r)
{
int mid=(l+r)/;
if(Nocir(mid)) r=mid-,ans=mid;
else l=mid+;
}
Nocir(ans);
for(int i=;i<=m;i++)
if(edg[i].w<=ans&&idx[edg[i].u]>idx[edg[i].v])
outp[++outp[]]=i;
printf("%d %d\n",ans,outp[]);
for(int i=;i<=outp[];i++)
printf("%d ",outp[i]);
return ;
}
F.Ivan and Burgers
恭喜出题人获得了“出到原题”成就
然后就被踩标算了。。。
#include<cstdio>
#include<vector>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=,K=;
vector<pair<int,int> > ve[N];
vector<pair<int,int> > ::iterator it;
int n,m,t1,t2,val[N],ans[N],bas[K],pos[K];
void Insert(int x,int y)
{
for(int i=;~i;i--)
if(x&(<<i))
{
if(!bas[i])
{
bas[i]=x,pos[i]=y;
return;
}
if(y>pos[i])
swap(x,bas[i]),swap(y,pos[i]);
x^=bas[i];
}
}
int main()
{
scanf("%d",&n);
for(int i=;i<=n;i++)
scanf("%d",&val[i]);
scanf("%d",&m);
for(int i=;i<=m;i++)
{
scanf("%d%d",&t1,&t2);
ve[t2].push_back(make_pair(t1,i));
}
for(int i=;i<=n;i++)
{
Insert(val[i],i);
for(it=ve[i].begin();it!=ve[i].end();it++)
{
int lef=it->first,idx=it->second;
for(int j=;~j;j--)
if(pos[j]>=lef&&(ans[idx]^bas[j])>ans[idx])
ans[idx]^=bas[j];
}
}
for(int i=;i<=m;i++)
printf("%d\n",ans[i]);
return ;
}
Codeforces Round #532的更多相关文章
- Codeforces Round #532 (Div. 2)
Codeforces Round #532 (Div. 2) A - Roman and Browser #include<bits/stdc++.h> #include<iostr ...
- Codeforces Round #532 (Div. 2) 题解
Codeforces Round #532 (Div. 2) 题目总链接:https://codeforces.com/contest/1100 A. Roman and Browser 题意: 给出 ...
- Codeforces Round #532 (Div. 2) F 线性基(新坑) + 贪心 + 离线处理
https://codeforces.com/contest/1100/problem/F 题意 一个有n个数组c[],q次询问,每次询问一个区间的子集最大异或和 题解 单问区间子集最大异或和,线性基 ...
- Codeforces Round #532 (Div. 2):F. Ivan and Burgers(贪心+异或基)
F. Ivan and Burgers 题目链接:https://codeforces.com/contest/1100/problem/F 题意: 给出n个数,然后有多个询问,每次回答询问所给出的区 ...
- Codeforces Round #532 (Div. 2)- B(思维)
Arkady coordinates rounds on some not really famous competitive programming platform. Each round fea ...
- Codeforces Round #532(Div. 2) C.NN and the Optical IIIusion
链接:https://codeforces.com/contest/1100/problem/C 题意: 一个圆球外面由其他圆球包裹,两两相连. 给出n,r. n为外面圆球数量,r为内部圆球半径. 求 ...
- Codeforces Round #532(Div. 2) B.Build a Contest
链接:https://codeforces.com/contest/1100/problem/B 题意: 给n,m. 给m个数,每个数代表一个等级,没给一个将其添加到题目池中,当题目池中有难度(1-n ...
- Codeforces Round #532(Div. 2) A.Roman and Browser
链接:https://codeforces.com/contest/1100/problem/A 题意: 给定n,k. 给定一串由正负1组成的数. 任选b,c = b + i*k(i为任意整数).将c ...
- Codeforces Round #532 (Div. 2) E. Andrew and Taxi(二分+拓扑排序)
题目链接:https://codeforces.com/contest/1100/problem/E 题意:给出 n 个点 m 条边的有向图,要翻转一些边,使得有向图中不存在环,问翻转的边中最大权值最 ...
随机推荐
- UVA 816 Abbott's Revenge 紫书
紫书的这道题, 作者说是很重要. 但看着题解好长, 加上那段时间有别的事, 磨了几天没有动手. 最后,这道题我打了五遍以上 ,有两次被BUG卡了,找了很久才找到. 思路紫书上有,就缺少输入和边界判断两 ...
- 占位符golang
定义示例类型和变量 type Human struct { Name string } var people = Human{Name:"zhangsan"} 普通占位符 占位符 ...
- centos安装eclise启动报错
A Java Runtime Environment (JRE) or Java Development Kit (JDK) must be avail http://blog.csdn.net/u0 ...
- 第三次实验报告 敏捷开发与XP实践
一. 实验内容 (一)敏捷开发与XP 摘要:一项实践在XP环境中成功使用的依据通过XP的法则呈现,包括:快速反馈.假设简单性.递增更改.提倡更改.优质工作.XP软件开发的基石是XP的活动,包括:编码 ...
- 20145214《网络对抗》MAL_后门原理与实践
20145214<网络对抗>MAL_后门原理与实践 基础问题回答 (1)例举你能想到的一个后门进入到你系统中的可能方式? 网页上查找资料时有时会不小心点到弹出来的广告,如果这个广告是个钓鱼 ...
- Software-Defined Networking A Comprehensive Survey(一)
传统网络:1 复杂,难于管理 2 很难实现根据之前定义的方案进行配置,3 对于缺陷.变化不能够再次进行配置 4 控制和数据平面绑定在一起,使许多缺陷难于解决 SDN网络:通过打破传统网络垂直整合,从底 ...
- web国际化,在不同的浏览环境,显示不同的语言
所谓国际化就是支持多种语言,web应用在不同的浏览环境中可以显示出不同的语言.假设我们正在开发一个支持多国语言的Web应用程序,要求系统能够根据客户端的系统的语言类型返回对应的界面:英文的操作系统返回 ...
- HighCharts点击柱形或饼块等加URL或Click事件
我们在做图表的时候,有时候需要在单个数据上加链接或点击事件,是在plotOptions里的events里设置的: 如下代码: plotOptions: { pie: { cursor: 'pointe ...
- awk4.0对数组value排序
有朋友问了一个问题,要求对下面这段文本进行处理: http://www.baidu.com/2.html http://www.baidu.com/2.html http://www.baidu.co ...
- PAT 1051 复数乘法
https://pintia.cn/problem-sets/994805260223102976/problems/994805274496319488 复数可以写成(A + Bi)的常规形式,其中 ...