3 qq_41854014

尚未进行身份认证

我要认证

暂无相关简介

等级
TA的排名 19w+

Cleaning Shifts POJ - 2376

贪心策略:从左往右选择,选择区间长的。按时间起点排序,每次更新起点begin = end + 1;选择剩下区间中可覆盖begin的最远end。#include<bits/stdc++.h>#include<iostream>#include<cstring>#include<cstdio>#include<cmath>#include<algorithm>using namespace std;typedef l

2020-10-19 22:05:37

Ball Aizu - 0033

水题。先遍历一遍数组,标记上升的序列。再遍历一遍数组,看未标记的部分是否是上升的序列。#include<bits/stdc++.h>#include<iostream>#include<cstring>#include<cstdio>#include<cmath>#include<algorithm>using namespace std;typedef long long ll;typedef unsigned

2020-10-16 10:00:44

POJ3273 Monthly Expense

一开始没思路, 参考了下别人的思路.链接: link.思路: 这个最大值一定是在n份钱中最大的那一份与所有n份钱的总和之间。因此在n份钱最大的那一份与n份钱的总和之间进行二分运算。算法:check: 对n份钱进行累加,如果累加结果超过mid,就新开一组。累加结束后,对比所开的组数group与m的大小对比.二分:如果group大于m,说明组开多了,mid偏小;反之,说明组开少了,mid偏大。然后通过二分的方式,逐渐找到最优的mid,即为最大值最小的分法中最大值的值。#include <ios

2020-06-30 10:49:44

POJ2785 4 Values whose Sum is 0

算法分析:正常的暴力肯定过不了.1.不是有四个数相加吗,我们可以看成是两个数加两个数,然后就可以将两个数的所有组合放到一个数组里面, 再排序。2.再判断另外两个数的组合时,对上面的两个组合进行二分查找。这样就快了很多了。#include <iostream>#include <algorithm>#include <vector>using namespace std;typedef long long ll;#define IOS ios::sync_

2020-06-29 20:20:27

NC16597 聪明的质监员

思路分析:若要|y-s|的值越小,则y跟s越接近越好.二分check:若y>s, 则减小y, 根据检验公式可知需要增大m;若y<s, 则增大y, 需要减小m.这样可以让y跟s不断的接近.检验公式的计算可以通过前缀和优化.#include <bits/stdc++.h>using namespace std;typedef long long ll;typedef unsigned long long ull; typedef long double ld;co

2020-06-29 17:36:09

NC24866 Music Notes

前缀和+二分.#include <bits/stdc++.h>using namespace std;typedef long long ll;typedef unsigned long long ull; typedef long double ld;const ll mod = 1e9 + 7;const double PI = acos(-1.0);const double eps = 1e-10;const ll inf = 1e18;const int maxn =

2020-06-22 11:31:25

科研训练

本文是阅读人大副教授赵鑫老师《研究生的早期科研之路》的读书笔记,希望自己再迷茫的时候能看看,并希望对大家能有所启示~1.跨越人生的舒适区研究生阶段则更为关注实战能力和解决问题的能力。不要躺在舒适区,每天沾沾自喜,实际上你会发现之前同水平的同学可能早已在科研上领先你很多了。2.学习过程必须专业化很多同学用了很多功夫,但是做不好科研,除了天赋外,一个很重要的原因就是不专业。科研是一个系统化的学习过程,可能包括阅读英文原版书籍、学习基础理论(机器学习)、使用标准规范编写代码、使用科学写作方法攥写论文等等

2020-06-21 16:55:12

NC19913 [CQOI2009]中位数图

将>b的置为1;<b的置为-1.pos记录b的位置.算法:1.在0~pos-1, 从后往前扫, sum记录后缀和, 若sum=0, ans++, 记录sum的个数:cnt[maxn+sum]++;2.在pos+1~n-1, 同上.3.在0~n-1,步骤2中,同时记录sum的值,并且可以统计与步骤一种sum的相反结果,ans +=cnt[maxn-sum].#include <bits/stdc++.h>using namespace std;typedef long long l

2020-06-21 10:46:55

NC15446 wyh的物品

0/1分数规划入门题.#include <bits/stdc++.h>using namespace std;typedef long long ll;const ll mod = 1e9 + 7;const double PI = acos(-1.0);const double eps = 1e-10;const ll inf = 1e18;double ans = 0;int n, k;inline ll read(){ ll s = 0, w = 1;

2020-06-17 15:57:31

NC14733 完全平方数

