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. 干货 | TiDB Operator实践

    干货 | TiDB Operator实践 北京it爷们儿 京东云开发者社区  4天前 K8s和TiDB都是目前开源社区中活跃的开源产品,TiDB Operator项目是一个在K8s上编排管理TiDB集 ...

  2. mybatis-地区三表生成地区树

    package com.dhht.manager.vo.area; import lombok.Data; import java.io.Serializable;import java.util.L ...

  3. springMVC源码阅读-通过画图理解一个请求生命周期(十二)

  4. tomcat8.5的安装、卸载、配置和部署

    安装和卸载 下载 http://tomcat.apache.org/ 环境变量 1.点击此电脑 右键—>属性. 2.创建变量名为CATALINA_HOME,的值为所解压安装tomcat的本地目录 ...

  5. python画图嵌入html

    #-*- coding=utf-8 -*- import matplotlib import matplotlib.pyplot as plt from io import BytesIO impor ...

  6. SDL实践:产品经理如何驱动产品安全建设

    一.序言 本文从产品经理的角度出发,对产品经理的安全职责.产品驱动安全的内涵.工作内容.工作方法.所需安全资源.以及产品经理的安全工作量进行了分析.希望所有产品经理在没有心理负担的情况下,有目标.有方 ...

  7. 吴裕雄--天生自然 JAVA开发学习:String 类

    public class StringDemo{ public static void main(String args[]){ char[] helloArray = { 'r', 'u', 'n' ...

  8. 微服务项目开发学成在线_day01_CMS服务端开发

    05-CMS需求分析-什么是CMS 什么是CMS?CMS (Content Management System)即内容管理系统,不同的项目对CMS的定位不同.CMS有哪些类型? 每个公司对每个项目的C ...

  9. SSM到Spring Boot-校园商铺平台:第01章 开发准备

    第01章 开发准备 环境准备 创建一个Maven项目作为开始 添加一个 Server Runtime 添加maven的java编译插件 <build> <finalName>$ ...

  10. c语言中assert的用法

    /************************************************************************* > File Name: assert.c ...