CodePlus 2017 12 月赛
这场比赛跟个zz一样 div1卡在了同余方程上 心态崩了去做div2 然后被T1搞崩了
T1:
大模拟
比较像配平方程式
思路:
但是未知物质每种元素系数不能≥10 且不能为空 (如CO2+?=CO2)
没考虑以上两种情况调了好久也没对 心态爆炸
loj 6255
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<vector>
#include<queue>
#define inf 2139062143
#define ll long long
#define MAXN 700
using namespace std;
inline int read()
{
int x=,f=;char ch=getchar();
while(!isdigit(ch)) {if(ch=='-') f=-;ch=getchar();}
while(isdigit(ch)) {x=x*+ch-'';ch=getchar();}
return x*f;
}
int n,m,len,i,hsh[][];
bool f,k;
char str[MAXN];
int main()
{
n=read(),m=read();
while(n--)
{
k=;
memset(hsh,,sizeof(hsh));
scanf("%s",str+);
len=strlen(str+);
for(i=;i<=len;i++)
{
if(str[i]=='=') break;
if('A'<=str[i]&&str[i]<='Z')
{
if(isdigit(str[i+])) hsh[][str[i]-'A']+=(str[i+]-'');
else hsh[][str[i]-'A']++;
}
else {if(str[i]=='?') f=;continue;}
}
i++;
//cout<<i<<" "<<len;
for(i;i<=len;i++)
{
//cout<<i<<endl;
if('A'<=str[i]&&str[i]<='Z')
{
//cout<<i<<endl;
if(isdigit(str[i+])) hsh[][str[i]-'A']+=(str[i+]-'');
else hsh[][str[i]-'A']++;
}
else {if(str[i]=='?') f=;continue;}
}
for(int i=;i<;i++) {if(hsh[f][i]>hsh[f^][i]||hsh[f^][i]-hsh[f][i]>) {puts("No Solution");goto ed;}}
for(int i=;i<;i++)
{
if(hsh[f^][i]-hsh[f][i]==) {printf("%c",i+'A');k=;}
else if(hsh[f^][i]-hsh[f][i]) {printf("%c%d",i+'A',hsh[f^][i]-hsh[f][i]);k=;}
}
if(!k) printf("No Solution");
printf("\n");
ed:;
}
}
T2:
考试的时候根本没看orz
这个问题是这样的:
对于任何一个n阶方阵,若任意从其中选择n个不同行不同列的位置,其上的权值之和均相等,则我们称这个矩阵是巧妙的。注意对于n=1的任何矩阵都是巧妙的
例如矩阵\begin{matrix}1&2&3\\4&5&6\\7&8&9\end{matrix}是巧妙的,因为1+5+9=1+6+8=2+4+9=2+6+7=3+5+7=3+4+8=15
而矩阵\begin{matrix}1&2\\2&1\end{matrix}不巧妙,因为1+1≠2+2
现在有一个n×m大小的矩阵M以及T个询问,每次询问其一个子方阵是否是巧妙的
思路:
通过一些例子发现
只有一个矩阵内所有二阶矩阵都为巧妙矩阵是,该矩阵为巧妙矩阵
然后一个二维前缀和就行了
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<vector>
#include<queue>
#define inf 2139062143
#define ll long long
#define MAXN 510
using namespace std;
inline int read()
{
int x=,f=;char ch=getchar();
while(!isdigit(ch)) {if(ch=='-') f=-;ch=getchar();}
while(isdigit(ch)) {x=x*+ch-'';ch=getchar();}
return x*f;
}
int n,m,mp[MAXN][MAXN],Q;
int s[MAXN][MAXN];
int main()
{
n=read(),m=read();int a,b,c;
Q=read();
for(int i=;i<=n;i++)
for(int j=;j<=m;j++)
mp[i][j]=read();
for(int i=;i<=n;i++)
for(int j=;j<=m;j++)
s[i][j]=s[i-][j]+s[i][j-]-s[i-][j-]+(mp[i][j]+mp[i-][j-]==mp[i][j-]+mp[i-][j]);
while(Q--)
{
a=read(),b=read(),c=read();
printf("%c\n",s[a+c-][b+c-]-s[a+c-][b]-s[a][b+c-]+s[a][b]==(c-)*(c-)?'Y':'N');
}
}
T3:
若一个数列a满足条件a[n]=a[n-1]+a[n-2],n >=3,而a1 a2 为任意实数,则我们称这个数列为广义斐波那契数列
现在请你求出满足条件a1=i,a2为区间[l,r]中的整数,且ak mod p=m 的广义斐波那契数列有多少个
思路:
可以通过fibonacci+矩阵加速求出ak
然后将问题转化为一个同余方程 使用exgcd解决
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<vector>
#include<queue>
#define inf 2139062143
#define ll long long
#define MAXN 510
using namespace std;
inline ll read()
{
ll x=,f=;char ch=getchar();
while(!isdigit(ch)) {if(ch=='-') f=-;ch=getchar();}
while(isdigit(ch)) {x=x*+ch-'';ch=getchar();}
return x*f;
}
ll MOD;
struct mat {ll num[][];};
mat mul(mat x,mat y)
{
mat res;
memset(res.num,,sizeof(res.num));
for(ll i=;i<;i++)
for(ll j=;j<;j++)
for(ll k=;k<;k++)
(res.num[i][j]+=x.num[i][k]*y.num[k][j]%MOD)%=MOD;
return res;
}
ll q_pow(ll n)
{
if(n<=) return ;
mat t,res;
memset(res.num,,sizeof(res.num));
t.num[][]=t.num[][]=t.num[][]=,t.num[][]=;
res.num[][]=res.num[][]=;
while(n)
{
if(n&) res=mul(res,t);
t=mul(t,t);
n>>=;
}
return res.num[][];
}
ll exgcd(ll a,ll b,ll &x,ll &y)
{
if(b==) {x=;y=;return a;}
ll d=exgcd(b,a%b,y,x);
y-=a/b*x;
return d;
}
ll solve(ll a,ll b)
{
ll x,y;
ll gcd=exgcd(a,MOD,x,y);
if(b%gcd) return -;
x*=b/gcd,MOD/=gcd;
if(MOD<) MOD=-MOD;
ll res=x%MOD;
if(res<=) res+=MOD;
return res;
}
int main()
{
ll T,a,b,l,r,m,res,ans,n;
T=read();
while(T--)
{
a=read(),l=read(),r=read(),n=read(),MOD=read(),m=read(),a%=MOD;
(a*=q_pow(n-))%=MOD,b=q_pow(n-);
m=(m-a+MOD)%MOD;
res=solve(b,m);
if(res==-) {puts("");continue;}
if(r<res) {puts("");continue;}
ans=(r-res)/MOD+;
if(l>res) {ans-=(l-res)/MOD+;if((l-res)%MOD==) ans++;}
printf("%lld\n",ans);
}
}
CodePlus 2017 12 月赛的更多相关文章
- [LOJ#6259]「CodePlus 2017 12 月赛」白金元首与独舞
[LOJ#6259]「CodePlus 2017 12 月赛」白金元首与独舞 试题描述 到河北省 见斯大林 / 在月光下 你的背影 / 让我们一起跳舞吧 うそだよ~ 河北省怎么可能有 Stalin. ...
- 「CodePlus 2017 12 月赛」火锅盛宴(模拟+树状数组)
1A,拿来练手的好题 用一个优先队列按煮熟时间从小到大排序,被煮熟了就弹出来. 用n个vector维护每种食物的煮熟时间,显然是有序的. 用树状数组维护每种煮熟食物的数量. 每次操作前把优先队列里煮熟 ...
- 「CodePlus 2017 12 月赛」可做题2(矩阵快速幂+exgcd+二分)
昨天这题死活调不出来结果是一个地方没取模,凉凉. 首先有个一眼就能看出来的规律... 斐波那契数列满足$a_1, a_2, a_1+a_2, a_1+2a_2, 2a_1+3a_2, 3a_1+5a_ ...
- 【LibreOJ】#6259. 「CodePlus 2017 12 月赛」白金元首与独舞
[题目]给定n行m列的矩阵,每个位置有一个指示方向(上下左右)或没有指示方向(任意选择),要求给未定格(没有指示方向的位置)确定方向,使得从任意一个开始走都可以都出矩阵,求方案数.n,m<=20 ...
- 【LIbreOJ】#6256. 「CodePlus 2017 12 月赛」可做题1
[题意]定义一个n阶正方形矩阵为“巧妙的”当且仅当:任意选择其中n个不同行列的数字之和相同. 给定n*m的矩阵,T次询问以(x,y)为左上角的k阶矩阵是否巧妙.n,m<=500,T<=10 ...
- 【LibreOJ】#6257. 「CodePlus 2017 12 月赛」可做题2
[题意]数列满足an=an-1+an-2,n>=3.现在a1=i,a2=[l,r],要求满足ak%p=m的整数a2有多少个.10^18. [算法]数论(扩欧)+矩阵快速幂 [题解]定义fib(i ...
- 「CodePlus 2017 12 月赛」白金元首与独舞
description 题面 data range \[ 1 \leq T \leq 10, 1 \leq n, m \leq 200 , 0 \leq k \leq \min(nm, 300)\] ...
- 走进矩阵树定理--「CodePlus 2017 12 月赛」白金元首与独舞
n,m<=200,n*m的方阵,有ULRD表示在这个格子时下一步要走到哪里,有一些待决策的格子用.表示,可以填ULRD任意一个,问有多少种填法使得从每个格子出发都能走出这个方阵,答案取模.保证未 ...
- 「CodePlus 2017 12 月赛」火锅盛宴
n<=100000种食物,给每个食物煮熟时间,有q<=500000个操作:在某时刻插入某个食物:查询熟食中编号最小的并删除之:查询是否有编号为id的食物,如果有查询是否有编号为id的熟食, ...
随机推荐
- CAD创建组(网页版)
主要用到函数说明: _DMxDrawX::CreateGroup 创建组.如果组名已经存在,就把实体加入组中.详细说明如下: 参数 说明 BSTR pszName 组名.,如果为空,创建匿名组 IDi ...
- ThinkPHP---TP功能类之分页
(1)核心 数据分页通过limit语法实现 (2)分页类 ThinkPHP里系统封装好了分页类:Page.class.php (3)代码分析 位置:Think/Page.class.php, ①查看相 ...
- java jvm eclipse 性能调优
低配配置 -Dfile.encoding=UTF-8-Xms960m-Xmx960m-Xmn384m-Xverify:none-Xss256k-XX:MaxTenuringThreshold=2-XX ...
- linux cp复制文件 直接覆盖
命令: \cp -rf aaaa/* bbbb 复制aaa下的文件到bbb目录
- PyCharm开发GUI之PyQt安装
开发环境 PyCharm 2018.3.3python3.7 1 安装pyqt5 pip install PyQt5-tools 2 配置PyCharm 2.1 配置设计器 其中,program为C: ...
- F - Shooter
UVA___10535 The shooter is in a great problem. He is trapped in a “2D” maze with a laser gun and can ...
- 【Codeforces 1009D】Relatively Prime Graph
[链接] 我是链接,点我呀:) [题意] 题意 [题解] 1000以内就有非常多组互质的数了(超过1e5) 所以,直接暴力就行...很快就找完了 (另外一开始头n-1条边找1和2,3...n就好 [代 ...
- 阿里巴巴json包 --------fastjson
fastjson对null的处理----String str2 = JSONObject.toJSONString(jsonMap, SerializerFeature.WriteMapNullVal ...
- MVC系统学习1—MVC执行流程
用MVC来做开发也有一段时间了,但是感觉一直没入门,就徘徊在似懂非懂的层次,和去年刚毕业学习WebForm时一样,当时通过张子阳老兄的几篇文章,明白了请求处理流程,页面生命周期才真正明白了WebFor ...
- HDU 4923 (贪心+证明)
Room and Moor Problem Description PM Room defines a sequence A = {A1, A2,..., AN}, each of which is ...