摘要: #include#includeusing namespace std;const int maxn = 500 + 5;char map[maxn][maxn];int dirx[4] = {1, 0, 0, -1};int diry[4] = {0, 1, -1, 0};int n, m, d;int ex, ey;struct point{ int x; int y; int v; const bool operator a.v升序, v a.v; }};int bfs(int x, int y){ point q1, q2; priority_queueQ; q1.x = x; q.. 阅读全文
posted @ 2014-02-02 11:10 静坐观雨 阅读(158) 评论(0) 推荐(0) 编辑
摘要: #include#includeusing namespace std;const int maxn = 10000 + 10;int p[maxn];int main(){ int n; while(cin>>n){ for(int i=0; i>p[i]; } sort(p, p + n); //从小到大排序 int sum = 1; for(int i=0; i<n; i++){ if(sum < p[i]) break; sum += p[i]; } cout<<sum<<endl; } return 0;} 阅读全文
posted @ 2014-02-02 10:23 静坐观雨 阅读(134) 评论(0) 推荐(0) 编辑
摘要: #include#includeusing namespace std;const int maxn = 20 + 5;struct Hero { int hp; int dps;}hero[maxn];int cmp(Hero a, Hero b){ return a.hp * b.dps >n){ int sum = 0; for(int i=0; i>hero[i].dps >> hero[i].hp ; sum += hero[i].dps ; } sort(hero, hero + n, cmp); int ans = 0; for(int i=0; i< 阅读全文
posted @ 2014-02-01 10:56 静坐观雨 阅读(212) 评论(0) 推荐(0) 编辑
摘要: #include#includeusing namespace std;const int maxn = 20;char a[maxn], b[maxn];char c[maxn];int toint(char s[]){ int j = 0; for(int i=0; i<strlen(s); i++){ if(s[i] == ',') continue; c[j++] = s[i]; } c[j] = '\0'; return atoi(c);}int main(){ while(scanf("%s%s", a, b) == 2){ 阅读全文
posted @ 2014-01-22 18:52 静坐观雨 阅读(182) 评论(0) 推荐(0) 编辑
摘要: 题意: 如果购买一个商品之前,卡上的剩余金额大于或等于5元,就一定可以购买成功(即使购买后卡上余额为负),否则无法购买(即使金额足够)。所以大家都希望尽量使卡上的余额最少。某天,食堂中有n种菜出售,每种菜可购买一次。已知每种菜的价格以及卡上的余额,问最少可使卡上的余额为多少。AC代码:#include#includeusing namespace std;const int maxn = 1000 + 10;int value[maxn];int cost[maxn];int dp[maxn][maxn];int Max(int a, int b){ return a > b ? a : 阅读全文
posted @ 2014-01-22 10:21 静坐观雨 阅读(123) 评论(0) 推荐(0) 编辑
摘要: //字符串输入流的使用#include#include#include //字符串输入流头文件using namespace std;char s[150];char ans[150];string w;int main(){ int t; while(scanf("%d", &t) != EOF){ getchar(); while(t--){ gets(s); for(int i=0; s[i]; i++){ if(s[i] >= 'a' && s[i] >w){ ans[j++] = w[0]; } ans[j] = 阅读全文
posted @ 2014-01-19 21:08 静坐观雨 阅读(188) 评论(0) 推荐(0) 编辑
摘要: #includeusing namespace std;const int maxn = 3000000 + 10;__int64 p[maxn];void init(){ for(int i=1; i>a>>b){ __int64 ans = 0; for(int i=a; i<=b; i++){ ans += p[i]; } cout<<ans<<endl; } return 0;} 阅读全文
posted @ 2014-01-19 20:18 静坐观雨 阅读(114) 评论(0) 推荐(0) 编辑
摘要: //欧拉函数模板#include#includeusing namespace std;int euler(int n){ //欧拉函数 int ans = n; int s = sqrt((double)n); for(int i=2;i 1) ans = ans / n * (n - 1); return ans;}int main(){ int n; while(scanf("%d", &n) !=EOF, n){ cout<<n - euler(n) - 1<<endl; //除了质数后就是和n的公约数大于等于2的数 } return 阅读全文
posted @ 2014-01-19 14:52 静坐观雨 阅读(120) 评论(0) 推荐(0) 编辑
摘要: /*欧拉函数ψ(N)=N{∏p|N}(1-1/p)亦即:ψ(N)=(P是数N的质因数)如:ψ(10)=10×(1-1/2)×(1-1/5)=4ψ(30)=30×(1-1/2)×(1-1/3)×(1-1/5)=8ψ(49)=49×(1-1/7)==42*/#include#includeusing namespace std;int euler(int n){ //欧拉函数 int ans = n; int s = sqrt((double)n); for(int i=2;i 1) ans = ans / n * (n - 1); re 阅读全文
posted @ 2014-01-19 14:15 静坐观雨 阅读(303) 评论(0) 推荐(0) 编辑
摘要: //用结构体进行广搜,便于记录方向变化次数#include#includeusing namespace std;const int maxn = 1000 + 10;const int INF = 0x3fffffff;int dir[4][2] = {0, 1, 0, -1, 1, 0, -1, 0};int map[maxn][maxn];int n, m;int v[maxn][maxn];typedef struct{ int x; int y; int d; //方向 int c; //次数}node;node Start, End;void init(){ f... 阅读全文
posted @ 2014-01-14 21:48 静坐观雨 阅读(171) 评论(0) 推荐(0) 编辑