A:
题意:
给你两个数k,d,k表示有多少位数, d表示不断的对一个数的个数为求和,最后的得到的0-9的数
思路:
if (k == 1) 直接输出d,
if (k != 1) if (d == 0) 非法 else 输入d *10^(k - 1)
int main(){ int k,d; scanf("%d%d",&k,&d); if (k == 1) printf("%d\n",d); else { if (d == 0) printf("No solution\n"); else { string ans = "1"; for (int i = 1; i < k - 1; ++i) ans += "0"; ans += (d - 1) + '0'; cout << ans << endl; } } return 0;}
B:
题意:
有两种交通工具非别为n个bus,m个trolleys 。我们有四种票可以选择c1,c2,c3,c4分别描述如下
-
A ticket for one ride on some bus or trolley. It costs c1 burles;
-
A ticket for an unlimited number of rides on some bus or on some trolley. It costs c2 burles;
-
A ticket for an unlimited number of rides on all buses or all trolleys. It costs c3 burles;
-
A ticket for an unlimited number of rides on all buses and trolleys. It costs c4 burles.
给出每种交通工具使用的次数a[] 表示对应的bus使用的次数, b[]表示trolleys 使用的次数,问如何选票是的最后费用最少。
思路:
首先一个c4和2个c3是确定的,然后我们再看有一个c3的话,然后对另一中交通工具进行c1和c2的选择,然后我们计算a[i](/b[i])用c1省还是用c2省就可以了。 如果只有c1,c2的话同样计算。
#include#include #include #include #include #include #include #include #include #include #include #include #include
C:
题意:
给你n个数a[],我们可以从左边取,也可以从右边取数。从左边取一个数的的代价为a[i]*L,如果连续从左边取得花,每次还要加上一个QL, 从右边取同左边取得操作一样 R,QR。问如何去才能取得最小值?
思路:
不论如何取,总会有一个结束的点我们枚举结束的点,然后计算左边取了多少个,右边取了多少个,然后哪边多,哪边就加上多出那部分*Qx, x{L,R}即可
#include#include #include #include #include #include #include #include #include #include #include #include #include
D:
题意:
给你一个n*n的只含有英文小写字母的矩阵,然后我们从s[0][0]出发到目的地s[n - 1][n - 1]规定只能向下,向右走。每条路径对应了一个字符串,如果该字符串含有a的数量大于b的数量,1赢,anum == bnum 平局, anum < bnum 2赢。 他们轮流选择下一步该走哪一个。问最后谁赢?
思路:
首先1如果选择的话,肯定是选择a比较多的路线; 2如果选择的话肯定的a少b多的路线。 然后dp一下就好了。
By E_star, contest: Codeforces Round #206 (Div. 2), problem: (D) Game with Strings, Accepted, # //#pragma comment(linker, "/STACK:1024000000,1024000000")#include#include #include #include #include #include #include #include #include #include #include #include #include
E:
#include#include #include #include #include #include #include #include #include #include #include #include #include