【LGR-063】洛谷11月月赛 I & MtOI2019 Ex Div.2
送分向水题,直接模拟即可。
#include<iostream>
#include<cstdio>
#define N 1505
using namespace std;
int n,m,k,a[N],now,ans,hve[N];
int main()
{
cin>>n>>m>>k;
for(int i=;i<=k;i++)cin>>a[i],hve[a[i]]=;
while(now<n)
{
ans++;
now+=m;
if(hve[now])m++;
}
cout<<ans<<endl;
return ;
}
枚举$x,y$,根据$xor$的性质算出z。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#define N 2005
using namespace std;
int n,m,a[N],b[N],c[N],ans;
int main()
{
//freopen("1.in","r",stdin);
//freopen("1.out","w",stdout);
cin>>n>>m;
for(int i=;i<=n;i++)cin>>a[i]>>b[i]>>c[i];
for(int x=;x<=m;x++)
{
for(int y=;y<=m;y++)
{
int z=((abs(a[]-x)^abs(b[]-y)^)),f=;
//a^b=c
//abs(a[1]-x)^abs(b[1]-y)^z=9
int zz=c[]-z;
if(zz>m||zz<=)f=;
for(int i=;i<=n;i++)
{
if((abs(a[i]-x)^abs(b[i]-y)^abs(c[i]-zz))!=)f=;
}
if(!f)ans++;
int ff=,_zz=c[]+z;
if(_zz>m||_zz<=||zz==_zz)ff=;
for(int i=;i<=n;i++)
{
if((abs(a[i]-x)^abs(b[i]-y)^abs(c[i]-_zz))!=)ff=;
}
if(!ff)ans++;
}
}
cout<<ans<<endl;
return ;
}
考试时写了50分做法,枚举每一个边选或不选,然后判断是否是凸多边形,判断一些边能否组成凸多边形很简单,看一下是否出最大值外的权值和是否大于最大值即可。
50分代码:
#include<iostream>
#include<cstdio>
#include<cstring>
#define int long long
#define N 5005
#define p (long long)(1e9+7)
using namespace std;
int T,n,ans,a[N];
int ksm(int a,int b)
{
int r=;
while(b)
{
if(b&)r*=a,r%=p;
a*=a;a%=p;
b>>=;
}
return r;
}
void dfs(int t,int sum,int maxn,int tot)
{
if(t==n+)
{
if(maxn<sum-maxn)
{
ans+=tot;
ans%=p;
}
return;
}
a[t]=;
dfs(t+,sum,maxn,tot);
a[t]=;
dfs(t+,sum+t,t,tot+);
}
signed main()
{
cin>>T;
while(T--)
{
cin>>n;ans=;
dfs(,,,);
cout<<(ans*ksm((<<n),p-))%p<<endl;
}
}
满分做法是$DP$。
设$f_i$为选出边长和为$i$的不合法方案数
设$w_i$为选出边长和为$i$的不合法权值和
对于$f$的转移,直接背包即可。
对于$w$的转移: 我们考虑加入一条长度$i$的边加入边集,那么如果是从$w[j-i]$转移到 $w[j]$, 那么就会在$w[j-i]$的所有状态的边集中加入一条长度为$i$的边然后考虑的不同的边集个数是$f[j-i]$那么在每一个边集中加入一条边的权值和, 就等价于在原本的权值和的基础上加上等同于边集的个数。
然后从小到大枚举并且累加答案即可。
100分代码:
#include<iostream>
#include<cstdio>
#include<cstring>
#define N 5005
#define int long long
#define p (long long)(1e9+7)
using namespace std;
int read()
{
int x=,f=;char ch=getchar();
while(ch<''||ch>''){if(ch=='-')f=-;ch=getchar();}
while(ch>=''&&ch<=''){x=(x<<)+(x<<)+(ch^);ch=getchar();}
return x*f;
}
int ksm(int a,int b)
{
int r=;
while(b)
{
if(b&)r*=a,r%=p;
a*=a;a%=p;
b>>=;
}
return r;
}
int T,n,f[N],w[N],s[N];
void init(int n)
{
f[]=;
for(int i=;i<=n;i++)
{
s[i]=s[i-];
for(int j=;j<=i;j++)s[i]=(s[i]+f[j]+w[j])%p;
for(int j=n;j>=i;j--)f[j]=(f[j]+f[j-i])%p,w[j]=(w[j]+f[j-i]+w[j-i])%p;
}
}
signed main()
{
T=read();
init(N-);
while(T--)
{
n=read();
int xx=ksm(ksm(,n),p-)%p,xxx=1ll*n*ksm(,n-)%p;
cout<<(xx*(((xxx-s[n])%p)+p)%p)%p<<endl;
}
}
等我看懂题解......
【LGR-063】洛谷11月月赛 I & MtOI2019 Ex Div.2的更多相关文章
- 【LGR-063】洛谷11月月赛 I & MtOI2019 Ex Div.2 (A-C)
[MtOI2019]黑蚊子多 : 按题意模拟 #include<iostream> #include<cstdio> #include<cstring> using ...
- 「P4996」「洛谷11月月赛」 咕咕咕(数论
题目描述 小 F 是一个能鸽善鹉的同学,他经常把事情拖到最后一天才去做,导致他的某些日子总是非常匆忙. 比如,时间回溯到了 2018 年 11 月 3 日.小 F 望着自己的任务清单: 看 iG 夺冠 ...
- 「P4994」「洛谷11月月赛」 终于结束的起点(枚举
题目背景 终于结束的起点终于写下句点终于我们告别终于我们又回到原点…… 一个个 OIer 的竞赛生涯总是从一场 NOIp 开始,大多也在一场 NOIp 中结束,好似一次次轮回在不断上演.如果这次 NO ...
- 「LuoguP4995」「洛谷11月月赛」 跳跳!(贪心
题目描述 你是一只小跳蛙,你特别擅长在各种地方跳来跳去. 这一天,你和朋友小 F 一起出去玩耍的时候,遇到了一堆高矮不同的石头,其中第 ii 块的石头高度为 h_ihi,地面的高度是 h_0 = 0 ...
- 洛谷11月月赛(284pts rank85)
https://www.luogu.org/contestnew/show/12006 我是比赛完后在去写的 这是我第一次打洛谷月赛,之前一次是比赛完才去看而且写了第一题就没写后面的了 284分,太水 ...
- 洛谷11月月赛round.1
太感动了#2 thwfhk 240 (801ms) 100 100 40 又一张明信片,话说10月的怎么还没收到 P2246 SAC#1 - Hello World(升级版) 题目背景 一天, ...
- 洛谷11月月赛round.2
P3414 SAC#1 - 组合数 题目背景 本题由世界上最蒟蒻最辣鸡最撒比的SOL提供. 寂月城网站是完美信息教室的官网.地址:http://191.101.11.174/mgzd . 题目描述 辣 ...
- 洛谷11月月赛题解(A-C)
心路历程 辣鸡T3卡我1.5h题意,要不是最后nlh跟我解释了一下大样例估计这次是真凉透了.. A P4994 终于结束的起点 打出暴力来发现跑的过最大数据?? 保险起见还是去oeis了一波,然后被告 ...
- 【LGR-065】洛谷11月月赛 III Div.2
临近$CSP$...... 下午打了一发月赛,感觉很爽. 非常菜的我只做了前两题......然而听说前两题人均过...... 写法不优秀被卡到$#1067$...... T1:基础字符串练习题: 前缀 ...
随机推荐
- python语言特性简要记载
1.python是解释型语言,而c,c++等是编译型语言. 2.python是动态类型语言,这意味着你不需要在声明变量时指定类型. 3.Python是面向对象语言,所有允许定义类并且可以继承和组合.P ...
- Golang入门及开发环境配置
Go语言诞生背景 计算机硬件更新频繁,主流编程语言无法发挥多核多CPU的性能 软件系统复杂度不断变高,缺乏简洁高效的编程语言 C/C++运行速度快,但编译速度慢 Go语言特点 静态类型开发语言 静态: ...
- scrapy项目1:爬取某培训机构老师信息(spider类)
1.scrapy爬虫的流程,可简单该括为以下4步: 1).新建项目---->scrapy startproject 项目名称(例如:myspider) >>scrapy.cfg为项目 ...
- SQL Server 分割字符串和合并多条数据为一行
分割字符串函数 create function f_split(@c varchar(2000),@split varchar(2)) returns @t table(col varchar(20) ...
- UIImage非正方形图片如何剪切为正方形
有时候项目里做头像上传时候,必须要把用户从相册或是相机里的选择的图片剪切为指定大小的图片,遇到太大,太小或是太长的图片就需coregraphic来对图片进行剪切 废话不多说,直接上代码 /** * 剪 ...
- 5-1 Django的路由层(urlconf)
URL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之间的映射表:你就是以这种方式告诉Django,对于客户端发来的某个URL调用哪一段逻辑代码 ...
- 一款基于CSS3漂亮的按钮
特别提示:本人博客部分有参考网络其他博客,但均是本人亲手编写过并验证通过.如发现博客有错误,请及时提出以免误导其他人,谢谢!欢迎转载,但记得标明文章出处:http://www.cnblogs.com/ ...
- Json C#解析
介绍 项目中数据格式如果是是Json格式,推荐大家使用LitJson和Newtonsoft.json进行解析 库的详细介绍和下载地址 推荐使用VS自带的Nuget来使用 Newtonsoft.Json ...
- Python中的self用法之面向对象
class Student(object): def __init__(self, name, score): self.__name = name self.__score = score def ...
- md5值校验
使用哈希的md5给文件加指纹,如果文件被更改,指纹信息就会不匹配,从而确定文件的原值是否被改动. [root@b test]# md5sum a.txt > zhiwen.txt[root@b ...