BZOJ4975 区间翻转
2024-08-24 18:45:36
这个范围给的很像区间dp之类的,想了半天没一点思路,滚去看了一眼status被吓傻了。然后瞎猜了一发结论就过掉了。
求出逆序对数,判断是否为奇数即可。因为翻转区间会把将这段区间的逆序对取反,而长度为4x+2和4x+3的区间的数对数量是奇数,所以每次增加或减少的逆序对个数是奇数。
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<algorithm>
using namespace std;
#define ll long long
#define N 55
char getc(){char c=getchar();while ((c<'A'||c>'Z')&&(c<'a'||c>'z')&&(c<''||c>'')) c=getchar();return c;}
int gcd(int n,int m){return m==?n:gcd(m,n%m);}
int read()
{
int x=,f=;char c=getchar();
while (c<''||c>'') {if (c=='-') f=-;c=getchar();}
while (c>=''&&c<='') x=(x<<)+(x<<)+(c^),c=getchar();
return x*f;
}
int n,a[N],ans;
int main()
{
#ifndef ONLINE_JUDGE
freopen("bzoj4975.in","r",stdin);
freopen("bzoj4975.out","w",stdout);
const char LL[]="%I64d\n";
#else
const char LL[]="%lld\n";
#endif
n=read();
for (int i=;i<=n;i++) a[i]=read();
for (int i=;i<=n;i++)
for (int j=i+;j<=n;j++)
ans+=a[i]<a[j];
if (ans&) cout<<'Q';else cout<<'T';
return ;
}
最新文章
- UWP 判断windows mobile是使用的实体键还是虚拟按键
- 测试框架Mocha与断言expect
- git操作命令
- 使用JavaScript打印网页指定DIV区域
- 解读Unity中的CG编写Shader系列六(漫反射)
- hdu 4036 2011成都赛区网络赛F 模拟 **
- 关于EEG参考电极
- iOS不勾选设置,实现某个界面强制横屏
- Selenium索引
- Debug of bash , perl and python
- java于23设计模式
- Unity相对于Cocos2d-x的比较
- ASP.NET MVC5 Forms登陆+权限控制(控制到Action)
- windows10远程桌面连接身份验证错误:函数不受支持,这可能是由于 CredSSP 加密 Oracle 修正
- 洛谷 P1163";银行贷款";(二分)
- Android开发怎么让自己的APP UI漂亮、大方(规范篇一)
- TraceView工具的使用
- python setattr
- 大牛总结的Linux提权Exp合集
- MySQL(4):主从复制原理