A An abandoned sentiment from past

水题

#include<bits/stdc++.h>using namespace std;int a[300],b[300],n,k;
bool cmp(int a,int b)
{return a>b;
}
int main()
{//freopen("t.txt","r",stdin);scanf("%d%d",&n,&k);for(int i=0;i<n;i++)  scanf("%d",&a[i]);for(int i=0;i<k;i++)  scanf("%d",&b[i]);sort(b,b+k,cmp );for(int i=0,j=0;i<n&&j<k;i++){if(a[i]==0)a[i]=b[j++];}for(int i=1;i<n;i++)if(a[i]<=a[i-1]){printf("YES\n");return 0;}printf("NO\n");return 0;
}

B An express train to reveries

水题

#include<bits/stdc++.h>using namespace std;
const int N=2000;
int a[N],b[N],ans[N],color[N],n,vis[N];int main()
{//freopen("t.txt","r",stdin);scanf("%d",&n);for(int i=0;i<n;i++)scanf("%d",&a[i]);for(int i=0;i<n;i++)scanf("%d",&b[i]);int sum=0;vector<int>ad;ad.clear();for(int i=0;i<n;i++)if(a[i]==b[i])ans[i]=a[i],sum++,color[a[i]]++;else  ad.push_back(i);vector<int>numa;numa.clear();for(int i=1;i<=n;i++)if(color[i]==0)numa.push_back(i);if(sum==n-1){ans[ad[0]]=numa[(int)(numa.size()-1)];}else{if((a[ad[0]]==numa[0]&&b[ad[1]]==numa[1])||(b[ad[0]]==numa[0]&&a[ad[1]]==numa[1])){ans[ad[0]]=numa[0];ans[ad[1]]=numa[1];}else{ans[ad[1]]=numa[0];ans[ad[0]]=numa[1];}}for(int i=0;i<n-1;i++)printf("%d ",ans[i]);printf("%d\n",ans[n-1]);return 0;
}

C An impassioned circulation of affection

水题

#include<bits/stdc++.h>using namespace std;int dp[26][1510][1510],maxx[26][1510],ti[26][1510],n,q;
char ss[1510];
int main()
{//freopen("t.txt","r",stdin);scanf("%d",&n);scanf("%s",&ss);for(int i=0;i<26;i++)for(int j=0;j<n;j++){int k=j;while(k<n&&ss[k]==char(i+'a'))ti[i][j]++,k++;}for(int i=0;i<26;i++){for(int j=0;j<n;j++){for(int k=1;j+k<=n;k++){if(dp[i][j][k-1]>=n){dp[i][j][k]=n;maxx[i][k]=max(maxx[i][k],dp[i][j][k]);continue;}dp[i][j][k]=dp[i][j][k-1]+ti[i][min(n,j+dp[i][j][k-1])]+1+ti[i][min(n,j+dp[i][j][k-1]+ti[i][j+dp[i][j][k-1]]+1)];if(dp[i][j][k]>n)dp[i][j][k]=n;maxx[i][k]=max(maxx[i][k],dp[i][j][k]);}}}//memset(dp,0,sizeof(dp));scanf("%d",&q);for(int i=0;i<q;i++){char c;int jk;getchar();scanf("%d %c",&jk,&c);int num=c-'a';printf("%d\n",min(n,maxx[num][jk]));}return 0;
}

D An overnight dance in discotheque

比较难的一道贪心题

可以证明 只要把最底层的圆扔到另一个半场 就达到了最优态

为什么呢?

在这个状态下无论我们怎么移动 都无法让答案变好。

简单证明一下:

我们可以把任意几个圆(顺序无关)扔到底层圆上,

这几个圆组成的覆盖,对某些面积(sb)进行了偶数次覆盖,对某些面积(sa)进行了奇数次覆盖。

而被覆盖的最底层圆,所有的面积都被奇数次(1次)覆盖,而偶数次的覆盖无法改变奇偶性,

奇数次的覆盖会将原本所有的奇数次覆盖变成偶数次覆盖(同时将偶数次覆盖变成奇数次)。

