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的更多相关文章

  1. 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[ ...

  2. java 实现从15位~18位的身份证号码转换,校验中国大陆公民身份证、香港居民身份证、澳门身份证和台湾身份证。

    package xidian.sl.netcredit.util; /** * Copyright (C) 2009-2010 Yichuan, Fuchun All rights reserved. ...

  3. 走楼梯[XDU1031]

    Problem 1031 - 走楼梯 Time Limit: 1000MS   Memory Limit: 65536KB   Difficulty: Total Submit: 724  Accep ...

  4. java对身份证验证及正则表达式解析

    原文地址:http://www.cnblogs.com/zhongshengzhen/ java对身份证验证及正则表达式解析 package service; import java.text.Par ...

  5. Java 常用正则表达式,Java正则表达式,Java身份证校验,最新手机号码正则表达式

    Java 常用正则表达式,Java正则表达式,Java身份证校验,最新手机号码校验正则表达式 ============================== ©Copyright 蕃薯耀 2017年11 ...

  6. java 身份证工具类

    package com.app.wx.common.util; import org.apache.commons.lang3.StringUtils; import java.text.ParseE ...

  7. js身份证校验

    通过js实现对15位或者18位身份证格式校验: 通过调用idCardNoUtil.checkeIdCardNo(idCardNo)传入身份证号码,实现校验. var idCardNoUtil = { ...

  8. Java的身份证号码工具类

    /** * Copyright (C) 2009-2010 Yichuan, Fuchun All rights reserved. * Licensed to the Apache Software ...

  9. POJ1030 Rating

    题目来源:http://poj.org/problem?id=1030 题目大意:有100支队伍(编号1->100),有两场比赛.以下表的形式列出了两场比赛的名次.(有的队伍没有参赛或只参加了一 ...

随机推荐

  1. Redis学习之缓存数据类型

    Redis缓存数据类型有5种,分别是String(字符串).List(列表).Hash(哈希).Set(无序,不重复集合).ZSet(sorted set:有序,不重复集合). String(字符串) ...

  2. CSS3新属性之---flex box布局实例

    flex box布局实例 flex的强大之处在于不管什么布局,几行命令即可实现 /*本节模板div元素(代表骰子的一个面)是Flex容器,span元素(代表一个点)是Flex项目.如果有多个项目,就要 ...

  3. 使用SDK方式进行微信授权

    1.在pom.xml中添加依赖 <dependency> <groupId>com.github.binarywang</groupId> <artifact ...

  4. codeforces round#524 C. Masha and two friends /// 矩形切割

    题目大意: 给定n行m列的黑白棋盘如下 给定矩形的左下点x1 y1和右上点x2 y2将这个区域都涂成白色 再给定矩形的左下点x3 y3和右上点x4 y4将这个区域都涂成黑色 求最后棋盘内有分别多少个白 ...

  5. 归档和解档配合NSFile存储数据

    NSString *Name = @"yc"; //第一个常量NSDocumentDirectory表示正在查找沙盒Document目录的路径(如果参数为NSCachesDirec ...

  6. 现代软件工程HW2:结对编程-生成五则运算式-Core10组 [PB16110698+PB16120162]

    作业具体要求点 这里 Core组要求: 1.Calc() 这个Calc 函数接受字符串的输入(字符串里就是算术表达式,例如 “5*3.5”,“7/8 - 3/8 ”,“3 + 90 * 0.3”等等) ...

  7. java 对象转Map方法Demo

    /** * 用于对Object进行解析并且转换成Map键值对的形式 * */ public class ObjectUtils { private static final String JAVAP ...

  8. 启动 AXD 配置开发板

    1. 启动 AXD 先启动 Dragon­ICE Server 程序. 按如下步聚启动 AXD: 开始­>所有程序­>ARM Developer Suite v1.2­>AXD De ...

  9. JS对象 提取指定数目的字符substr() substr() 方法从字符串中提取从 startPos位置开始的指定数目的字符串。

    提取指定数目的字符substr() substr() 方法从字符串中提取从 startPos位置开始的指定数目的字符串. 语法: stringObject.substr(startPos,length ...

  10. DEV的GridControl控件的选中列属性设置高光

    设置Run Designer=>Views=> OptionsSelection下面的: EnableAppearanceFocusedCell = False,//鼠标移开,失去焦点,仍 ...