コード例 #1
0
ファイル: 14.cs プロジェクト: qifanyyy/CLCDSA
        static ProblemParams parse(string s, StreamReader r)
        {
            ProblemParams result = new ProblemParams();

            string[] sp = s.Split(' ');
            int      n  = Convert.ToInt32(sp[0]);

            result.Tribes = new Tribe[n];
            for (int i = 0; i < n; i++)
            {
                s = r.ReadLine();
                Tribe    t   = new Tribe();
                string[] ssp = s.Split(' ');
                t.d              = Convert.ToInt32(ssp[0]);
                t.n              = Convert.ToInt32(ssp[1]);
                t.w              = Convert.ToInt32(ssp[2]);
                t.e              = Convert.ToInt32(ssp[3]);
                t.s              = Convert.ToInt32(ssp[4]);
                t.dd             = Convert.ToInt32(ssp[5]);
                t.dp             = Convert.ToInt32(ssp[6]);
                t.ds             = Convert.ToInt32(ssp[7]);
                t.id             = i;
                result.Tribes[i] = t;
            }
            return(result);
        }
コード例 #2
0
        public async Task <IActionResult> GetProblemsMy(int id, [FromQuery] ProblemParams problemParams)
        {
            var problems = await _repo.GetProblemsMy(id, problemParams);

            var problemsToReturn = _mapper.Map <IEnumerable <ProblemForListDto> >(problems);

            Response.AddPagination(problems.CurrentPage, problems.PageSize,
                                   problems.TotalCount, problems.TotalPages);

            return(Ok(problemsToReturn));
        }
コード例 #3
0
ファイル: 14.cs プロジェクト: qifanyyy/CLCDSA
        static int calc(ProblemParams param)
        {
            var wall   = new int[500];
            int result = 0;

            do
            {
                var tribes = getAttack(param.Tribes);
                if (tribes.Length == 0)
                {
                    break;
                }

                foreach (var t in tribes)
                {
                    bool isSuccess = false;

                    int kw = t.w * 2 + 200;
                    int ke = t.e * 2 + 200;
                    for (int k = kw; k <= ke; k++)
                    {
                        if (wall[k] < t.s)
                        {
                            // Console.WriteLine("Success:{0} on day {1} @ {2} s= {3} w={4}", t.id, t.d, k, t.s, wall[k]);
                            isSuccess = true;
                            result++;
                            break;
                        }
                    }
                    // if (!isSuccess) Console.WriteLine("Fail:{0} on day {1}", t.id, t.d);
                }
                foreach (var t in tribes)
                {
                    int kw = t.w * 2 + 200;
                    int ke = t.e * 2 + 200;
                    // Console.WriteLine("Raising wall: {0} from {1} to {2}", t.s, kw, ke);
                    for (int k = kw; k <= ke; k++)
                    {
                        wall[k] = wall[k] < t.s ? t.s : wall[k];
                    }
                    t.Attack();
                }
            } while (true);

            return(result);
        }
コード例 #4
0
        public async Task <PagedList <Problem> > GetProblems(ProblemParams problemParams)
        {
            var problems = _context.Problems.Include(p => p.Photos)
                           .OrderByDescending(p => p.TimeHappened).AsQueryable();

            if (problemParams.UserId != 0)
            {
                problems = problems.Where(p => p.UserId == problemParams.UserId);
            }

            if (!string.IsNullOrEmpty(problemParams.Type) && problemParams.Type != "none")
            {
                problems = problems.Where(p => p.Type == problemParams.Type);
            }

            if (problemParams.MinDegree != 1 || problemParams.MaxDegree != 10)
            {
                problems = problems.Where(p => p.Degree >= problemParams.MinDegree && p.Degree <= problemParams.MaxDegree);
            }

            if (!string.IsNullOrEmpty(problemParams.OrderBy))
            {
                switch (problemParams.OrderBy)
                {
                case "created":
                    problems = problems.OrderByDescending(p => p.Created);
                    break;

                default:
                    problems = problems.OrderByDescending(p => p.TimeHappened);
                    break;
                }
            }

            return(await PagedList <Problem> .CreateAsync(problems, problemParams.PageNumber, problemParams.PageSize));
        }
コード例 #5
0
        public async Task <PagedList <Problem> > GetProblemsMy(int id, ProblemParams problemParams)
        {
            var problems = _context.Problems.Include(p => p.Photos).Where(p => p.UserId == id);

            return(await PagedList <Problem> .CreateAsync(problems, problemParams.PageNumber, problemParams.PageSize));
        }