D. Tokitsukaze, CSL and Stone Game

题意:有n堆石头,每人每次只能去一颗石子,若轮到当前人没任何一堆石子可以取或当前人取到后剩下有俩堆石子个数相同则当前人输;

给定石子序列。

分析:1、若有类似“2 3 3 ”则后手胜,因为有这个序列就必须在这个序列中去石子(因为如果在这个序列以外取子,则会导致输的后者情况),但在这个序列中取不到可解情况,所以该状态为必败态;

    2、若序列中有俩对相同的石子,则后手胜;

   3、除1、2情况外就把利用sum+起来,每个加就+a[i]-(i+1)    为了把他提到前面他不能再动的最优状态(因为俩者都采取最优策略!!!)

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll a[];
int main(){
int n;
ll sum=;
cin>>n; for(int i=;i<=n;i++)
cin>>a[i],sum+=a[i];
sort(a+,a++n);
int countt=;
for(int i=;i<n;i++){
if(a[i]==a[i+]){
if(a[i]==||(i>&&a[i-]+==a[i])||++countt>){
return puts("cslnb"),;
}
}
}
sum-=n*(n-)/;
if(sum%==)
puts("cslnb");
else
puts("sjfnb");
return ; }

F. Tokitsukaze and Strange Rectangle

分析:1、对于每一个点来说,他对问题的贡献为“对于某个点(图中的红点),包含这个点的区间个数是(a区间点个数+1)*(b区间点个数+1)”因为涉及区间个数,所以考虑用树状数组求; 

   2、问题给的x和y1e9,所以要离散化处理一下;

   3、离散化后的坐标是紧挨在一起的!!!!

   4、对于分析第1步的a区间即为不包含当前点的左区间的点的个数,b区间则为不包含当前点的右区间(为了避免重复计算,这个区间的右端点应为当前点的下一点-1);

     5、至于分析第1步为啥都要+1,是为了:    点的个数加1个位置可以作为区间端点的取值;

#include<bits/stdc++.h>
using namespace std;
const int M=2e5+;
typedef long long ll;
int bit[M],x[M],y[M],vis[M];
vector<int>tx,ty,zuobiao[M];
void add(int xx){
while(xx<M)
bit[xx]++,xx+=xx&-xx;
}
int sum(int xx){
int ans=;
while(xx)
ans+=bit[xx],xx-=xx&-xx;
return ans;
}
int main(){
int n;
scanf("%d",&n);
for(int i=;i<=n;i++){
scanf("%d%d",&x[i],&y[i]);
tx.push_back(x[i]);
ty.push_back(y[i]);
}
sort(tx.begin(),tx.end());
sort(ty.begin(),ty.end());
for(int i=;i<=n;i++){
x[i]=lower_bound(tx.begin(),tx.end(),x[i])-tx.begin()+;
y[i]=lower_bound(ty.begin(),ty.end(),y[i])-ty.begin()+;
zuobiao[y[i]].push_back(x[i]);
}
ll ans=;
for(int i=M-;i>=;i--){
if(zuobiao[i].size()==)
continue;
sort(zuobiao[i].begin(),zuobiao[i].end());
for(int j=;j<zuobiao[i].size();j++){
int xx=zuobiao[i][j]; if(!vis[xx])
add(xx),vis[xx]=;
int l=sum(xx-);
int r;
if(j+==zuobiao[i].size())
r=sum(M-)-sum(xx);
else
r=sum(zuobiao[i][j+]-)-sum(xx);
ans+=(l+)*1ll*(r+);
}
}
printf("%I64d\n",ans);
return ;
}

