192 条题解
-
4
WiFi LV 8 @ 7 年前
stl大法好
应该很容易看懂吧
直接上代码
-
16 年前@
no sofa...
-
17 年前@
-
04 年前@
-
04 年前@
-
06 年前@
之前用c语言写不知道为什么一直不行,受到大佬启发,用map试了一下。
可以说是本弱智儿童做出第一道题。
一下是我的代码。
#include<iostream>
#include<map>
#include<cstring>
using namespace std;
int main()
{
int money, rest, k, num;
char name[10][20];
map<string, int> p;
cin >> num;
for (int i = 0; i < num; i++) {
cin >> name[i];
p.insert(pair<string,int>(name[i],0));
}
for (int i = 0; i < num; i++) {
char receive_name[20];
char temp_name[20];
cin >> temp_name;
cin >> money >> k;
if (k == 0) continue;
else {
rest = money - (money / k)*k;
}
for (int j = 0; j < k; j++) {
cin >> receive_name;
p[receive_name] += (money / k);
}
p[temp_name] += rest;
p[temp_name] -= money;
}
for (int i = 0; i < num; i++)
cout << name[i] << " " << p[name[i]]<<endl;
return 0;
} -
06 年前@
哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈
-
08 年前@
-
010 年前@
太简单了,秒杀这题。。。。。。 哈
program e1035;
var n,i,j,x,y,t,k,b:longint;
d,e,f:array[1..100000]of longint;
a:array[1..10000]of string; s,c:string;
begin
// assign(input,'1.txt');
// reset(input);
readln(n);
for i:=1 to n do
readln(a[i]);
for i:=1 to n do
begin
readln(s);
for j:=1 to n do
if s=a[j] then
begin
t:=j;
break;
end;
readln(b,k);
if k<>0 then
begin
for j:=1 to n do
if s=a[j] then
begin
f[t]:=f[t]-b+b mod k;
break;
end;
for j:=1 to k do
begin
readln(s);
for x:=1 to n do
if s=a[x] then
begin
f[x]:=f[x]+b div k;
break;
end;
end;
end;
end;
for i:=1 to n do
writeln(a[i],' ',f[i]);
end. -
010 年前@
program e1035;
var n,i,j,x,y,t,k,b:longint;
d,e,f:array[1..100000]of longint;
a:array[1..10000]of string; s,c:string;
begin
// assign(input,'1.txt');
// reset(input);
readln(n);
for i:=1 to n do
readln(a[i]);
for i:=1 to n do
begin
readln(s);
for j:=1 to n do
if s=a[j] then
begin
t:=j;
break;
end;
readln(b,k);
if k<>0 then
begin
for j:=1 to n do
if s=a[j] then
begin
f[t]:=f[t]-b+b mod k;
break;
end;
for j:=1 to k do
begin
readln(s);
for x:=1 to n do
if s=a[x] then
begin
f[x]:=f[x]+b div k;
break;
end;
end;
end;
end;
for i:=1 to n do
writeln(a[i],' ',f[i]);
end. -
010 年前@
我擦,又是这样,不好好看题目,没看到还有保留钱,没一次AC,丢脸了。这都多少次了,诶,下次一定要耐心看题目!!!!!!!
总之不废话,简单的模拟即可,自己别看晕了就好,字符串程序的读入有点恶心。
###Bolck code
program P1035;
var a,np,i,num,j,np2:longint; sentter,getter:string;
money:array[1..10] of longint;
names:array[1..10] of string;
function find(x:string):longint;
var i:longint;
begin
for i:=1 to np do
if x=names[i] then
exit(i);
end;begin //main
//assign(input,'shuju.in'); reset(input);readln(np); fillchar(money,sizeof(money),0);
for i:=1 to np do readln(names[i]);for i:=1 to np do
begin
readln(sentter); read(num); readln(np2);
a:=find(sentter);money[a]:=money[a]-num;
if np2<>0 then
money[a]:=money[a]+(num mod np2);for j:=1 to np2 do
begin
readln(getter); a:=find(getter); money[a]:=money[a]+(num div np2);
end;
end;for i:=1 to np do
begin
write(names[i],' '); writeln(money[i]);
end;
//close(input);
end. -
010 年前@
#include<stdio.h>
#include <string.h>struct student
{char name[14];
int h_money;
int s_money;
int g_money;
}a[10];int main()
{
int n,i,j,m,k,r;
int result;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%s",a[i].name);
}
for(i=0;i<n;i++)
{
char temp_name[15]={0};
scanf("%s",temp_name);
for(j=0;j<n;j++)
{
if (strcmp(a[j].name,temp_name)==0)
{
scanf("%d%d",&a[j].h_money,&m);
for(k=0;k<m;k++)
{
char g_money_name[15]={0};
scanf("%s",g_money_name);
for(r=0;r<n;r++)
{
if(strcmp(a[r].name,g_money_name)==0)
{
a[r].g_money=a[r].g_money+a[j].h_money/m;
a[j].s_money=a[j].s_money+a[j].h_money/m;
}
}
}
}
}
}for(i=0;i<n;i++)
{
result=a[i].g_money-a[i].s_money;
printf("%s %d\n",a[i].name,result);
}return 0;
} -
010 年前@
NOIP2014赛前AC留念
var np,i,j,z,tip:longint;
t:string;
s,give:array[1..10] of string;
peo,mon,num:array[1..50] of longint;begin
//assign(input,'gift1.in');
//assign(output,'gift1.out');
//reset(input);
//rewrite(output);
readln(np);
for i:=1 to np do
readln(s[i]);
for i:=1 to np do
begin
readln(t);
for j:=1 to np do
if t=s[j] then
begin
tip:=j;
break;
end;readln(mon[tip],peo[tip]);
if peo[tip]<>0 then
begin
num[tip]:=num[tip]-mon[tip]+(mon[tip] mod peo[tip]);
for j:=1 to peo[tip] do
begin
readln(give[j]);
for z:=1 to np do
if s[z]=give[j] then
begin
num[z]:=num[z]+(mon[tip] div peo[tip]);
break;
end;
end;
end;
end;
for i:=1 to np do
writeln(s[i],' ',num[i]);
//close(input);
//close(output);
end. -
010 年前@
#include<cstdio>
#include<cstring>using namespace std;
struct Person_node
{
char name[15];
int Send_money,Receive_money,Receive_num;
}Person[11];int N;
int search(char *name)
{
for(int i=1;i<=N;i++)
if (strcmp(name,Person[i].name)==0)
return i;
}int main()
{
memset(Person,0,sizeof(Person));
scanf("%d\n",&N);
for(int i=1;i<=N;i++)
scanf("%s\n",Person[i].name);
char name[15];
for(int i=1;i<=N;i++)
{
scanf("%s\n",name);
int id=search(name);
scanf("%d\n%d\n",&Person[id].Send_money,&Person[id].Receive_num);
if (Person[id].Send_money!=0)
Person[id].Send_money-=Person[id].Send_money%Person[id].Receive_num;
for(int j=1;j<=Person[id].Receive_num;j++)
{
scanf("%s\n",name);
Person[search(name)].Receive_money+=Person[id].Send_money/Person[id].Receive_num;
}
}
for(int i=1;i<=N;i++)
printf("%s %d\n",Person[i].name,Person[i].Receive_money-Person[i].Send_money);
return 0;
} -
010 年前@
type rec=record
a:string;
b:longint;
c:longint;
end;
var n,i,j,num,l,give:longint;
s1,s2:string;
s:array[1..10] of rec;
begin
readln(n);
for i:=1 to n do readln(s[i].a);
for l:=1 to n do begin
readln(s1);
give:=0;
for j:=1 to n do begin
if s[j].a=s1 then begin
readln(s[j].b,num);
if num=0 then break;
give:=s[j].b div num;
s[j].b:=give*num;
end;
end;
for i:=1 to num do begin
readln(s2);
for j:=1 to n do begin
if s[j].a=s2 then inc(s[j].c,give);
end;
end;
end;
for i:=1 to n do begin
writeln(s[i].a,' ',s[i].c-s[i].b);
end;
end. -
010 年前@
type
node=record
name:string;
min,mout:integer;
end;
var
p:array[1..10]of node;
n,m,x,i,j,k,t:integer;
name,namem:string;
begin
readln(n);
for i:=1to n do
readln(p[i].name);
for i:=1to n do
begin
readln(namem);
for j:=1to n do if p[j].name=namem then begin
t:=j;
break;
end;
readln(m,x);
for j:=1to x do
begin
readln(name);
for k:=1to n do
if p[k].name=name then begin
inc(p[k].min,m div x);
break;
end;
end;
if x<>0then inc(p[t].mout,m-m mod x);
end;
for i:=1to n do
writeln(p[i].name,' ',p[i].min-p[i].mout);
end.
发代码老是格式错误挤成一堆 所以我只好用打一行空一行这种恶心的办法==题目不难纯模拟但是要细心点……坑了我半天
-
010 年前@
20题!!!
记录信息
评测状态 Accepted
题目 P1035 贪婪的送礼者
递交时间 2014-08-02 16:23:53
代码语言 C++
评测机 VijosEx
消耗时间 15 ms
消耗内存 272 KiB
评测时间 2014-08-02 16:23:58
评测结果
编译成功测试数据 #0: Accepted, time = 0 ms, mem = 272 KiB, score = 10
测试数据 #1: Accepted, time = 0 ms, mem = 272 KiB, score = 10
测试数据 #2: Accepted, time = 15 ms, mem = 272 KiB, score = 10
测试数据 #3: Accepted, time = 0 ms, mem = 268 KiB, score = 10
测试数据 #4: Accepted, time = 0 ms, mem = 268 KiB, score = 10
测试数据 #5: Accepted, time = 0 ms, mem = 272 KiB, score = 10
测试数据 #6: Accepted, time = 0 ms, mem = 272 KiB, score = 10
测试数据 #7: Accepted, time = 0 ms, mem = 272 KiB, score = 10
测试数据 #8: Accepted, time = 0 ms, mem = 268 KiB, score = 10
测试数据 #9: Accepted, time = 0 ms, mem = 268 KiB, score = 10
Accepted, time = 15 ms, mem = 272 KiB, score = 100 -
011 年前@
Vijos 题解:http://hi.baidu.com/umule/item/2c997f8ed9600fdae596e017
有疑问请留言 共同进步 -
011 年前@
Vijos 题解:http://hi.baidu.com/umule/item/2c997f8ed9600fdae596e017
有疑问请留言 共同进步 -
011 年前@
var
nam:array[0..11] of string;
res:array[0..11] of longint;
n,ger,rer,i,j,m,pay:longint;Function num:longint;
begin num:=1; while (nam[num]<>nam[0]) do inc(num);
end;begin
readln(n);
for i:=1 to n do readln(nam[i]);
for i:=1 to n do begin
readln(nam[0]); read(pay); readln(m);
ger:=num; if m=0 then continue;
res[ger]:=res[ger]-pay+pay mod m;
pay:=pay div m;
for j:=1 to m do begin
readln(nam[0]); rer:=num;
res[rer]:=res[rer]+pay;
end;
end;
for i:=1 to n do writeln(nam[i],' ',res[i]);
end.