2012年1月25日

HDU 3573 Buy Sticks 贪心

摘要: 很简单一题,见代码#include<stdio.h> #include<stdlib.h> #include<math.h> using namespace std; int min(int a,int b){ return a<b?a:b; } int main(){ int t,T; int a,b,c; scanf("%d",&T); int sum; for(t=1;t<=T;t++){ sum=0; scanf("%d %d %d",&a,&... 阅读全文

posted @ 2012-01-25 22:03 c语言源码 阅读(148) 评论(0) 推荐(0) 编辑

HDU 3979 Monster 贪心策略

摘要: 听戴牛讲完这题体会了排序不等式在贪心中的作用这个题说的是后很多怪兽同时攻击一个游侠,怪兽有不同的血量和攻击力。游侠有一个攻击力,如果选择攻击怪兽的顺序使得游侠扣血最少贪心构造:对于2只怪兽,A,B;假设当前怪兽总攻击值为V。设怪兽A的攻击力,和被攻击次数(攻击多少次死亡) 为 GA,CA;设怪兽B的攻击力,和被攻击次数(攻击多少次死亡) 为 GB,CB;可知,如果先攻击怪兽A,后攻击怪兽B ,那么游侠的去血量分别为正在杀怪兽A :V *CA ,怪兽A死亡后,正在杀怪兽B :(V-GA) * CB ;杀完两只怪兽的去血总量为 SUM1 = V *CA + (V-GA) * CB; 同理,先攻击怪 阅读全文

posted @ 2012-01-25 21:25 c语言源码 阅读(264) 评论(0) 推荐(0) 编辑

POJ 3067 Sudoku DLX

摘要: 和POJ 3074一样#include<cstdio> #define inf 1e8 #define M 16*16*16*16*16*4+100 #define N 16*16*16+100 int U[M],D[M],L[M],R[M],C[M],X[M];//x代表M所属的行,c代表M所属的列,U,D,L,R为一个元素的上下左右指针 int H[N],S[N],Q[N];//H是水平循环链表的头指针,S代表每一列的元素个数,Q存储一个可能结果 char map[20][20]; int size; void remove(int c) { R[L[c]]=R[c],L[R[ 阅读全文

posted @ 2012-01-25 17:51 c语言源码 阅读(223) 评论(0) 推荐(0) 编辑

POJ 3074 Sudoku DLX

摘要: 建图还是坑了我一下午。。。。终于把数独搞定了(囧)具体细节我加了注释#include<cstdio> #define inf 1e8 #define M 9*9*9*9*9*4+100 #define N 9*9*9+100 int U[M],D[M],L[M],R[M],C[M],X[M];//x代表M所属的行,c代表M所属的列,U,D,L,R为一个元素的上下左右指针 int H[N],S[N],Q[N];//H是水平循环链表的头指针,S代表每一列的元素个数,Q存储一个可能结果 char map[100]; bool v[N]; int size; void remove(int 阅读全文

posted @ 2012-01-25 17:27 c语言源码 阅读(195) 评论(0) 推荐(0) 编辑

Codeforces Round #104 (Div. 2) E - Lucky Subsequence

摘要: 这个题其实就是个dp(类似背包),但是一些细节还是让我做了一晚上。这个题学习了组合数取模(逆元法)补充知识:逆元的求法(a/b) mod p=a*(b逆) mod pb*x=1(mod p) x就是b的逆元而b逆可以利用扩展欧几里德或欧拉函数求得:1).扩展欧几里德:b*x+p*y=1 有解,x就是所求2).欧拉函数:b^(p-1)=1(mod p),故b*b^(p-2)=1(mod p),所以x=b^(p-2)#include<cstdio> #include<cstdlib> #include<cstring> #include<algorithm 阅读全文

posted @ 2012-01-25 00:37 c语言源码 阅读(267) 评论(0) 推荐(0) 编辑

导航