http://uoj.ac/problem/209

当x!=y时,这个限制条件是确定的,可以枚举总通过数,用组合数计算,当x==y时,这个限制条件表示前x个全部通过或后x个全部通过,只有最大的x有用,可以用容斥计算。

#include<bits/stdc++.h>
const int P=;
int T,n,m,pp[],C[][];
struct pos{
int x,y,t;
bool operator<(pos p)const{return x<p.x;}
}ps[][];
void ins(pos p){
for(int i=;i<;++i)ps[i][pp[i]++]=p;
}
int cal(int w,int m){
pos*a=ps[w];
int ap=pp[w],s=;
for(int i=;i<ap;++i){
int v1=a[i].x-a[i-].x,v2=a[i].y-a[i-].y+(a[i].t-a[i-].t)*m;
if(v2<||v2>v1)return ;
s=1ll*s*C[v1][v2]%P;
}
return s;
}
int main(){
C[][]=;
for(int i=;i<;++i){
for(int j=;j<=i;++j){
(C[i+][j]+=C[i][j])%=P;
(C[i+][j+]+=C[i][j])%=P;
}
}
for(scanf("%d",&T);T;--T){
scanf("%d%d",&n,&m);
int mx=-;
pp[]=pp[]=pp[]=;
ins((pos){,,});
ins((pos){n,,});
for(int i=,a,b;i<m;++i){
scanf("%d%d",&a,&b);
if(a>b)ins((pos){a,b,});
else if(a<b)ins((pos){n-b,-a,});
else{
if(a>mx)mx=a;
}
}
if(~mx){
ps[][pp[]++]=(pos){n-mx,-mx,};
ps[][pp[]++]=(pos){mx,mx,};
ps[][pp[]++]=(pos){mx,mx,};
ps[][pp[]++]=(pos){n-mx,-mx,};
}
for(int i=;i<;++i)std::sort(ps[i],ps[i]+pp[i]);
int ans=;
for(int i=;i<=n;++i){
int sgn[]={,,-};
for(int j=;j<;++j){
ans=(ans+cal(j,i)*sgn[j])%P;
}
}
printf("%d\n",(ans+P)%P);
}
return ;
}

uoj#209. 【UER #6】票数统计的更多相关文章

  1. 【uoj#209】[UER #6]票数统计 组合数+乱搞

    题目描述 一个长度为 $n$ 的序列,每个位置为 $0$ 或 $1$ 两种.现在给出 $m$ 个限制条件,第 $i$ 个限制条件给出 $x_i$ .$y_i$ ,要求至少满足以下两个条件之一: 序列的 ...

  2. uoj#209【UER #6】票数统计

    题目 做UER的A题涨信心 首先我们注意到这个所谓的至少有一条正确在\(x\)和\(y\)不相等的时候非常弱,当\(x<y\)时,只有可能是后\(y\)位用户有\(x\)个通过:当\(x> ...

  3. 【UOJ 209】【UER #6】票数统计

    题解: jls的题目还是比较好的 首先比较显然我们可以分析出 当x<y时,显然只能满足前缀条件 针对这一档部分分,是个简单的组合数 考虑一下后缀限制,发现真的不好搞.. 看了题解发现,枚举总共的 ...

  4. UOJ #455 [UER #8]雪灾与外卖 (贪心、模拟费用流)

    题目链接 http://uoj.ac/contest/47/problem/455 题解 模拟费用流,一个非常神奇的东西. 本题即为WC2019 laofu的讲课中的Problem 8,经典的老鼠进洞 ...

  5. [UOJ#245][UER#7]天路(近似算法)

    允许5%的相对误差,意味着我们可以只输出$\log_{1.05} V$种取值并保证答案合法.并且注意到答案随着区间长度而单增,故取值不同的答案区间是$O(\log_{1.05} V)$的. 于是初始x ...

  6. 如何利用Excel设计一个唱票统计系统?

    具体操作如下: 首先需要一个如下的数据结构. 唱票数G列区域,不能手动输入候选人票数,这样很不方便,所以我们需要一个窗体控件,用点击鼠标的方法来实现唱票.在“开发工具-插入-数值调节钮”下图3处,然后 ...

  7. 投票系统 & 简易js刷票脚本

    早就听说有什么刷票脚本,微博投票等等相关的投票都有某些人去刷票. 试一下吧,兴许自己也会刷票呢?捣鼓了几个小时,终于有所眉目. (1)投票系统 要刷票,就得先有个投票界面. 当然,可以直接去各个投票网 ...

  8. JSAAS的Activiti会签开发扩展处理

    1.什么是会签? 在流程业务管理中,任务是通常都是由一个人去处理的,而多个人同时处理一个任务,这种任务我们称之为会签任务.这种业务需求很常见,如一个请款单,领导审批环节中,就需要多个部门领导签字.在流 ...

  9. HDU 3639 Hawk-and-Chicken (强连通缩点+DFS)

    <题目链接> 题目大意: 有一群孩子正在玩老鹰抓小鸡,由于想当老鹰的人不少,孩子们通过投票的方式产生,但是投票有这么一条规则:投票具有传递性,A支持B,B支持C,那么C获得2票(A.B共两 ...

随机推荐

  1. No setter found for property 'cronExpression' in class 'org.springframework.scheduling.quartz.CronTriggerBean'

    今天想写个Spring集成Quartz的小Demo,结果报错cronExpression未定义,通过差错,原来是因为Spring 3.0.5与Quartz2.2.2不兼容,Spring3.1以下的只能 ...

  2. meta viewport的原理

    https://blog.csdn.net/zhouziyu2011/article/details/60570547

  3. java-接口的概述及其特点

    1.接口概述: - 从狭义的角度讲就是指java中的interface - 从广义的角度讲对外提供规则的都是接口 2.接口特点: - 接口中定义的全都是抽象方法. - 接口用关键字interface表 ...

  4. javascript 日常

    $('#code').bind('keypress', function (e) { //绑定回车处理 ) { console.log($("#code")); } }); $.a ...

  5. 【HAOI2011】problem a

    又看题解了,这样下去要跪啊QAQ 原题: 一次考试共有n个人参加,第i个人说:“有ai个人分数比我高,bi个人分数比我低.”问最少有几个人没有说真话(可能有相同的分数) 1≤n≤100000   0≤ ...

  6. 【传输协议】什么是CA证书

    1.什么是CA证书. 看过一些博客,写的比较形象具体. ◇ 普通的介绍信 想必大伙儿都听说过介绍信的例子吧?假设 A 公司的张三先生要到 B 公司去拜访,但是 B 公司的所有人都不认识他,他咋办捏?常 ...

  7. shell入门(二)——面试题实例

    [~/shell]$ cat one.sh #!/bin/bash path=/root/shell/test.txt if [ ! -f $path ] //检测文件是否存在,如果不存在,把内容改为 ...

  8. Centos7解决中文乱码问题

    查看当前文字编码,发现都是en_US.UTF-8,也就是说还不能完美支持中文编码,如果是zh_CN.UTF-8,那就说明能够比较完美支持中文编码了(我猜的) [root@biaopei ~]# loc ...

  9. Stateful Kubernetes Applications Made Easier: PSO and FlashBlade

    转自:https://medium.com/@joshua_robinson/stateful-kubernetes-applications-made-easier-pso-and-flashbla ...

  10. Physics for Game Programmers (Grant Palmer 著)

    CHAPTER1 Adding Realism to Your Games CHAPTER2 Some Basic Concepts CHAPTER3 Basic Newtonian Mechanic ...