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),有两场比赛.以下表的形式列出了两场比赛的名次.(有的队伍没有参赛或只参加了一 ...
随机推荐
- JVM内核-原理、诊断与优化学习笔记(四):GC算法与种类
文章目录 GC的概念 GC算法 引用计数法 引用计数法的问题 标记清除 标记压缩 小问题 复制算法 复制算法的最大问题是:空间浪费 整合标记清理思想 -XX:+PrintGCDetails的输出 gc ...
- ASP.NET MVC Controller激活系统详解2
一.引言 此篇博文紧接上篇博文进行阐述,本篇博文阐述的主题是Controller激活和url路由 二.总述 ASP.NET路由系统是HTTP请求抵达服务端的第一道屏障,它根据注册的路由规则对拦截的请求 ...
- 反射Reflection
using System; using System.Collections.Generic; using System.Linq; using System.Reflection;// <-- ...
- ECMAScript1.4 对象 | 简单数据类型与复杂数据类型 | 内置对象 | 基本包装类型 | String
对象 函数和对象的区别: 函数:封装代码 对象:封装属性和方法 创建对象的方法: 1,对象字面量{} // 模拟创建一只dog var dog = { // 属性 name: 'puppy', age ...
- c# 编写windows 服务,并制作安装包
对服务的认识有很多个阶段. 第一阶段:当时还在用c++,知道在一个进程里while(True){},然后里面做很多很多事情,这就叫做服务了,界面可能当时还用Console控制台程序. 第二阶段:知道了 ...
- vue 报错:Cannot read property '__ob__' of undefined
我的原因:引入组件后未注册 <script> import ComFirst from "../../components/ComFirst.vue" import C ...
- centos7 RPM命令安装操作
RPM 安装操作 命令: rpm -i 需要安装的包文件名 举例如下: rpm -i example.rpm 安装 example.rpm 包: rpm -iv example.rpm 安装 exam ...
- 在Spring-boot中,为@Value注解添加从数据库读取properties支持
一般我们会把常用的属性放在工程的classpath文件夹中,以property,yaml或json的格式进行文件存储,便于Spring-boot在初始化时获取. @Value则是Spring一个非常有 ...
- Java 基础 - Exception和Error
综述 Exception 和 Error 都是继承了 Throwable 类,在 Java 中只有 Throwable 类型的实例才可以被抛出(throw)或者捕获(catch),它是异常处理机制的基 ...
- 概率dp——逆推期望+循环迭代zoj3329
首先要推出dp[i]的期望方程,会发现每一项都和dp[0]相关, 那我们将dp[i]设为和dp[0]有关的式子dp[i]=a[i]*dp[0]+b[i],然后再回代到原来的期望方程里 然后进行整理,可 ...