• #hihocoder hihocoder上的系列题解()
• hihoCoder - 1082 - 然而沼跃鱼早就看穿了一切（字符串处理）》, 一起来围观吧 https://blog.csdn.net/violet_echo_0908/article/details/47003155?utm_source=app 函数写的细节，值得学习！
《hihoCoder - 1082 - 然而沼跃鱼早就看穿了一切（字符串处理）》, 一起来围观吧 https://blog.csdn.net/violet_echo_0908/article/details/47003155?utm_source=app
函数写的细节，值得学习！


展开全文
• 题目链接：...解题思路： 这个hihocoder上有说，就不多说了。 1 #include <bits/stdc++.h> 2 using namespace std; 3 4 const int imax_n = 100005; 5 int n, m; ...

题目链接： https://hihocoder.com/contest/hiho195/problem/1
解题思路： 这个hihocoder上有说，就不多说了。

1 #include <bits/stdc++.h>
2 using namespace std;
3
4 const int imax_n = 100005;
5 int n, m;
6 int f[imax_n];
7 int w[imax_n], p[imax_n];
8 map<int, int> mp;
9
10 void zeroOneBag(int weight, int value)
11 {
12     for (int j = m; j >= weight; --j)
13     {
14         f[j] = max(f[j], f[j-weight] + value);
15     }
16 }
17
18 void completeBag(int weight, int value)
19 {
20     for (int j = weight; j <= m; ++j)
21     {
22         f[j] = max(f[j], f[j - weight] + value);
23     }
24 }
25
26 void multiBag(int weight, int value, int z)
27 {
28     int k = z;
29     int b = 1;
30     if (k * weight >= m)
31     {
32         completeBag(weight, value);
33         return ;
34     }
35     while (k >= b)
36     {
37         zeroOneBag(b*weight, b*value);
38         k -= b;
39         b<<=1;
40
41     }
42     if (k)
43         zeroOneBag(k*weight, k*value);
44 }
45
46 int main()
47 {
48     scanf("%d%d", &n, &m);
49     for (int i = 0; i < n; ++i)
50     {
51         scanf("%d%d", &w[i], &p[i]);
52         mp[100 * w[i] + p[i]]++;
53     }
54     int ans = 0;
55     memset(f, 0, sizeof(f));
56     for (int i = 1; i <=10; ++i)
57     {
58         for (int j = 1; j <=10; ++j)
59         {
60             if (mp.find(i * 100 + j) == mp.end())
61             {
62                 continue;
63             }
64             else
65             {
66                 multiBag(i, j, mp[i * 100 + j]);
67             }
68         }
69     }
70     for (int i = 0; i <= m; ++i)
71     {
72         ans = max(ans, f[i]);
73     }
74     printf("%d\n", ans);
75     return 0;
76 }

转载于:https://www.cnblogs.com/djingjing/p/8666839.html
展开全文
• hihocoder和leetcode hihoCoder-training This repository is a place to save the code that I solve problem in hihoCoder websit. 里面的题目来源：hihocoder、编程之美、剑指offer和LeetCode。
• http://hihocoder.com/problemset/problem/1654?sid=1249752 思路：广搜 1 import java.util.Arrays; 2 import java.util.HashMap; 3 import java.util.LinkedList; 4 import java.util.Map; 5 import ...

http://hihocoder.com/problemset/problem/1654?sid=1249752
思路：广搜

