SDSC 2018 day2解题报告
10.12考试总结
T1 最近公共祖先
预估得分: 100
实际得分: 20
最大得分: 100
用时:1小时10分 ~1小时20分
一看题目就知道肯定是找规律题
20pts:
就是直接暴力求lca,很简单
100pts:
以下是打的表:
2
22
142
734
3390
14718
61694
253438
1029118
用excel生成一下函数图像可以看出,是一个指数函数?

卧槽,昨天刚刚看了这东西,爽,这种东东一般都是x^y的加减形式
开始硬凑
由前三项可以看出x应该与2有关系,否则不好凑出2来,所以x取2
2的幂次
2^0 1
2^1 2
2^2 4
2^3 8
2^4 16
2^5 32
2^6 64
2^7 128
#include<bits/stdc++.h>
#define int long long int
using namespace std;
const int mod=1e9+7;
int n;
int ksm(int a,int b) {
int res=1;
while(b) {
if(b&1) res=(res*a)%mod;
a=(a*a)%mod;
b>>=1;
}
return res;
}
signed main() {
// freopen("commonants.in","r",stdin);
// freopen("commonants.out","w",stdout);
cin>>n;
if(n<=9) {
if(n==1) {
cout<<2;
return 0;
}
if(n==2) {
cout<<22;
return 0;
}
if(n==3) {
cout<<142;
return 0;
}
if(n==4) {
cout<<734;
return 0;
}
if(n==5) {
cout<<3390;
return 0;
}
if(n==6) {
cout<<14718;
return 0;
}
if(n==7) {
cout<<61694;
return 0;
}
if(n==8) {
cout<<253438;
return 0;
}
if(n==9) {
cout<<1029118;
return 0;
}
//n==10 忘记打表了
}
int ans=(ksm(2,2*n+2)-(((4*n)%mod+2)*(ksm(2,n)%mod))-2+mod)%mod;
while(ans<0)
{
ans+=mod;
}
ans=(ans+mod)%mod;
cout<<ans%mod;;
return 0;
}
错误原因
取模翻车,模出负数来了
应该是
(ans%mod+ans)%mod
T2 即时战略
预估得分:40
实际得分: 40
最大得分: 40
用时: 大约40分钟
10pts:
傻逼部分,差点忘了打上这部分的分,哦我真是傻逼
40pts
直接暴力统计,暴力计算
复杂度:O(n^4)
100pts
感觉上每个点的最大值,和最小值应该和他附近的点有关
感觉可以dp,如果有空再来搞
#include<bits/stdc++.h>
//#define int long long int
using namespace std;
const int N=444;
int w[N][N],n,h,p,ans;
int ans_max=0,ans_min=2147483647;
int d[N][N];//受损程度
#define fre
int main() {
#ifdef fre
freopen("rts.in","r",stdin);
freopen("r1.out","w",stdout);
#endif
cin>>n>>h>>p;
if(p==1) {
//10pts
for(int i=1; i<=n; ++i)
for(int j=1; j<=h; ++j) {
scanf("%d",&w[i][j]);
ans_max=max(w[i][j],ans_max);
ans_min=min(w[i][j],ans_min);
}
cout<<ans_min<<' '<<ans_max;
return 0;
}
//30pts
for(int i=1; i<=n; ++i)
for(int j=1; j<=h; ++j)
scanf("%d",&w[i][j]);
for(int i=1; i<=n; ++i) { //枚举投弹点的横坐标
for(int j=1; j<=h; ++j) { //枚举投弹点的纵坐标
ans=0;
for(int k=1; k<=n; ++k) {
for(int l=1; l<=h; ++l) {
d[k][l]=0;
int tmp=abs(i-k)+abs(j-l);
d[k][l]=max(0,p-tmp);
ans+=d[k][l]*w[k][l];
}
}
if(ans>ans_max) ans_max=ans;
if(ans<ans_min) ans_min=ans;
}
}
cout<<ans_min<<' '<<ans_max;
#ifndef fre
fclose(stdin);
fclose(stdout);
#endif
return 0;
}
T3 欧皇
预估得分:25
实际得分:25
最大得分: 40
用时:大约1小时多一点
10pts
w*h<=2 傻逼部分分,手玩就ok
可是我太菜了。不想手玩,于是就去搞搞其他部分分
25pts
w*h<=8
暴力枚举每个棋子放在那个格子里
卧槽翻车了.....看错时间
40pts
c1 一共就一颜色的棋子
可见就是要从ai个棋子里跳出一部分来放到wh的棋盘上,我们可以反过来搞
让wh的棋盘放ai个棋子有多少种方案,卧槽,这不是组合数嘛!!
C{nm,ai}i1
(⊙o⊙)…组合数怎么求来着.........一个悲惨的故事开始了....
55pts
ai==1 每种颜色的棋子都只有1个
卧槽这不是排列嘛!!!!
(⊙o⊙)…排列怎么求来着.........又一个悲惨的故事开始了....
等等好像不是,卧槽我不会这一档
100pts
卧槽我不会求排列和组合,部分分搞不到了,那就只能去搞搞正解了
没有特殊的限制.....应该去看看题目有什么特殊的性质或者是要求
两种方案不同当且仅当存在一个格子在两种方案中一种放
棋子一种不放棋子或放的棋子不一样
考虑20pts的做法
枚举每个棋子的情况 .仔细观察数据范围可以看出w,h的范围非常小<=30
所以可以直接当做状态来用
用dp[x][i][j]表示x这种棋子放在i,j格子是的合法情况
算了,不搞了,不会 ,不过sjp大佬肯定会!
#include<bits/stdc++.h>
#define int long long int
using namespace std;
const int mod=1e9+7;
const int N=2019;
int w,h,c;
int a[N],flag;
int C[N][N],visit[N][N];
int askC(int n,int k) {
if(visit[n][k]) return C[n][k];
if(k>n)return 0;
if(n==k||k==0) return 1;
visit[n][k]=1;
return C[n][k]=(askC(n-1,k-1)+askC(n-1,k))%mod;
}
int pts2() {
return askC(w*h,a[1]);
}
signed main() {
freopen("europe.in","r",stdin);
freopen("europe.out","w",stdout);
cin>>w>>h>>c;
for(int i=1; i<=c; ++i) {
cin>>a[i];
if(a[i]!=1) flag=1;
}
if(c==1) {//第2档分
cout<<pts2()%mod;
return 0;
}
if(w*h<=2) {//第1档分
if(!a[1]||!a[2]) {
cout<<3<<endl;
return 0;
} else {
cout<<0<<endl;
return 0;
}
}
if(flag==0) { //第3档分~~~想错了咕咕咕。,不是排列
while(1) {
break;
}
cout<<rand()<<15+rand()<<15%mod;
return 0;
}
cout<<rand()<<15+rand()<<15%mod;
return 0;
}
SDSC 2018 day2解题报告的更多相关文章
- GX/GZOI2019 day2 解题报告
GX/GZOI2019 day2 解题报告 题目链接 逼死强迫症 旅行者 旧词 t1 逼死强迫症 显然地,记 \(f(i)\) 为长度为 \(i\) 的木板的答案,可得: \(\\\) \[f(i)= ...
- 【NOIP2015】提高day2解题报告
题目: P1981跳石头 描述 一年一度的“跳石头”比赛又要开始了!这项比赛将在一条笔直的河道中进行,河道中分布着一些巨大岩石.组委会已经选择好了两块岩石作为比赛起点和终点.在起点和终点之间,有 N ...
- 【未完成0.0】Noip2012提高组day2 解题报告
第一次写一套题的解题报告,感觉会比较长.(更新中Loading....):) 题目: 第一题:同余方程 描述 求关于x的同余方程ax ≡ 1 (mod b)的最小正整数解. 格式 输入格式 输入只有一 ...
- NOIp2016 Day1&Day2 解题报告
Day1 T1 toy 本题考查你会不会编程. //toy //by Cydiater //2016.11.19 #include <iostream> #include <cstd ...
- 常州培训 day2 解题报告
第一题: 题目大意: 给出一个M面的骰子,投N次,求最大期望值. 最大期望值的定义: 比如M=2,N=2, 那么 2次可以是 1,1,最大值为1: 1,2最大值为2: 2,1最大值为2: 2,2 最大 ...
- NOIP2018提高组Day2 解题报告
前言 关于\(NOIP2018\),详见此博客:NOIP2018学军中学游记(11.09~11.11). \(Day2\)的题目和\(Day1\)比起来,真的是难了很多啊. \(T1\):旅行(点此看 ...
- NOIP 2018 D1 解题报告(Day_1)
总分 205分 T1 100分 T2 95分 T3 10分 T1: 题目描述 春春是一名道路工程师,负责铺设一条长度为 nn 的道路. 铺设道路的主要工作是填平下陷的地表.整段道路可以看作是 ...
- CH Round #55 - Streaming #6 (NOIP模拟赛day2)解题报告
T1九九归一 描述 萌蛋在练习模n意义下的乘法时发现,总有一些数,在自乘若干次以后,会变成1.例如n=7,那么5×5 mod 7=4,4×5 mod 7=6,6×5 mod 7=2,2×5 mod 7 ...
- noip2011提高组day1+day2解题报告
Day1 T1铺地毯https://www.luogu.org/problem/show?pid=1003 [题目分析] 全部读入以后从最后一个往前找,找到一个矩形的范围覆盖了这个点,那这个矩形就是最 ...
随机推荐
- linux shell根据端口返回进程号杀死进程的方法
linux shell根据端口返回进程号杀死进程的方法<pre>kill `lsof -t -i:9501`</pre>这个就是杀死9501端口的进程号
- 仓库服务端软件artifactory
https://blog.csdn.net/ZYC88888/article/details/88298904 https://www.jianshu.com/p/a0f55548fddd
- 用pyenv管理Python多版本及下载加速方法--Mac上
原文:https://www.jianshu.com/p/91fc7ecc5e46 先大致介绍下pyenv的安装及配置流程.随后介绍加速下载方法 安装: brew install pyenv 配置 在 ...
- 【06】Kubernets:资源清单(控制器 - Deployment)
写在前面的话 上一节主要简单的提了一下控制器都有哪些常用的,并且简单的功能是啥,最后一并提了 ReplicaSet 控制器. 但是 ReplicaSet 一般不需要我们直接配置,多以从本节开始,开始学 ...
- Ext.form.Label组件动态设置html值
解决方法: (1)用的是 Ext.getCmp(id).setText('XXXX')可以动态设置label 显示的文本值,但是文本中有个别数字需要改变颜色显示,需要加样式,这种方法会把加样式的标签( ...
- Python学习笔记之从文件中读取数据
10-1 Python 学习笔记:在文本编辑器中新建一个文件,写几句话来总结一下你至此学到的Python 知识,其中每一行都以“In Python you can”打头.将这个文件命名为learnin ...
- 线程安全---Day23
最近忙着备考大学四年最后的两科,昨天刚考完大学所有的考试,但是大学专业是机械,但是自己热衷于IT行业,想往IT行业走,希望毕业后能成功进入到IT行业,只希望毕业能找到一份Java开发工程师的工作,这样 ...
- VirtualBox安装Ubuntu-18.04-Server笔记
准备 安装'Windows Terminal' 安装WSL 安装VirtualBox 安装 虚拟磁盘映像文件选择创建在SSD(如果有) 选择openssh,公钥从GitHub获取,前提是GitHub已 ...
- SpringIOC源码解析(下)
注意,看完这篇文章需要很长很长很长时间... 本篇文章是SpringIOC源码解析(上)的续集,上一篇文章介绍了使用XML的方式启动Spring,然后追踪了BeanFactory容器的创建.配置文件的 ...
- Android 9.0网络权限适配
在做Android开发时,使用华为的p20和平板(均为Android 9.0)测试时,发现不能使用WIFI网络,一番郁闷纠结查找后 直接上方法: 在res文件夹下创建xml文件夹,在xml里面创建文件 ...