所以我们想要移动的这些圆无论处在什么位置 都比放在底层圆上对答案贡献大 

所以往单独在另一半场的底层圆(最大圆)移动任何圆的集合都不会让答案变好。

而所有的状态都可以从这个状态移动得到!

代码很简单(我这个蒟蒻想了半天DP方程 然而 O(n)贪心)

#include <bits/stdc++.h>
using namespace std;typedef long long LL;const long double pi = 3.14159265358979;#define N 100010int x[N], y[N], r[N], dep[N], n;LL dist(int x, int y){ return 1ll * x * x + 1ll * y * y; }int main(){///freopen("in.txt", "r", stdin);scanf("%d", &n);for(int i = 1; i <= n; i ++){scanf("%d %d %d", x + i, y + i, r + i);}for(int i = 1; i <= n; i ++){for(int j = 1; j <= n; j ++)if(r[j] > r[i]) {if( dist( x[i] - x[j], y[i] - y[j]) <= 1ll * r[j] * r[j] ){dep[i] ++;}}}LL ans = 0;for(int i = 1; i <= n; i ++){if(dep[i] == 0) ans += 1ll * r[i] * r[i];else if(dep[i] & 1) ans += 1ll * r[i] * r[i];else ans -= 1ll * r[i] * r[i];}long double res = pi * ans;printf("%.10lf\n", (double) res);}

  

E An unavoidable detour for home

非常具有技巧性的一道计数题

题目给定一个图的某些性质,要求我们构造一个层次图。每个点要么连接2个点要么连接3个点。

求不同的构图方法数量。

我们通过分层来计数。

solve(i,f)表示解决a[i]之后的序列答案,且第一层有f个元素。

connect(two,three,after)表示对于当前层次,有two个节点需连接2个节点,有three个节点要连接3个点,且构图后有after个可连接位(即下一层需要after个节点)

剩下的看代码吧 关键地方注释了 connect函数的转移非常有趣

#include <bits/stdc++.h>
using namespace std;
using LL=long long;
#define f(i,n) for(LL i=0;i<(n);i++)const LL M=1e9+7;LL n,d[50],cn[51][51][51],sl[51][51],n3[51];LL connect(LL twos, LL threes, LL after){if(twos<0||threes<0) return 0;LL &cur=cn[twos][threes][after];if(cur!=-1) return cur;if(after) return cur=(twos*connect(twos-1,threes,after-1)%M//拿出一个two +threes*connect(twos+1,threes-1,after-1)%M)%M;//拿出一个three 向下有一个空位 相当于增加了一个two if(twos) return cur=((twos-1)*connect(twos-2, threes, after)%M//选出一对two互相连接 +threes*connect(twos,threes-1,after)%M)%M;//选出一个three和一个two连接后变成一个two if(!threes) return 1;return cur=((threes-1)*(threes-2)/2)*connect(2,threes-3,0)%M;//选出三个three后相当于增加了2个two }LL solve(LL i, LL f){if(i+f>n) return 0;if(i==n) return f==0;if(f==0) return 0;LL &cur=sl[i][f];if(~cur) return cur;LL r=0, threes=n3[i+f]-n3[i], twos=f-threes;for(LL cl=0;cl<=n-(i+f);cl++)r = (r+connect(twos, threes, cl)*solve(i+f,cl)%M)%M;return cur=r;
}main(){freopen("t.txt","r",stdin);ios::sync_with_stdio(0),cin.tie(0);memset(cn,-1,sizeof(cn));memset(sl,-1,sizeof(sl));    cin>>n;f(i,n){cin>>d[i];n3[i+1]=n3[i]+(d[i]==3);}cout<<solve(1,d[0])<<'\n';
}

  

俩小时做了三道水题 还被Hack了一道 该拿什么拯救我的coding? 我这么菜可怎么办??

转载于:https://www.cnblogs.com/heisenberg-/p/6959619.html