Codeforces Roundd #573 (Div. 2)的更多相关文章

  1. Codeforces Round #573 (Div. 1) 差F

    Codeforces Round #573 (Div. 1) E 题意:二维平面上有 n 个点,你可以放至多 m 条直线使得 (0,0) 与每个点的连线至少与一条直线相交.求原点与所有直线的距离最小值 ...

  2. Codeforces Round 573 (Div.1) 题解

    这场怎么说呢……有喜有悲吧. 开场先秒了 A.看到 B,感觉有点意思,WA 了 2 发后也过了. 此时还在 rk 前 200. 开 C,一看就不可做.跟榜,切 D 人数是 C 的两倍. 开 D.一眼感 ...

  3. Codeforces Round #573 (Div. 2) Tokitsukaze and Mahjong 水题

    B. Tokitsukaze and Mahjong time limit per test1 second memory limit per test256 megabytes Tokitsukaz ...

  4. Codeforces Round #573 (Div. 1)

    Preface 军训终于结束了回来补一补之前的坑发现很多题目题意都忘记了 这场感觉难度适中,F由于智力不够所以弃了,E的话石乐志看了官方英文题解才发现自己已经胡了一大半就差实现了233 水平下降严重. ...

  5. Codeforces Round #573 (Div. 2) D. Tokitsukaze, CSL and Stone Game (博弈,思维)

    D. Tokitsukaze, CSL and Stone Game time limit per test1 second memory limit per test256 megabytes in ...

  6. Codeforces Round #573 (Div. 2) E. Tokitsukaze and Duel (博弈)

    time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...

  7. Codeforces Round #573 (Div. 2)

    A:Tokitsukaze and Enhancement 当时看错条件了..以为A>C>B>D.就胡写了判断条件. #include<bits/stdc++.h> us ...

  8. Codeforces Round #573 (Div. 2) D题题解

    一.题目 ​ Tokitsukaze, CSL and Stone Game ​ Tokitsukaze和CSL正在玩一些石头游戏. ​ 一开始,有n堆的石头,第i堆石头数记为 \(a_i\),两人轮 ...

  9. Codeforces Round #366 (Div. 2) ABC

    Codeforces Round #366 (Div. 2) A I hate that I love that I hate it水题 #I hate that I love that I hate ...

随机推荐

  1. CodeForces 51C 二分搜索

    校队选拔神马的事情就不说了,哥们反正是要崛起的人了! 感谢何骐的提醒. 校队选拔的时候又被二分给坑了,所以还想做几道二分搜索的题目来练练手. C - Three Base Stations Time ...

  2. 201709-2 公共钥匙盒 Java

    思路: 按上课开始时间排一下序,一个时刻一个时刻判断要不要还钥匙,要不要借钥匙 import java.util.ArrayList; import java.util.Collections; im ...

  3. linux下创建swap分区

    两种不同的方式创建swap分区 第一种方法: fdisk /dev/sda n (新建一个分区为/dev/sda6) t (修改分区的id) 82 (swap的id为82) w (重写分区表) par ...

  4. hadoop cmd

    一.hadoop文件操作 1.Ls hadoop fs -ls / 2.Put hadoop fs -put xx /path 3.Mkdir hadoop fs -mkdir 4.要从HDFS中删除 ...

  5. Coursera机器学习——Recommender System测验

    第一题本应该是基础题,考察Cost Function不同形式的表示方法,但却难住了我,说明基本概念掌握不够到位. 1. 在求和的部分,有两种可能,一种是(i,j)同时求和,即∑(i,j):r(i,j) ...

  6. salt-stack 安装nginx

    init-pkg-install: pkg.installed: - names: - gcc - gcc-c++ - make - autoconf - openssl - openssl-deve ...

  7. leetcode 690.员工的重要性

    题目: 给定一个保存员工信息的数据结构,它包含了员工唯一的id,重要度 和 直系下属的id. 比如,员工1是员工2的领导,员工2是员工3的领导.他们相应的重要度为15, 10, 5.那么员工1的数据结 ...

  8. 浅谈JVM - 内存结构(二)- 虚拟机栈|凡酷

    2.1 定义 Java Virtual Machine Stacks(Java虚拟机栈) Java 虚拟机栈描述的是 Java 方法执行的内存模型,用于存储栈帧,是线程私有的,生命周期随着线程启动而产 ...

  9. 吴裕雄--天生自然ShellX学习笔记:Shell 文件包含

    和其他语言一样,Shell 也可以包含外部脚本.这样可以很方便的封装一些公用的代码作为一个独立的文件. Shell 文件包含的语法格式如下: . filename # 注意点号(.)和文件名中间有一空 ...

  10. 吴裕雄--天生自然Linux操作系统:Linux 远程登录

    Linux一般作为服务器使用,而服务器一般放在机房,你不可能在机房操作你的Linux服务器. 这时我们就需要远程登录到Linux服务器来管理维护系统. Linux系统中是通过ssh服务实现的远程登录功 ...