其实……这篇是真咕了。

反思:

××我$T1$两个小时构造$xiebi$了(虽然我觉得如果干仨小时可能行?)

……如果$T1$用时过长的话那考试多半不行……

结果:

35
Miemeng 50

03:08:09
0

03:08:09
20

03:08:10
70

03:08:10

T1显然交的暴力……

题解:

T1

好题

构造一下,分分块就可以辣。

#include <iostream>
#include <cstring>
#include <cstdio>
#define N 111111 using namespace std;
int nn,un,dn;
int arr[N];
int epl[N];
void revset(int l,int r){
for(int i=l,j=r;i<=r;i++,j--)
arr[i]=j;
}
int main(){
int T;
cin>>T;
while(T--){
scanf("%d%d%d",&nn,&un,&dn);
if(un*dn>=nn && un+dn<=nn+1){
puts("Yes");
revset(nn-dn+1,nn);
if(un-1!=0){
int pl=(nn-dn)/(un-1),
pn=un-1,
prn=nn-dn-pl*pn;
for(int i=1;i<=pn;i++)
epl[i]=pl;
for(int i=1;i<=prn;i++)
epl[i]++;
// for(int i=1;i<=pn;i++)\
cout<<epl[i]<<" ";\
cout<<endl;
for(int i=1;i<=pn;i++)
epl[i]=epl[i]+epl[i-1];
for(int i=1;i<=pn;i++){
// cout<<epl[i-1]+1<<" "<<epl[i]<<endl;
revset(epl[i-1]+1,epl[i]);
}
}
for(int i=1;i<=nn;i++)
printf("%d ",arr[i]);
puts("");
}
else puts("No");
}
}

T2

性质题,通过找规律证明了有一段不连续的区间并求解。

至于证明请去模大佬的博客(右方翻友链)

#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdio>
#define N 111111
#define LL long long using namespace std; int nn;
LL arr[N],
pre[N],
ans;
int main(){
scanf("%d",&nn);
for(int i=1;i<=nn;i++)
scanf("%lld",arr+i);
sort(arr+1,arr+nn+1);
for(int i=1;i<=nn;i++)
pre[i]=pre[i-1]+arr[i];
ans=pre[nn]-(arr[1]-1)/2;
for(int i=2;i<=nn;i++){
if((arr[i]-1)/2>pre[i-1])
ans-=(arr[i]-1)/2-pre[i-1];
}
printf("%lld\n",ans);
}

T3

二叉树计数可得$20$

正解$dp$

将树上的位置关系转化成子树的大小关系。

(显然我是水果的……)

#include <iostream>
#include <cstring>
#include <cstdio>
#define LL long long
#define N 888 using namespace std; const int Mod=1e9+7;
LL dp[N][N];
int pn,lin,minn[N],maxn[N]; int main(){
int T,a,b;
cin>>T;
while(T--){
memset(dp,0,sizeof dp);
scanf("%d%d",&pn,&lin);
for(int i=1;i<=pn;i++)
minn[i]=0,maxn[i]=pn;
for(int i=1;i<=lin;i++){
scanf("%d%d",&a,&b);
if(a<b){
// for (int i=1; i<x; ++i) mn[i]=max(mn[i],i-x);
maxn[a]=min(maxn[a],b-a-1);
}//minn[a]=max(minn[a],b-a-1);
else minn[b]=max(minn[b],a-b);
}
for(int i=1;i<=2*pn+1;i++)
dp[i][0]=1;
for(int i=pn;i>=1;i--){
for(int j=1;j<=pn;j++){
for(int k=minn[i];k<=min(maxn[i],j);k++){
if(j-1-k<0)break;
dp[i][j]=(dp[i][j]+dp[i+1][k]*dp[i+1+k][j-1-k]%Mod)%Mod;
}
}
}
printf("%lld\n",dp[1][pn]);
}
}

最新文章

  1. 解读ASP.NET 5 &amp; MVC6系列(5):Configuration配置信息管理
  2. Page-encoding specified in XML prolog (UTF-8) is different from that specified in page directive (utf-8)
  3. Java Web之JavaBean
  4. mongodump 备份
  5. PyCharm、IntelliJ IDEA等jetbrains软件授权服务器
  6. 使用mysql触发器脚本,解决流水数据的添加。
  7. eclipse html插件的下载和安装
  8. 错误 1 在应用程序级别之外使用注册为 allowDefinition=&#39;
  9. uva 1030 - Image Is Everything(迭代更新)
  10. Git各种错误汇总
  11. C primer plus 读书笔记第一章
  12. PAT乙1002
  13. How do I get the lowest value of all the non zero value pixels?
  14. Jquery将&lt;a&gt;链接变为post请求
  15. VS2008中 VB 报错 检索 COM 类工厂中 CLSID 为 {28E68F9A-8D75-11D1-8DC3-3C302A000000} 的组件失败,原因是出现以下错误: 80040154 没有注册类 (异常来自 HRESULT:0x80040154 (REGDB_E_CLASSNOTREG))。
  16. Tools - 正版Windows7系统的下载与安装
  17. How to convert mkv to mp4 lossless
  18. docker,docker-compose部署服务器
  19. 互联网IP地址的分配
  20. Python爬虫-豆瓣电影 Top 250

热门文章

  1. Windbg 查看SSDT表
  2. 好用的抓取dump的工具-ProcDump
  3. File、FileFilter、递归初步
  4. springboot配置文件application.properties更新记录(自学使用)
  5. printk函数
  6. Aria2 使用
  7. ZOJ2562
  8. redis笔记_源码_内存分配
  9. csp-s模拟测试61砖块, 数字,甜圈题解
  10. [复习]平衡树splay