牛客网统一考试一般啥二建成绩什么时候出来成绩

国内有哪些好的刷题网站? - 知乎5248被浏览179551分享邀请回答61328 条评论分享收藏感谢收起/r/AjkgODLEgm-9rXZb92wQ (二维码自动识别)(转载,求带上公众号二维码。。。。)54710 条评论分享收藏感谢收起更多4 个回答被折叠()题目说明是错误的,无论升序还是降序,同样分数情况下,按照输入的先后顺序进行输出,样例测试是这样子的,而题目说明却是错的
#include&iostream&
#include&vector&
#include&string&
#include&algorithm&
typedef struct
bool cmp0(const node& x, const node& y)
return x.socre & y.
bool cmp1(const node& x, const node& y)
return x.socre & y.
bool cmptank(const node& x, const node& y)
return x.loc_tank & y.loc_
int main()
int length,
while (cin && length && way)
vector&node&
for (int i = 0; i & i++)
cin && n.name && n.
n.loc_tank =
data.push_back(n);
if (way == 1)
sort(data.begin(), data.end(), cmp1);
sort(data.begin(), data.end(), cmp0);
for (int i = 0; i & i++)
if (i & length - 1 &&data[i].socre == data[i + 1].socre)
while (i & length - 1 && data[i].socre == data[i + 1].socre)
sort(data.begin() + k, data.begin() + i + 1, cmptank);
for (vector&node&::iterator it = data.begin(); it != data.end(); it++)
cout && it-&name && & & && it-&socre &&
//供参考^-^~
#include &iostream&
#include &vector&
#include &string&
#include &algorithm&
struct stu
stu(){name=&&;grade=0;}
int flag = 0;
vector&vector&string&&vec(1000);
bool compare(stu A, stu B)
if (A.grade != B.grade)
return A.grade&B.
for (int i = 0; i&vec[A.grade].size(); ++i)
if (A.name == vec[A.grade][i])
if (B.name == vec[A.grade][i])
if (A.grade != B.grade)
return A.grade&B.
for (int i = 0; i&vec[A.grade].size(); ++i)
if (A.name == vec[A.grade][i])
if (B.name == vec[A.grade][i])
int main()
int n = 0;
while (cin&&n)
vector&stu&numbers(n);
for (int i = 0; i&n; ++i)
cin && numbers[i].name && numbers[i].
vec[numbers[i].grade].push_back(numbers[i].name);
sort(numbers.begin(), numbers.end(), compare);
for (int i = 0; i & numbers.size(); ++i)
cout && numbers[i].name && & & && numbers[i].grade&&
vec.clear();
vec = vector&vector&string&&(1000);
//这个需要用stable_sort()稳定排序
#include&bits/stdc++.h&
int n, bs, score[500], r[500];
bool cmp(int i,int j){
return score[i]&score[j];
bool cmp1(int i,int j){
return score[i]&score[j];
int main() {
string name[500];
int i,j,k;
while(cin &&n&&bs){
for(i=0;i&n;i++){
cin &&name[i]&&score[i];
stable_sort(r,r+n,cmp);
stable_sort(r,r+n,cmp1);
for(i=0;i&n;i++){
int t = r[i];
cout && name[t]&&' '&&score[t]&&
#include&iostream&
#include&algorithm&
#include&vector&
#include&string&
using std::
using std::
using std::
using std::
using std::
struct User
int main()
std::cin &&
vector&User&
while (count & 0)
cin && n &&
user.name =
user.score =
vec.push_back(user);
if (method == 1)
auto f = [](User u1, User u2)-& bool {return u1.score & u2. };
std::stable_sort(vec.begin(), vec.end(), f);
auto f = [](User u1, User u2)-& bool {return u1.score & u2. };
std::stable_sort(vec.begin(), vec.end(), f);
for(size_t i=0;i!=vec.size();++i)
cout&&vec[i].name&&& &&&vec[i].score&&
为什么不用stl呢?
import java.util.ArrayL
import java.util.C
import java.util.L
import java.util.S
public class Main{
public static void main(String[] args){
//相同的变量,定义全局变量可以减少内存的开销
Main st=new Main();
Scanner sc=new Scanner(System.in);
while(sc.hasNext()){
//关键代码,没有这个会编译不过
int n=sc.nextInt();
int flag=sc.nextInt();
Student[] students=new Student[n];
for( i=0;i&n;i++)
String name=sc.next();
int score=sc.nextInt();
Student student=new Student(name,score);
students[i]=
if(flag==0){
for(i=1;i&n;i++){
for(j=0;j&n-i;j++){
if(students[j].getScore()&students[j+1].getScore()){
swap(students,j,j+1);
for( i=1;i&n;i++){
for( j=0;j&n-i;j++){
if(students[j].getScore()&students[j+1].getScore()){
swap(students,j,j+1);
for(Student student:students){
System.out.println(student.toString());
public static void swap(Student[] stu,int x,int d){
Student temp=stu[x];
stu[x]=stu[d];
class Student{
public Student(){
public Student(String name,int score){
this.name=
this.score=
public String getName() {
public void setName(String name) {
this.name =
public int getScore() {
public void setScore(int score) {
this.score =
public String toString(){
return name+& &+
#include &iostream&
#include &string&
#include &algorithm&
#include &vector&
struct Student
bool compareDesc(Student a, Student b){
return a.grade & b.
bool compareAsc(Student a, Student b){
return a.grade & b.
int main()
vector&Student&
while(cin && n){
stu.resize(n);
for (int i = 0; i & i++){
cin && stu[i].name && stu[i].
if (order == 0)
sort(stu.begin(), stu.end(), compareDesc);
sort(stu.begin(), stu.end(), compareAsc);
for (int i = 0; i & i++){
cout && stu[i].name && & & && stu[i].grade &&
stu.clear();
求问错在哪里?为什么在线测试的时候会不输出最后一行?本地就没问题。。。
#include&iostream&
#include&vector&
#include&string&
#include&map&
struct stu
int main()
while(cin&&N&&M)
stu AA[1000];
for(int i=0;i&N;i++)
cin&&temp.name&&temp.
for(int p=0;p&N;p++)
for(int q=N-1;q&=p;q--)
if(AA[q].score&AA[q-1].score)
temp=AA[q-1];
AA[q-1]=AA[q];
for(int i=N-1;i&=0;i--)
cout&&AA[i].name&&&
&&&AA[i].score&&
for(int i=0;i&=N-1;i++)
cout&&AA[i].name&&&
&&&AA[i].score&&
我这本地跑的没毛病啊,错误的测试用例是
moolgouua 43
我跑的没错啊
怎么一提交就出毛病
#include &iostream&
#include &vector&
#include &string&
int main(){
int count=0;
int upordown=0;
vector&cc&
while(cin&&count){
for(int i=0;i&i++){
cin&&temp.data&&temp.
d.push_back(temp);
if(upordown==0){
for(int i=0;i&i++){//冒泡排序
for(int j=count-1;j&i;j--){
if(d[j].score&d[j-1].score)swap(d[j],d[j-1]);
else if(upordown==1){
for(int i=0;i&i++){//冒泡排序
for(int j=count-1;j&i;j--){
if(d[j].score&d[j-1].score)swap(d[j],d[j-1]);
for(int i=0;i&i++){
cout&&d[i].data&&' '&&d[i].score&&
d.clear();
#include&stdafx.h&
#include&iostream&
#include&vector&
#include&string&
struct student {
void Msort_inc(vector&student& &students, int low, int mid, int high) {
int i = int j = mid + 1; vector&student& int k =
for (; (i &= mid) && (j &= high); ) {
if (students[i].score &= students[j].score) {
tmp.push_back(students[i]);
tmp.push_back(students[j]);
if (i &= mid)
for (; i &= i++) {
tmp.push_back(students[i]);
if (j &= high)
for (; j &= hig敏感词mp.push_back(students[j]);
vector&student&::iterator it = tmp.begin();
for (; k &= k++, it++) {
students[k].score = (*it).
students[k].name = (*it).
void Msort_decrease(vector&student& &students, int low, int mid, int high) {
int i = int j = mid + 1; vector&student& int k =
for (; (i &= mid) && (j &= high); ) {
if (students[i].score &= students[j].score) {
tmp.push_back(students[i]);
tmp.push_back(students[j]);
if (i &= mid)
for (; i &= i++) {
tmp.push_back(students[i]);
if (j &= high)
for (; j &= hig敏感词mp.push_back(students[j]);
vector&student&::iterator it = tmp.begin();
for (; k &= k++,it++) {
//students[k].score = (*it).
//students[k].name = (*it).
students[k] = (*it);
void MergeSort(vector&student& &students,int low,int high, int action) {
if (low&high)
MergeSort(students,low,(low+high)/2,action);
MergeSort(students,
(low + high) / 2+1, high, action);
if(action==0)
Msort_decrease(students,low, (low + high) / 2, high);
Msort_inc(students, low, (low + high) / 2, high);
int main(){
while (cin && num) {
vector&student&
while (num--) {
student m_
m_student.name =
m_student.score =
students.push_back(m_student);
MergeSort(students, 0, students.size()-1,action);
vector&student&::iterator it = students.begin();
while (it != students.end()) {
cout && (*it).name && ' ' && (*it).score&&
}貌似做复杂了,稳定的排序,我用的是归并排序。短时间内能想到的就是归并排序和冒泡排序,这两个;堆排序肯定也可以,其实如果用一个priority_queue最简单了,直接根据不同的action放进去,写好相应的cmp operator就好了。所以我这上面有很多冗余代码。
#include&stdio.h&
#include&stdlib.h&
typedef struct {
char name[50];
void insertion_sort(student *, int, int);
int main() {
int num, updown,
scanf(&%d&, &num);
scanf(&%d&, &updown);
stu = (student *)malloc(num * sizeof(student));
for (i = 0; i & i++)
scanf(&%s %d&, (stu+i)-&name, &(stu+i)-&grade);
insertion_sort(stu, num, updown);
for (i = 0; i & i++)
printf(&%s %d\n&, (stu+i)-&name, (stu+i)-&grade);
void insertion_sort(student *stu, int num, int updown) {
if (num == 0 || num == 1)
else if (updown == 1)
for (int i = 1; i & i++) {
student key = stu[i];
int j = i - 1;
while (j &= 0 && key.grade & (stu+j)-&grade) {
stu[j + 1] = stu[j];
stu[j + 1] =
for (int i = 1; i & i++) {
student key = stu[i];
int j = i - 1;
while (j &= 0 && key.grade & (stu+j)-&grade) {
stu[j + 1] = stu[j];
stu[j + 1] =
#include&iostream&
#include&algorithm&
#include&functional&
#include&vector&
struct stu
bool Less(struct stu s1,struct stu s2)
return s1.score&s2.
bool Great(struct stu s1,struct stu s2)
return s1.score&s2.
int main()
while(cin&&n&&flag)
list&struct stu&
vector&struct stu&
for(int i=0;i&n;++i)
cin&&ps.user&&ps.
vstu.push_back(ps);
//copy(lstu.begin(),lstu.end(),insert_iterator(vstu));
if(flag==0)
stable_sort(vstu.begin(),vstu.end(),Great);
for(vector&struct stu&::iterator iter = vstu.begin();iter!=vstu.end();++iter)
cout&&(*iter).user&&& &&&(*iter).score&&
else if(flag==1)
stable_sort(vstu.begin(),vstu.end(),Less);
for(vector&struct stu&::iterator iter = vstu.begin();iter!=vstu.end();++iter)
cout&&(*iter).user&&& &&&(*iter).score&&
#include &stdio.h&
typedef struct student{
char name[20];
void InsertSort(Student input[], int n, int mode){
int i = 0;
int j = n-1;
for(i=0; i&n; i++){
temp = input[j];
if(mode == 1){
while(j&0 && input[j-1].grade &
temp.grade){
input[j] = input[j-1];
if(mode == 0){
while(j&0 && input[j-1].grade &
temp.grade){
input[j] = input[j-1];
input[j] =
int main(int argc, char *argv[]){
int i = 0, n = 0;
int mode = 0;
Student input[1000];
while(scanf(&%d&, &n) != EOF){
scanf(&%d&, &mode);
for(i=0; i&n; i++){
scanf(&%s&, input[i].name);
scanf(&%d&, &(input[i].grade));
InsertSort(input, n, mode);
for(i=0; i&n; i++){
printf(&%s %d\n&, input[i].name,
input[i].grade);
这是我写的感觉还行,就放上来了,比较悲催提交不上去(代码没问题,可以解决很多诸如此类的排序题),大家有兴趣可以参考参考 package E01;
import java.util.*;
import java.util.Map.E
* @author he
*把数据存放到HashMap中再转换为list最后用Collections.sort指定比较器 进行排序
//对存放在map中的Value值进行排序
class myCompare implements Comparator&Map.Entry&String, Integer&&{
public int compare(Entry&String, Integer& o1, Entry&String, Integer& o2) {
//获取V映射进行比较
return o1.getValue().compareTo(o2.getValue());
public class MarkSort {
public static void main(String[] args) {
Map&String , Integer& map=new HashMap&String,Integer&();
map.put( &jack& , 70);
map.put(&peter&, 96);
map.put(&Tom&,70);
map.put(&smith&, 67);
List&Map.Entry&String, Integer&& list=new ArrayList&Map.Entry&String,Integer&&(map.entrySet());
Collections.sort(list, new myCompare());
for (Entry&String, Integer& entry : list) {
System.out.println(entry.getKey()+& &+entry.getValue());
要能够循环输入,否则不通过。
import java.util.ArrayL
import java.util.C
import java.util.HashM
import java.util.L
import java.util.M
import java.util.Map.E
import java.util.S
import java.util.jar.Attributes.N
public class Main
public static void main(String[] args)
Scanner scanner=new Scanner(System.in);
while(scanner.hasNext())
int numPeople=scanner.nextInt();
int option=scanner.nextInt();
List&Student& stuList=new ArrayList&Student&();
for(int i=0;i&numPi++)
stuList.add(new Student(scanner.next(), scanner.nextInt()));
if(option==0)
Collections.sort(stuList, new Comparator&Student&()
public int compare(Student o1,Student o2)
return o2.score-o1.
else if(option==1)//升序
Collections.sort(stuList, new Comparator&Student&()
public int compare(Student o1,Student o2)
return o1.score-o2.
for(int i=0;i&stuList.size();i++)
System.out.println(stuList.get(i).name+& &+stuList.get(i).score);
class Student
public Student(String name,int score)
this.name=
this.score=
public class Test011 {
public static int
input(String str){
int num=str.indexOf(' ');
String str1=str.substring(num+1);
char[] ch=str1.toCharArray();
int num1=0;
for(int i=0;i&ch.i++){
num1+=(ch[i]-'0')*(int)(Math.pow(10, ch.length-(i+1)));
return num1;
//升序排列
public static String[] up(String[] str,int[] a){
String ss=new String();
String[] s=
for(int i=0;i&str.length-1;i++){
for(int j=i;j&str.j++){
if(a[i]&a[j]){
ss=str[i];
str[i]=str[j];
//降序排列
public static String[] down(String[] str,int[] a){
String ss=new String();
String[] s=
for(int i=0;i&str.length-1;i++){
for(int j=i;j&str.j++){
if(a[i]&a[j]){
ss=str[i];
str[i]=str[j];
public static void text(int num,int flag,String[] str){
int[] stu=new int[num];
String[] aa=new String[num];
for(int i=0;i&stu.i++){
stu[i]=input(str[i]);
if(flag==0){
aa=down(str, stu);
}else if(flag==1){
aa=up(str, stu);
for(int i=0;i&aa.i++){
System.out.println(aa[i]);
public static void main(String[] args,int num,int flag,String[] str) {
text(num, flag, str);
明明没什么错啊,为什么编译的时候不通过,郁闷
#include &iostream&
void mergeSort(int a[], int p[], int left, int right);
void merge(int a[], int p[], int left, int mid, int right);
int main()
int num,order,i;
name = new char *[num];
grade = new int[num];
place = new int[num];
for (i = 0; i & i++)
name[i] = new char[20];
cin && name[i];
cin && grade[i];
place[i] =
mergeSort(grade, place, 0, num - 1);
if (order)
for (i = 0; i & i++)
cout && name[place[i]] && & &
&& grade[i] &&
for (i = num - 1; i &= 0; i--)
cout && name[place[i]] && & &
&& grade[i] &&
for (i = 0; i & i++)
delete [] name[i];
void mergeSort(int a[], int p[], int left, int right)
int mid = (left + right) / 2;
if (left == right)
mergeSort(a, p, left, mid);
mergeSort(a, p, mid + 1, right);
merge(a, p, left, mid + 1, right);
void merge(int a[], int p[], int left, int mid, int right)
int *tmp = new int[right - left + 1];
int *tpl = new int[right - left + 1];
int i = left, j = mid, k = 0;
while (i & mid && j &= right)
if (a[i] & a[j])
tpl[k] = p[i];
tmp[k++] = a[i++];
tpl[k] = p[j];
tmp[k++] = a[j++];
while (i & mid)
tpl[k] = p[i];
tmp[k++] = a[i++];
while (j &= right)
tpl[k] = p[j];
tmp[k++] = a[j++];
for (i = 0, k = k &=)
p[k] = tpl[i];
a[k++] = tmp[i++];
ps:为什么在线没输出,而我在自己电脑里是好的
//申请一个vector&vector&string& &vvGradName(101);行为101,行号也表示分数
//相同分数的按输入顺序存入vvGradName.at(分数).push_back(人名);然后按序号输出存入的人名
//时间复杂度为O(N)
#include &iostream&
#include &vector&
#include &string&
int main()
while (cin && N)
vector&vector&string& &vvGraName(101);
int InNum = N;
int countout = 0;
while (InNum--)
cin && sname&&
vvGraName.at(grade).push_back(sname);
for (i = sortflag ? 0 : 100; sortflag ? i &= 100 : i &= 0; sortflag ? i++ : i--)
if (vvGraName.at(i).size())//分数为i的人数不为0
countout += vvGraName.at(i).size();
for (int j = 0; j & vvGraName.at(i).size(); j++)
cout && vvGraName.at(i).at(j) && & & && i &&
if (countout == N)
vvGraName.clear();
要记得是可以无限输入,在这上面浪费了很长时间
#include &iostream&
#include &string&
#include &algorithm&
#include &vector&
typedef struct student{
bool comp(stu a,stu b){
return a.sc&b.
bool compgre(stu a,stu b){
return a.sc&b.
int main(){
while(scanf(&%d&,&n)==1){
scanf(&%d&,&k);
vector&stu&
for(int i=0;i&n;i++){
cin&&stud.name&&stud.
arr.push_back(stud);
stable_sort(arr.begin(),arr.end(),comp);
for(int i=0;i&n;i++){
cout&&arr[i].name&&& &&&arr[i].sc&&
stable_sort(arr.begin(),arr.end(),compgre);
for(int i=0;i&n;i++){
cout&&arr[i].name&&& &&&arr[i].sc&&
//注意多组测试样例
//直接插入是稳定排序的一种
//注释掉的是用stl写的
#include&bits/stdc++.h&
typedef struct T{
char name[20];
bool cmp(S *s1,S *s2){
return s1-&grade&s2-&
bool cmp2(S *s1,S *s2){
return s1-&grade&s2-&
int main(){
S *s[1000];
while(scanf(&%d%d&,&n,&f)!=EOF){
for(i=0;i&n;i++){
s[i]=new S;
scanf(&%s%d&,&s[i]-&name,&s[i]-&grade);
for(i=1;i&n;i++){
if(s[i]-&grade&s[i-1]-&grade){
S * temp=s[i];
int j=i-1;
s[j+1]=s[j];j--;
}while(j&=0&&temp-&grade&s[j]-&grade);
for(i=1;i&n;i++){
if(s[i]-&grade&s[i-1]-&grade){
S * temp=s[i];
int j=i-1;
s[j+1]=s[j];j--;
}while(j&=0&&temp-&grade&s[j]-&grade);
for( i=0;i&n;i++){
printf(&%s %d\n&,s[i]-&name,s[i]-&grade);
//stable_sort(s,s+n,cmp);
stable_sort(s,s+n,cmp);
for( i=0;i&n;i++){
printf(&%s %d\n&,s[i]-&name,s[i]-&grade);
stable_sort(s,s+n,cmp2);
for( i=0;i&n;i++){
printf(&%s %d\n&,s[i]-&name,s[i]-&grade);
!!!!求助,在vc++6.0上完全正确,为什么提交老是出错?显示的是
你的答案: 然后后面没有内容。
#include&stdio.h&
#include&stdlib.h&
#define M 30
typedef struct stu{
char name[M];
}*stunail,
void Sort(stunail pm,int n){
for(i=1;i&n;i++){
tmp=pm[i];
for(j=i-1;j&=0&&tmp.score&pm[j].j--){
pm[j+1]=pm[j];
void print(stunail pm,int n,int mark){
for(i=0;i&n-1;i++)
printf(&%s %d\n&,pm[i].name,pm[i].score);
printf(&%s %d&,pm[i].name,pm[i].score);
for(i=n-1;i&0;i--)
printf(&%s %d\n&,pm[i].name,pm[i].score);
printf(&%s %d&,pm[i].name,pm[i].score);
int main(){
scanf(&%d&,&n);
scanf(&%d&,&mark);
pm=(stunail)malloc(n*sizeof(stu));
for(i=0;i&n;i++){
scanf(&%s&,&pm[i].name);
scanf(&%d&,&pm[i].score);
Sort(pm,n);
print(pm,n,mark);
这道题你会答吗?花几分钟告诉大家答案吧!
扫描二维码,关注牛客网
下载牛客APP,随时随地刷题
浙ICP备号-2
扫一扫,把题目装进口袋牛客网使用JS刷题如何处理输入输出 - 简书
牛客网使用JS刷题如何处理输入输出
某牛官方镇楼
其中已经给出了js的样例,以简单的为例
var readline = require('readline')
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
rl.on('line', function(line) {
var tokens = line.split(' ')
console.log(parseInt(tokens[0]) + parseInt(tokens[1]));
尝试使用node本地运行,我们可以发现,每输入一行回车后即会输出结果,然后可以继续输入
我们来解读一下怎么处理的输入输出
//每读一行,即一行输入结束敲回车,执行事件line对应的方法(这里为计算A+B并输出)
rl.on('line', function(line) {
var tokens = line.split(' ')
//直接使用console.log进行输出,一次输出即为一行,输出多行可多次使用console.log
console.log(parseInt(tokens[0]) + parseInt(tokens[1]));
关于读多行的问题,理清以后就可以自行解决了,如下方法(看上去好像不太优雅)
// 获取三行输入的值,输出它们的和
var countLine = 1
var tokens = []
rl.on('line', function(line) {
tokens.push(line)
if(countLine === 3) {
console.log(
tokens.reduce(function(sum, item) {
return sum + parseInt(item)
countLine = 1
tokens = []
countLine++
但是如果题目中并没有给出具体的输入行数,上面的方法就不可取了,我们需要一次性读取所有的输入然后再处理输出,操作如下
process.stdin.resume();
process.stdin.setEncoding('ascii');
var input = "";
var input_array = "";
process.stdin.on('data', function (data) {
process.stdin.on('end', function () {
input_array = input.split("\n");
// 处理input
我个人比较喜欢使用第一种方法,在本地终端使用也很方便,第二种方法的话,如果在终端中使用,需要将end事件修改成
process.on('SIGINT', function() {
// 你的处理
process.exit(0);
这样的话,使用ctrl+c就可以得到输出
吐槽某马和某鹅
习惯了牛客的node输入输出以后其它的都不适应了……
赛马网node官方给出的是上面说到的第二种处理方式,第一种应该也行但我没有试过。注意:赛马将js和node分为两种不同的输入输出,个人很不适应所谓的js输入输出,虽然看上去好像很简单,但是本地不好测啊……输出好像还是用定制的print函数来着……对了,练习的时候还有node选项,等到正式笔试就只有js选项了,神坑……附:
腾讯则根本没有node选项,只有定制的js输入,使用固定的main函数接受输入,我至今还不太理解……输出还是用console log}

我要回帖

更多关于 中考成绩什么时候出来 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信