18多校8th
a-容斥原理(带限制的不定方程)
#include<bits/stdc++.h>
using namespace std;
#define mod 998244353
#define ll long long
#define maxn 500005
ll n,m,k;
ll inv[maxn],f[maxn],invf[maxn];
void init(){
inv[]=inv[]=;
for(int i=;i<maxn;i++)
inv[i]=(mod-mod/i)*inv[mod%i]%mod;
f[]=f[]=invf[]=invf[]=;
for(int i=;i<maxn;i++){
f[i]=f[i-]*i%mod;
invf[i]=invf[i-]*inv[i]%mod;
}
}
ll C(ll a,ll b){
if(a< || b< || a>b)return ;
return f[b]*invf[a]%mod*invf[b-a]%mod;
}
int main(){
int T;cin>>T;init();
while(T--){
scanf("%lld%lld%lld",&n,&m,&k);
int cur=;
ll ans=;
for(int i=;i*n<=k;i++){
ans+=cur*C(m-,k+m-i*n-)*C(i,m)%mod;
ans=(ans%mod+mod)%mod;
cur*=-;
}
cout<<ans<<endl;
}
}
E-水题
#include <bits/stdc++.h>
using namespace std; #define REP(i,s,t) for(int i=s;i<=t;i++)
char mpa[][]; void rotatec(int x1,int y1,int x2,int y2){
char a=mpa[x1][y1];
char b=mpa[x1][y2];
char c=mpa[x2][y1];
char d=mpa[x2][y2];
mpa[x1][y1]=c;
mpa[x1][y2]=a;
mpa[x2][y1]=d;
mpa[x2][y2]=b;
} void rotater(int x1,int y1,int x2,int y2){
char a=mpa[x1][y1];
char b=mpa[x1][y2];
char c=mpa[x2][y1];
char d=mpa[x2][y2];
//printf("a=%c b=%c c=%c d=%c \n",a,b,c,d);
mpa[x1][y1]=b;
mpa[x1][y2]=d;
mpa[x2][y1]=a;
mpa[x2][y2]=c;
//printf("1=%c 2=%c 3=%c 4=%c \n",mpa[x1][y1],mpa[x1][y2],mpa[x2][y1],mpa[x2][y2]);
} int main(){
int T;cin>>T;
while(T--){
int q;cin>>q;
REP(i,,)REP(j,,)cin>>mpa[i][j];
while(q--){
string str;cin>>str;
// cout<<"str[0]="<<str[0]<<endl;
// cout<<"str[1]="<<str[1]<<endl;
if(str[]==''){
if(str[]=='C'){
rotatec(,,,);
}else if(str[]=='R'){
rotater(,,,);
}
}else if(str[]==''){
if(str[]=='C')rotatec(,,,);
else rotater(,,,);
}else if(str[]==''){
if(str[]=='C')rotatec(,,,);
else rotater(,,,);
}else if(str[]==''){
if(str[]=='C')rotatec(,,,);
else rotater(,,,);
}
}
REP(i,,){
REP(j,,){
printf("%c",mpa[i][j]);
}puts("");
}
}
}
j-线段树好题(查找区间[l,r[第一个非空元素,开全局变量)
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
#define maxn 100005 int a[maxn],dp1[maxn],dp2[maxn],T,n,m,p,q,p2; #define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
int M1[maxn<<],M2[maxn<<];
void pushup(int rt){
M1[rt]=max(M1[rt<<],M1[rt<<|]);
if(M1[rt<<]>=M1[rt<<|])M2[rt]=M2[rt<<];
else M2[rt]=M2[rt<<|];
}
void build(int l,int r,int rt){
if(l==r){M1[rt]=a[l];M2[rt]=l;return;}
int m=l+r>>;
build(lson);build(rson);
pushup(rt);
}
void query1(int l,int r,int rt,int L,int R){
if(l>=L && r<=R){if(M1[rt]>a[p2])p2=M2[rt];return;}
int m=l+r>>;
if(L<=m)query1(lson,L,R);
if(R>m)query1(rson,L,R);
}
void query(int l,int r,int rt,int L,int R,int k){
if(l==r){if(M1[rt]>k)p2=min(p2,l);return;}
int m=(l+r)/;
if(l>=L&&r<=R){
if(M1[rt<<]>k)query(lson,L,R,k);
else if(M1[rson]>k)query(rson,L,R,k);
return;
}
if(L<=m)query(lson,L,R,k);
if(R>m)query(rson,L,R,k);
}
void init(){
for(int i=n;i;i--){
p2=n+;query(,n,,i,n,a[i]);
if(p2>n)p2=;dp2[i]=dp2[p2]+;
}
}
int main(){
scanf("%d",&T);
while(T--){
int Mx=;
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++)scanf("%d",&a[i]);
for(int i=;i<=n;i++){
if(a[i]>Mx) dp1[i]=dp1[i-]+,Mx=a[i];
else dp1[i]=dp1[i-];
}
build(,n,);
init(); while(m--){
int p,q,ans=;
scanf("%d%d",&p,&q);p2=;
if(p!=)query1(,n,,,p-);
ans+=dp1[p2];
if(q>a[p2]) ans++;
else q=a[p2];p2=n+;
if(p!=n) query(,n,,p+,n,q);
if(p2<=n) ans+=dp2[p2];
printf("%d\n",ans);
}
}
}
18多校8th的更多相关文章
- 2016多校8th 1008【线段树-神题】
题意: T N M N个数 M个操作 一个数组A, 有3个操作 1 l r x,a[l]-a[r]都+x 2 l r,a[i]=sqrt(a[i]),l<=i<=r 3 l r,求和,a[ ...
- java 实现从15位~18位的身份证号码转换,校验中国大陆公民身份证、香港居民身份证、澳门身份证和台湾身份证。
package xidian.sl.netcredit.util; /** * Copyright (C) 2009-2010 Yichuan, Fuchun All rights reserved. ...
- 走楼梯[XDU1031]
Problem 1031 - 走楼梯 Time Limit: 1000MS Memory Limit: 65536KB Difficulty: Total Submit: 724 Accep ...
- java对身份证验证及正则表达式解析
原文地址:http://www.cnblogs.com/zhongshengzhen/ java对身份证验证及正则表达式解析 package service; import java.text.Par ...
- Java 常用正则表达式,Java正则表达式,Java身份证校验,最新手机号码正则表达式
Java 常用正则表达式,Java正则表达式,Java身份证校验,最新手机号码校验正则表达式 ============================== ©Copyright 蕃薯耀 2017年11 ...
- java 身份证工具类
package com.app.wx.common.util; import org.apache.commons.lang3.StringUtils; import java.text.ParseE ...
- js身份证校验
通过js实现对15位或者18位身份证格式校验: 通过调用idCardNoUtil.checkeIdCardNo(idCardNo)传入身份证号码,实现校验. var idCardNoUtil = { ...
- Java的身份证号码工具类
/** * Copyright (C) 2009-2010 Yichuan, Fuchun All rights reserved. * Licensed to the Apache Software ...
- POJ1030 Rating
题目来源:http://poj.org/problem?id=1030 题目大意:有100支队伍(编号1->100),有两场比赛.以下表的形式列出了两场比赛的名次.(有的队伍没有参赛或只参加了一 ...
随机推荐
- C语言进阶学习第三章
以下记录动态内存分配: 1.malloc和free malloc和free分别用于执行动态内存分配和释放.这些函数维护一个可用内存池,当一个程序需要一些内存时,调用malloc函数,malloc从内存 ...
- Python3 From Zero——{最初的意识:007~函数}
一.编写可接受任意数量参数的函数:*.** >>> def test(x, *args, y, **kwargs): ... pass ... >>> test(1 ...
- Jsoup 学习笔记
这里写自定义目录标题 Jsoup 学习笔记 解析 HTML 的字符串解析 URL 解析 本地文件解析 解析数据 DOM 解析 使用选择器解析 选择器概述 选择器组合用法 过滤用法 修改数据 HTML ...
- jquery的attr获取表单checked 布尔值问题
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- LeetCode 67. Add Binary【个位补0,不必对齐】【easy】
Given two binary strings, return their sum (also a binary string). The input strings are both non-em ...
- Ubantu18.04安装WPS
1.去WPS官网选在合适的版本下载安装包2.在官网下载字体包3.分别右键点击安装包,选择第一项“用软件安装打开”,进行安装即可.4.此时启动应用,应该会提示系统缺失字体.5.解决字体缺失(转)
- POST提交数据之---Content-Type的理解
Content-Type是指http/https发送信息至服务器时的内容编码类型,contentType用于表明发送数据流的类型,服务器根据编码类型使用特定的解析方式,获取数据流中的数据. 在网络请求 ...
- java Twain 直接打印/界面打印
这两天,在搞归档系统.需要用到Twain协议来驱动扫描仪. 找了两天,java的twain操作资料真的不多.而且我还是要找直接打印的功能. 后来只能静下心来看类库和源码.最后搞定他. 打印方式分为3种 ...
- IdentityServer_0_参考资料
官方 项目地址:https://github.com/IdentityServer/IdentityServer4 官方Demo:https://github.com/IdentityServer/I ...
- iloc,loc,ix,df[]
总结一. iloc可以把i当做第几个,所以是按行序号;其他的就清楚了. import pandas df = pandas.DataFrame({'a': [1, 2, 3, 4],'b': [5, ...