1 import java.util.Arrays;
2 import java.util.HashMap;
4 import java.util.Map;
5 import java.util.Queue;
6 import java.util.Scanner;
7
8 public class Main {
9     public static void main(String[] args) {
10         Scanner cin = new Scanner(System.in);
11         String str[] = new String[10];
12         for(int i = 0;i<4;i++)
13             str[i] = cin.next();
14         Map<String, Integer>s = new HashMap<>();
15         String tmp =str[0]+str[1]+str[2]+str[3];
16         char [][]str1 = new char[10][10];
17         if(check(tmp)==1)
18             System.out.println(0);
19         else {
20                 s.clear();
21                 s.put(tmp, 0);
22                 int [][]dir = {{1,0},{0,1},{-1,0},{0,-1}};
25                  boolean flag = false;
26                  while(!q.isEmpty()){
27                      tmp = q.poll();
28                      //System.out.println(tmp.substring(0, 4)+"\n"+tmp.substring(4, 8)+"\n"+tmp.substring(8, 12)+"\n"+tmp.substring(12, 16)+"  "+"num:"+s.get(tmp));
29                      if(check(tmp)>=1){
30                          System.out.println(s.get(tmp));
31                          flag = true;
32                          break;
33                      }
34                      str1[0] = tmp.substring(0, 4).toCharArray();
35                      str1[1] = tmp.substring(4,8).toCharArray();
36                      str1[2] = tmp.substring(8, 12).toCharArray();
37                      str1[3] = tmp.substring(12, 16).toCharArray();
38                      for(int i = 0;i<4;i++)
39                          for(int j = 0;j<4;j++){
40                              if(str1[i][j]!='O'){
41                                  for(int k = 0;k<4;k++){
42                                      int x = i+dir[k][0];
43                                      int y = j+dir[k][1];
44                                      if(x>=0&&x<4&&y>=0&&y<4&&str1[x][y]=='O'){
45                                          str1[x][y] = str1[i][j];
46                                          str1[i][j] = 'O';
47                                          String tmp1="";
48                                          for(int i1 = 0;i1<4;i1++)
49                                              for(int j1=0;j1<4;j1++)
50                                                  tmp1+=str1[i1][j1];
51                                          //System.out.println("tmp1:"+tmp1);
52                                          if(!s.containsKey(tmp1)){
53                                              s.put(tmp1, s.get(tmp)+1);
55                                          }
56                                          str1[i][j] = str1[x][y];
57                                          str1[x][y] ='O';
58                                      }
59                                  }
60                              }
61                          }
62                  }
63                  if(!flag)
64                      System.out.println(-1);
65         }
66     }
67
68     public static int check(String x){
69         for(int i = 0;i<16;i+=4){
70             if(x.charAt(0+i)==x.charAt(1+i)&&x.charAt(1+i)==x.charAt(2+i)&&x.charAt(2+i)==x.charAt(3+i)&&x.charAt(0+i)!='O')
71                 return 1;
72         }
73         for(int i = 0;i<4;i++)
74             if(x.charAt(i)==x.charAt(i+4)&&x.charAt(i)==x.charAt(i+8)&&x.charAt(i)==x.charAt(i+12)&&x.charAt(i)!='O')
75                 return 2;
76         if(x.charAt(0)==x.charAt(5)&&x.charAt(0)==x.charAt(10)&&x.charAt(0)==x.charAt(15)&&x.charAt(0)!='O')
77             return 3;
78
79         if(x.charAt(3)==x.charAt(6)&&x.charAt(3)==x.charAt(9)&&x.charAt(3)==x.charAt(12)&&x.charAt(3)!='O')
80             return 4;
81         return 0;
82     }
83 }

转载于:https://www.cnblogs.com/Tree-dream/p/8043665.html
展开全文
• Hihocoder 1077 题意 ​ 中文题。 解题思路 ​ 线段树裸题。 代码 #include<bits/stdc++.h> using namespace std; const int maxn = 1000005; int tree[maxn<<2]; void ...


Hihocoder 1077

题意

​   中文题。

解题思路

​   线段树裸题。

代码

#include<bits/stdc++.h>
using namespace std;
const int maxn = 1000005;

int tree[maxn<<2];

void pushup(int rt)
{
tree[rt]=min(tree[rt<<1],tree[rt<<1|1]);
}
void biuld(int l,int r,int rt)
{
if(l==r)
{
scanf("%d",&tree[rt]);
return;
}
int m=(l+r)>>1;
biuld(l,m,rt<<1);
biuld(m+1,r,rt<<1|1);
pushup(rt);
}
void update(int L,int c,int l,int r,int rt)
{
if(l==r)
{
tree[rt]=c;
return;
}
int m=(l+r)>>1;
if(L<=m) update(L,c,l,m,rt<<1);
else update(L,c,m+1,r,rt<<1|1);
pushup(rt);
}
int query(int L,int R,int l,int r,int rt)
{
if(L<=l&&R>=r)
{
return tree[rt];
}
int m=(l+r)>>1;
int ans=0x3f3f3f3f;
if(L<=m) ans=min(ans,query(L,R,l,m,rt<<1));
if(R> m) ans=min(ans,query(L,R,m+1,r,rt<<1|1));
return ans;
}
int main()
{
//    freopen("in.txt","r",stdin);
int n;
scanf("%d",&n);
biuld(1,n,1);
int q;
scanf("%d",&q);
while(q--)
{
int l,r,o;
scanf("%d%d%d",&o,&l,&r);
if(!o)
printf("%d\n",query(l,r,1,n,1));
else
update(l,r,1,n,1);
}
return 0;
}

