博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
codeforces R 493 div2
阅读量:4993 次
发布时间:2019-06-12

本文共 2516 字,大约阅读时间需要 8 分钟。

我蓝了!蓝了!!!蒟蒻的蓝色。日常点开friend发现竟然没几个人打??然后去div1看了一下果然学长全都去打div1了呜呜呜。

看到了久违的黄大仙,以为他今晚要上grandmaster,结果打完发现他取消注册了。。。

题外话,div2半小时过完abc,d题推了一个多小时无果,div一千五百人同时在推D题,海上生明月,天涯共此时!(还好我手速快。。。)

上午考完英语三十个单选一百多个选项单词不认识。。。后天高数军理大后天大物,这几天暂时不打了。(好像也只有一场div3

A:我感觉我是瞎做的

all是整个数列的和,然后我们算前缀和sum,只要 sum!=all-sum,那么这个位置之前的都选出来就行了。注意特判个别情况

B:贪心+优先队列(或者存进数组然后排序),所有能分割的地方 都把 花费 存进来,然后前缀和<B就行。

只贴main方法,快速io太长容易引起不适,请忽略我的冒泡排序。。。

public static void main(String[] args) {        int n = nextInt();        int B = nextInt();        int ans[] = new int[n];        int index = 0;        int a[] = new int[n];        for(int i=0;i
B){ out.print(i); out.flush(); return; } } out.print(index); out.flush(); return; }
View Code  

C:用了十分钟过掉的,,,还是太菜了,看了好久才找到规律

很显然我们要找到  连续 0 子段 的 个数(我太菜了说不清楚),假如有n个,那么我们n次y操作一定可以,或者n-1次x操作加一次y操作。

public static void main(String[] args) {        int n = nextInt();        long x = nextLong();        long y = nextLong();        String s = next();        char ch[] = s.toCharArray();        int num = 0;        for(int i=0;i
View Code

D:毒瘤啊 刚才看了看学长的代码发现自己的思路竟然是错的,早知道半个小时过掉abc就去睡觉,也不至于今天英语考试一副要死的样子。。。

问题是我真的感觉自己要挂科了,贴一份学长的代码(大家可以努力看看。。。。。)

要是看懂了的话顺便给我讲讲,,考试周了我这种蒟蒻一般不敢打扰学长。。。

#include 
using namespace std;typedef long long LL;LL n;int dp[102][10002], ans[100];void test(){ dp[0][0]=1; for(int i=1;i<=30;i++){ for(int j=1;j<=10000;j++){ if(j>=1&&dp[i-1][j-1]) dp[i][j]=1; if(j>=5&&dp[i-1][j-5]) dp[i][j]=1; if(j>=10&&dp[i-1][j-10]) dp[i][j]=1; if(j>=50&&dp[i-1][j-50]) dp[i][j]=1; } int cnt=0; for(int j=1;j<=10000;j++) cnt+=dp[i][j]; ans[i]=cnt; //printf("%d %d\n", i, cnt); }}int main() { test(); cin>>n; if(n<20) printf("%d\n", ans[n]); else printf("%lld\n", ans[11]+(n-11)*49);}
View Code

下面这个是黄大仙的D题,,,看了下提交记录用了不到十分钟,,不过几乎没有可读性。。。可能这就是神仙吧.jpg

#include
#include
#include
const int N=1005;std::bitset
dp[14],tmp;int main() { dp[0][0]=1; for(int i=1;i<=13;i++) { tmp=dp[i-1]; dp[i]|=tmp<<1; dp[i]|=tmp<<5; dp[i]|=tmp<<10; dp[i]|=tmp<<50; } int n,ans=dp[13].count(); scanf("%d",&n); if(n<=13) printf("%d\n",int(dp[n].count())); else printf("%lld\n",1LL*(n-13)*49+ans); return 0;}
View Code

 

转载于:https://www.cnblogs.com/MXang/p/9253014.html

你可能感兴趣的文章
VS2010中生成遇到的 web.config 问题
查看>>
Nginx安装部署(反向代理与负载均衡)
查看>>
2018年最新小程序一键智能生成平台限时限量销售!
查看>>
集合遍历过程iterator, 添加删除元素报异常
查看>>
echarts一些笔记
查看>>
最长上升子序列
查看>>
Java-面向对象
查看>>
salesforce 零基础学习(四十四)实现checkbox列表简单过滤功能
查看>>
Android 异步下载
查看>>
c# 中 利用 CookieContainer 对 Cookie 进行序列化和反序列化校验
查看>>
Leetcode 743. Closest Leaf in a Binary Tree
查看>>
如何用Java实现反转排序
查看>>
自己动手写字符串库函数 一(C语言实现) 分类: C语言学习 ...
查看>>
说说接口封装
查看>>
Linux Supervisor的安装与使用入门---SuSE
查看>>
C#将Word转换成PDF方法总结(基于Office和WPS两种方案)
查看>>
oracle查锁表
查看>>
PHP SSH2 不支持 IdentityFile
查看>>
eclipse 僵死/假死 问题排查及解决
查看>>
番茄时间
查看>>