题意很简单,求[l,r]范围内的完全平方数个数,0<= l <= r <= 1000000000;因为sqrt(1000000000)=31622,所以可以写一个0-31622的递增数组,在这个数组里二分找答案.找一个左边界L使得L²>=l,再找一个右边界使得R²>r,答案就是R-L#include <bits/stdc++.h>using namespace std;typedef long long ll;const ll mod = 1e9 + 7

2020-06-17 14:22:51

NC23049 华华给月月准备礼物

首先分析能不能用二分.二分的条件:满足单调性和check答案比较简单.单调性:可以二分长度, 显然是满足单调性的.check:1.每次二分木棍的长度mid, 然后对每个a[i] 都能得到 a[i] / mid 个需要的木棍.2.我们check一下能不能得到超过k个所需木棍.3.直接统计满足条件的最大长度即可.注意:最后的答案可能为0.#include <bits/stdc++.h>using namespace std;typedef long long ll;const

2020-06-17 11:30:50

NC17889 新建 Microsoft Office Word 文档

STL+模拟.1.开一个bool vis[i]表示第i个文档是否存在,然后建一个set存放没有建立的文件.2.建立文档:直接取set的首元素,vis[i] = true.3.删除文档:查询vis,若存在,输出"成功";否则,输出"失败".#include<bits/stdc++.h>using namespace std;#define IOS ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);typedef long lon

2020-06-16 21:22:32

NC17508 指纹锁

题意:一个定长范围内只能有一个数。这里可以用set对一个区间进行合并。算法:1.重载运算符,修改排序操作.2.在两个点之间的距离小于等于k的时候直接返回false,表示不用装进去了,就不要这个数了。3.否则,按照升序排列.struct cmp { bool operator () (const int& u, const int& v) const { //若任意两个指纹相差小于k,则不用装进去了 if (abs(u - v) <

2020-06-16 20:16:37

NC14661 简单的数据结构

因为要从队头队尾插入删除元素,可以用STL中的deque(双端队列)便于操作.这些是deque的一些基本操作:1.把x压入后/前端:push_back(x)/push_front(x)2.访问(不删除)后/前端元素:back()/front()3.删除后/前端元素:pop_back() pop_front()4.判断deque是否空:empty()5.返回deque的元素数量:size()6.清空deque:clear()7.排序:sort(d.begin(),d.end())#inclu

2020-06-16 16:27:50

NC53681 「土」巨石滚滚

贪心策略:1.若b>=a,则a小的放在前面,减少丧失的稳定性,以防下一个a过大.2.若b<a,则b大的放在前面.#include<bits/stdc++.h>using namespace std;typedef long long ll;const int maxn = 5e5+5;inline ll read(){ ll s = 0, w = 1; char ch = getchar(); while (ch < 48 || ch

2020-06-16 11:35:03

快速读取

inline ll read(){ ll s = 0, w = 1; char ch = getchar(); while (ch < 48 || ch > 57) { if (ch == '-') w = -1; ch = getchar(); } while (ch >= 48 && ch <= 57) s = (s << 1) + (s

2020-06-16 11:28:21

NC24636 值周

离散化+前缀和.#include<bits/stdc++.h>using namespace std;const int maxn = 1e8+5;int l[maxn] = {0};int main(int argc, char const *argv[]){ std::ios::sync_with_stdio(false); l[0] = 1; int len, m; scanf("%d%d",&len,&m); for (int i = 0;

2020-06-16 10:27:33

NC50493 石子合并

区间dp#include<bits/stdc++.h>using namespace std;int main(int argc, char const *argv[]){ int n; cin >> n; int a[305], sum[305]; for (int i = 1; i <= n; ++i) { cin >> a[i]; sum[i] += sum[i-1] + a[i]; } int dp[305][305];

2020-06-12 09:21:00

NC14701 取数游戏2

刚开始学习动态规划,参考了别人的思路~链接: https://blog.csdn.net/lin_ty/article/details/89040469.1.边界条件2.最优子结构3.状态转移方程#include<bits/stdc++.h>using namespace std;const int maxn = 1005;int main(int argc, char const *argv[]){ int t; cin >> t; while(t--)

2020-06-11 20:44:06

NC15029 吐泡泡

需要用栈去模拟整个过程.注意是多组数据输入.1.用str存储字符串,若str[i]与s.top()都是’o’,则出栈,s[i]=‘O’2.若str[i]与s.top()都是’O’,则出栈,i++3.否则str[i]入栈#include<bits/stdc++.h>using namespace std;const int maxn = 1000005;stack<char> s;string str;int main(int argc, char const *a

2020-06-09 10:43:21

查看更多

勋章 我的勋章
  • 新人勋章
    新人勋章
    用户发布第一条blink获赞超过3个即可获得
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv4
    勤写标兵Lv4
    授予每个自然周发布9篇以上(包括9篇)原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。