↓ Skip to main content

Posts

2016

codeforces 381 div 2 D. Alyona and a tree(二分+前缀和)

·824 words·2 mins
题目链接 d:题意:一棵树,给出边权和点权,定义点v控制点u,当且仅当u是v的子树中的点,并且dis(u,v)<=a[u],其中dis(u,v)为点u到点v路径上的边权和,a[u]为点u的点权,现在问对于每个节点v,其能控制的点有多少个。

codeforces #381 div 2 C. Alyona and mex (构造)

·432 words·1 min
题目链接 题意: m个区间,要求构造一个长度为n的数组,满足m个区间中,每个区间的mex值中的最小值最大。 s思路:很容易想到的是…这个最大的mex 不可能超过每一组区间长度,假设最小的区间长度为mn

hdu 5367 digger(动态线段树,区间合并)

·1958 words·4 mins
题目链接 题意: 地主小花有n座山,这些山在地主家门前排成一条直线。这些山一开始均有相同的高度。 每一天,小花都会要求ZJiaQ开挖机把几座山挖掉一定高度,或者给一些山堆上一些高度。并且要求报告ZJiaQ报告现在有多少座山属于“高山脉” 当一排山的高度相等,并且比这排山左边和右边的山要高时,这排山被称为高山脉。 当然,最左边和最右边的山不可能是“高山脉”的一部分 思路:线段树,要维护的域蛮多的。

hdu 3308 LCIS (线段树单点更新,区间合并)

·756 words·2 mins
题目链接 题意:长度为n的序列,单点更新,或者询问某一个区间中最长连续严格递增序列的长度是多少。(此处的连续为位置连续,并非数值连续,也就是3,5,7,9,这样的就是满足题意的长度为4的序列)

codeforces #381 div2

·2406 words·5 mins
http://codeforces.com/contest/740 A:现在有n个某种物品,要买k个使得n+k是4的倍数,可以的购买方案为a元1个,b元2个,c元3个,每种方案都可以买无限多。 思路:需要注意买多个未必比买少个贵..

poj 1971 Parallelogram Counting

·446 words·1 min
题目链接 题意:给出n(n<=1E3)个不同的点,问最多组成多少个平行四边形。 思路:这道题的关键是,对于平行四边形的判断条件,要利用平行四边形对角线的交点平分两条对角线的性质。

poj 1200 Crazy Search (字符串哈希)

·413 words·1 min
题目链接 题意:一个字符串,其仅由nc种字符组成,问其所有长度为n的字串里,共用多少种不同的。 思路:一开始木有懂nc种字符有什么用… 然后写了hash,发现会TLE。。。因为用到了map,被卡了个log..

hdu 1800 Flying to the Mars (字符串hash)

·517 words·2 mins
题目链接 题意:n个人,每个人有一个level值,用一个最长30位的,可能带前缀0的数字串表示,如果i的level大于j的level,那么i可以教j飞行,每个人只能有一个老师,每个人也只能收一个徒弟。师生可以共用一把扫帚飞行。现在问最少需要多少扫帚。

codeforces 4C. Registration system (字符串hash)

·320 words·1 min
题目链接 题意:网站的注册系统..处理用户要注册的用户名,如果数据库中没有重名输出OK,否则输出要注册的用户名的字符串+num,num的大小为之前一共有多少个用户试图用该用户名。

poj 2503 Babelfish (字符串hash +sscanf读入技巧)

·389 words·1 min
题目链接 题意:给定一个两种语言的对照关系表…给出后一种语言中的单词,问对应的前一种语言的单词是什么。。。 思路:hash一下然后map存一下即可。。。。读入方式由于单词表和查询是根据空行分开的。。那么读入不能用scanf(因为会跳过空行),要用gets。。。然后再sscanf一下。。。

hdu 1880 魔咒词典 (字符串hash)

·457 words·1 min
题目链接 题意:给你一部魔咒词典。当哈利听到一个魔咒时,你的程序必须告诉他那个魔咒的功能;当哈利需要某个功能但不知道该用什么魔咒时,你的程序要替他找到相应的魔咒。如果他要的魔咒不在词典中,就输出“what?”

bzoj 2456: mode (O(1)找到出现次数大于n/2的数)

·398 words·1 min
2456: mode # Time Limit: 1 Sec Memory Limit: 1 MB Submit: 3887 Solved: 1636 [Submit][Status][Discuss] Description # 给你一个n个数的数列,其中某个数出现了超过n div 2次即众数,请你找出那个数。 Input # 第1行一个正整数n。 第2行n个正整数用空格隔开。

