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. 寒假day16

    今天优化了管理员界面,人才标签模块遇到了一点问题,部分结果无法显示,正在寻找原因

  2. Java 14 令人期待的 5 大新特性,打包工具终于要来了

    随着新的 Java 发布生命周期的到来,新版本预计将于 2020 年 3 月发布,本文将对其中的 5 个主要特性作些概述. Java 13刚刚发布给开发人员使用不久,最新版本的JDK于2019年9月发 ...

  3. GUI(Graphical User Interface)

    译:用户和图形界面 GUI与程序交互的不同方式,包含3基本要素:输入,处理和输出. 常用GUI框架包括以下几种: wxPython Kivy Flexx PyQt Tkinter Pywin32 Py ...

  4. 今天 运营同事发现的bug记录 上传商品时商品名称带双引号 导致输出页面时 双引号被转义

    例如  ”sk||““美白”淡化 这样输出表单页面时显示出来的只有sk||  解决办法 把输出文字对双引号进行转义

  5. Excel Old format or invalid type library 错误原因

    Old format or invalid type library 错误原因 调用excel方法失败,Old format or invalid type library 解决方案: 1,这是Exc ...

  6. jquery判断字符串中是否包含特定字符的方法总结

    方法一:使用indexOf() 和lastIndexOf()方法 案例: var Cts = "bblText"; if(Cts.indexOf("Text") ...

  7. LeetCode——973. 最接近原点的 K 个点

    我们有一个由平面上的点组成的列表 points.需要从中找出 K 个距离原点 (0, 0) 最近的点. (这里,平面上两点之间的距离是欧几里德距离.) 你可以按任何顺序返回答案.除了点坐标的顺序之外, ...

  8. 产品对话 | 愿云原生不再只有Kubernete

    从2013年,云原生(Cloud Native)的概念由 Pivotal 的 MattStine 首次提出,到现在,其技术细节不断得到社区的完善.云原生逐渐演变出包括 DevOps.持续交付.微服务. ...

  9. nouveau :failed to create kernel chanel,-22

    一:錯誤描述:今天在重啓 Ubuntu 的過程中,出現下圖的 grub 選項,系統重啓/開機之後出現以下畫面,然後選擇 Ubuntu 之後黑屏,提示錯誤:nouveau :failed to crea ...

  10. Android json数据Log格式化打印

    https://blog.csdn.net/adarcy/article/details/76601896 public static final String LINE_SEPARATOR = Sy ...