转载于:https://www.cnblogs.com/RefrainLi/p/8861398.html
展开全文
• 题目链接：https://hihocoder.com/problemset/solution/1327177 解题思路： 1 #include <bits/stdc++.h> 2 using namespace std; 3 4 typedef long long LL; 5 const int MAXN = 100005; 6 ...
• http://hihocoder.com/problemset/problem/1039 string (1) string& insert (size_t pos, const string& str); substring (2) string& insert (size_t pos, const string&...
• http://hihocoder.com/problemset/problem/1441 题目：对SAM的介绍，模拟暴力实现SAM的一些功能。 思路：找出S字符串的所有的子串， 1 #include <stdio.h> 2 #include <string.h> 3 #include ...
• http://hihocoder.com/problemset/problem/1014 构建一棵字典树，然后进行字符串匹配就可以了 这个题我本来是想用java做，但是做了后才发现有那么多的错误，java还是有待加强啊 两份代码都基本是一样的，只不过...
• http://hihocoder.com/problemset/problem/1664 求01间隔矩阵的最大边长 思路：转移方程 dp[i][j] = min(dp[i-1][j-1],min(dp[i-1][j],dp[i][j-1])) 1 import java.math.BigInteger; 2 import java.util....
• 2 Source :hihocoder1800 3 Problem :在n*m的方格中，每个格子有一个权值，求一个矩形区域面积大于等于S,总和最大 4 Solution :枚举固定的两列，然后可以求得符合条件的长度L，求一个长度大于等于L的最大和。...
• http://hihocoder.com/problemset/problem/1306 题目不难，主要是我在这里学会了set的用法，其实set是可以根据自己的需求去排序的，这样还是很方便的 set<int,greater<int>>s; 这样就是对于int升序...
• http://hihocoder.com/problemset/problem/1311 这个题目模拟一下即可 我们都知道，小数转换2进制的办法就是对于小数部分不断乘2然后每一位取整数部分 那么这个题目也就是转换成，它是否可以通过乘以2，取整最后...
• (HihoCoder - 1015)From hihoCoder 小Hi和小Ho是一对好朋友，出生在信息化社会的他们对编程产生了莫大的兴趣，他们约定好互相帮助，在编程的学习道路上一同前进。这一天，他们遇到了一只河蟹，于是河蟹就向小Hi和小...
• http://hihocoder.com/problemset/problem/1663?sid=1252156 思路：双阶乘的除法可以转化为乘法 a!!/(a-2!!) = a 当a为偶数的时候 乘的尾数只有 8 6 4 2 0 也就是说最多五次后肯定会变成0 当a为奇数的时候 乘的...
• http://hihocoder.com/problemset/problem/1197 这个题目做了还是很久。因为很多地方没看明白 1.每个语句是说以.结尾，那么.后面的语句应该就是新的一个语句了（首字母得大写） 2.每个语句,后面可能会少一个空格...
• http://hihocoder.com/problemset/problem/1138 题意：有一些岛屿，要从第一个岛屿到第N个岛屿，求最短距离，距离为min（x,y），也就是两个点的X的差值和Y的差值的较小的。 思路:最开始我觉得应该dijstrak可以解决...
• http://hihocoder.com/problemset/problem/1543 题目很简单，最开始想了一下前缀和然后二分查找一下，发现二分很容易找不到答案 然后想起来了$s = \frac{(m+n)*(m-n+1))}{2}$公式，但是并没有想到怎么用， 然后...
• hihocoder 1176 题意：N,M。分别表示岛屿数量和木桥数量，一笔画 分析：欧拉路问题(给定无孤立结点图G，若存在一条路，经过图中每边一次且仅一次，该条路称为欧拉路) 欧拉路的条件 一个无向图存在欧拉路当且仅...
• 题目链接：http://hihocoder.com/contest/msbop2015qual/problem/1#include "stdafx.h" #include #include #include using namespace std; bool Judge_year(int year) { if ((year % 4 == 0
• hihocoder 1175 拓扑只适用于 有向无环图中，这个指的是 1.有向的，不是那种双向可走的 2.无环，并不是不存在环，而是一定要有一个没有其他点指向这个点的点， 题目大意：一个有向无环图n个点，m个边，其中随机...
• hihocoder 1505 题意：给你n个数，让你从n个数中抽两个数，再抽两个数，使得前两个数和后两个数相等 分析：对 i,j,p,q遍历的话时间复杂度会达到o(n4),所以考虑优化p，q 　 假设分配给小hi的金币为a[i]和a[j]，...
• 题目链接：http://hihocoder.com/problemset/problem/1684 #include using namespace std; using ll = long long ; using ld = long double ; #define ALL(X) begin(X), end(X) #define mp make_pair #...
• 题目链接：http://hihocoder.com/problemset/problem/1032 时间限制:1000ms 单点时限:1000ms 内存限制:64MB 描述  小Hi和小Ho是一对好朋友，出生在信息化社会的他们对编程产生了莫大的兴趣，...
• 题目链接：http://hihocoder.com/problemset/problem/1685 题解：先枚举上下界，压缩成一维，转化为求最长的子段和且长度小于K。先预处理前缀和t[]，可转化为对于给定t[i],找到t[j]使得 t[j] - t[i-1] samin[p] ...

...