Mutual Training for Wannafly Union #1

·2568 words·6 mins
比赛链接 题外话: wannafly union:可能有的学校不能很好得传承……可能某一时间可以进过两三次final ……但是final队过后,这个学校就退出了历史的舞台…… 说实话我依然记得我入学那年,也就是14年,看到了华科又一次进final,然后15年仿佛已经开始走下坡路,到了16年,icpc连快银都没有…见证了hust的衰落,我的内心是格外凄凉的。

bzoj 2463: [中山市选2009]谁能赢呢? (博弈论)

·634 words·2 mins
2463: [中山市选2009]谁能赢呢? # Time Limit: 10 Sec Memory Limit: 128 MB Submit: 1826 Solved: 1347 [Submit][Status][Discuss] Description # 小明和小红经常玩一个博弈游戏。给定一个n×n的棋盘,一个石头被放在棋盘的左上角。他们轮流移动石头。每一回合,选手只能把石头向上,下,左,右四个方向移动一格,并且要求移动到的格子之前不能被访问过。谁不能移动石头了就算输。假如小明先移动石头,而且两个选手都以最优策略走步,问最后谁能赢?

【叉姐的魔法训练第一课_初级魔法练习】poj 3244 Difference between Triplets (数学)

·565 words·2 mins
题目链接 题意: # For every pair of triplets, Ta = (Ia, Ja, Ka) and T__b = (Ib, Jb, Kb), we define the difference value between Ta and_T__b_ as follows: D(Ta,_ Tb_) = max {Ia − Ib, Ja − Jb, Ka − Kb} − min {Ia − Ib, Ja − Jb, Ka − Kb} Now you are given N triplets, could you write a program to calculate the sum of the difference values between every unordered pair of triplets?

(dp专题006)hdu 2602 Bone Collector(01背包)

·296 words·1 min
题目链接 题意:容量为V的背包,n个骨头,给出价值和体积,问最多能装多少价值的背包。 思路:01背包裸体。 代码实现 1/* *********************************************** 2Author :111qqz 3Created Time :2016年11月16日 星期三 15时14分36秒 4File Name :code/hdu/2602.cpp 5************************************************ */ 6 7#include <cstdio> 8#include <cstring> 9#include <iostream> 10#include <algorithm> 11#include <vector> 12#include <queue> 13#include <set> 14#include <map> 15#include <string> 16#include <cmath> 17#include <cstdlib> 18#include <ctime> 19#define fst first 20#define sec second 21#define lson l,m,rt<<1 22#define rson m+1,r,rt<<1|1 23#define ms(a,x) memset(a,x,sizeof(a)) 24typedef long long LL; 25#define pi pair < int ,int > 26#define MP make_pair 27 28using namespace std; 29const double eps = 1E-8; 30const int dx4[4]={1,0,0,-1}; 31const int dy4[4]={0,-1,1,0}; 32const int inf = 0x3f3f3f3f; 33const int N=1E3+7; 34int dp[N],value[N],cost[N]; 35int n,V; 36void solve(int v,int c) 37{ 38 for ( int i = V; i >= c; i --) 39 dp[i] = max(dp[i],dp[i-c]+v); 40} 41int main() 42{ 43 #ifndef ONLINE_JUDGE 44 freopen("code/in.txt","r",stdin); 45 #endif 46 int T; 47 cin>>T; 48 while (T--) 49 { 50 scanf("%d%d",&n,&V); 51 ms(dp,0); 52 for ( int i = 1 ;i <= n ; i++) scanf("%d",&value[i]); 53 for ( int i = 1; i <= n ; i++) scanf("%d",&cost[i]); 54 for ( int i = 1 ; i <= n ; i++) solve(value[i],cost[i]); 55 int ans = 0 ; 56 57 for ( int i = 0 ; i <= V ; i++) ans = max(ans,dp[i]); 58 printf("%d\n",ans); 59 } 60 61 #ifndef ONLINE_JUDGE 62 fclose(stdin); 63 #endif 64 return 0; 65}

[dp专题005]hdu 1864最大报销额(01背包,垃圾题)

·467 words·1 min
hdu1864题目链接 题意:中文题目,不多说了。 思路:正解是01背包,呵呵呵。 出题人是傻逼吗? 不给数据范围? 以及,正解的01背包基于所有的发票额度的只有2位小数。这是让人猜? 本来看到这题这么恶心时不打算写的…