codeforces round 418 div2 补题 CF 814 A-E相关推荐

  1. codeforces round 421 div2 补题 CF 820 A-E

    A Mister B and Book Reading  O(n)暴力即可 #include<bits/stdc++.h> using namespace std; typedef lon ...

  2. codeforces round 422 div2 补题 CF 822 A-F

    A I'm bored with life 水题 #include<bits/stdc++.h> using namespace std; typedef long long int LL ...

  3. codeforces round 420 div2 补题 CF 821 A-E

    A Okabe and Future Gadget Laboratory 暴力 #include<bits/stdc++.h> using namespace std; typedef l ...

  4. codeforces round 416 div2补题

    第一题,水题 A. Vladik and Courtes #include<bits/stdc++.h> using namespace std; int main() {long lon ...

  5. 【codeforces Round#801 Div2 D题 Tree Queries】树形贪心结论

    题目链接 题意: 给你一棵树,你需要执行多次询问来确定一个节点x的位置,对于每一次询问,你需要选择一个节点,能得到这个节点与x节点的距离是多少,问至少需要多少次询问才能确定x的位置. 分析: 有一个结 ...

  6. BC div2补题以及 复习模除 逆元__BestCoder Round #78 (div.2)

    第一题没话说 智商欠费 加老柴辅导终于过了 需要在意的是数据范围为2的63次方-1 三个数相加肯定爆了 四边形的定义 任意边小于其余三边之和 换句话说就是 最长边小于其余三边之和 这样的话问题转化为 ...

  7. Codeforces Round #652 div2 总结 端午节前小结

    2020.6.24 连着三天熬夜和一连串要处理的事情已然让我的身体有点吃不消.我只是喜欢想题的那种冥想思路开阔的感觉,但是熬夜还是不能行的.端午节前就暂时不碰竞赛了,昨天晚上算是打完了最后一场比赛.今 ...

  8. codeforces Round#429 (Div2)

    2017-08-20 10:00:37 writer:pprp 用头文件#include <bits/stdc++.h>很方便 A. Generous Kefa codeforces 84 ...

  9. Codeforces Round#310 div2

    C题:这题说的是套娃,如果做题的时候知道是套娃,那就好理解多了 规则1:套娃A可以放到套娃B里面,当且仅当套娃B没有放在其他套娃里面 规则2:套娃A放在套娃B里面,且套娃B没有放在其他套娃里面,那么可 ...

最新文章

  1. 硬盘满了 mysql启不来_MySQL数据库之磁盘已满造成的mysql启动失败问题分享
  2. 3.11 程序示例--逻辑运算-机器学习笔记-斯坦福吴恩达教授
  3. Paper之DL:深度学习高质量论文分类推荐(建议收藏,持续更新)
  4. Scott用户的表结构
  5. springboot下MVC的MessageConverters和静态资源位置的配置
  6. python中 lambda, map ,filter ,reduce讲解
  7. 【C语言简单说】十四:for循环
  8. kangle支不支持PHP_【转载】PHP调用kangle的API
  9. 如何防止网页Demo被那些赖账的客户盗用
  10. Setting下的自定义控件LinearColorBar
  11. linux定时执行任务命令,crontab(linux下定时执行任务命令)
  12. [原] Android快速开发框架-AndroidFine,GitHub开源
  13. [直观学习排序算法] 视觉直观感受若干常用排序算法
  14. 博弈问题总集第三类----Staircase Nim
  15. 《Head First 系列图书》大集合,附案例分析,免积分下载
  16. QtAV的编译与使用(MSVC2015+Qt5.9.8)
  17. linux模糊查找子目录,Linux运维知识之linux中模糊查找文件
  18. a标签下载txt,会直接打开txt文件的处理方法
  19. yacclex-Chapter1
  20. Javaweb酒店预约管理系统(框架SpringBoot+Vue)

热门文章

  1. etcd 集群故障(数据变成只读)
  2. Java其他API介绍
  3. GitHub常用命令
  4. 生活在地球上:网络摘录
  5. [转载] 中文核心期刊目录(2008)
  6. 《快活帮》第九次团队作业:Beta冲刺与验收准备
  7. HDU - 4858 项目管理
  8. Spring中自己主动装配
  9. C#[Serializable]在C#中的作用-NET 中的对象序列化
  10. 登录屏幕上不要显示上次登录的用户名 图文教程[server 2003/2008]